home | ### Begriffe aus dem Unterricht
| Hier einige Begriffe, die manchmal ein wenig unklar sein können, die aber zum Teil häufig verwendet werden. Ich erkläre die Begriffe aber nur im Zusammhang mit dem C++-Unterricht. Die genauen Definitionen findet ihr sonst bestimmt in einem Wörterbuch.
### Implizite (Typumwandung)
| Obwohl man eigentlich Datentypen nicht mischen sollte, kann es manchmal nicht vermieden werden, dass wir einem Ganzzahligen Datentypen eine Fliesskommazahl zuweisen wollen.
    float Temperatur = 22.4;
    int   GradUeberNull = Temperatur;
| Der Compiler nimmt hier stillschweigend eine Umwandlang des Datentypen vor - eine implizite Typumwandlung. Sie tritt auch bei gewissen Berechnungen auf :
    int AbsoluteGrad = GradUeberNull + 273.5;
| Die konstante 273.5 wird vom Compiler als double behandelt. Damit die Addition durchgeführt werden kann, wird die ganzzahlige Variable GradUeberNull implizit in einen double umgewandelt. Das Ergebnis der Addition muss für die Zuweisung an die Ganzzahlige Variable 'AbsoluteGrad' wieder umgewandelt werden. Das geschieht wieder durch eine implizite Typumwandlung. Manchmal ist es sogar nötig den Datentypen bewusst (explizit) zu ändern. Für explizite Typumwandlung verwenden wir sogenannte Typecasts.
### Explizite (Typumwandlung)
| Gewisse Typumwandlungen, kann der Compiler nicht automatisch erzeugen. Andererseits wollen wir zum Teil dem Compiler gewisse Umwandlungen aufzwingen, damit Berechnungen richtig durchgeführt werden.
    int AnzahlAepfel = 20;
    int AnzahlPersonen = 40;
    double AnteilAepfelProPerson = AnzahlAepfel / AnzahlPersonen;
| Das richtige Ergebnis wäre 0.5, aber so wie der Code dasteht wird AnteilAepfelProPerson den Wert 0.0 haben. Da beide Variablen, die bei der Division verwendet werden ganzzahlig sind, wird eine Ganzzahldivision durchgeführt. Diese kann nur Ganzzahlergebnisse erzeugen. Dass dieses Ergebnis für die Zuweisung danach noch implizit in einen double umgewandelt wird nützt nichts mehr. Hier hilft eine explizite Typumwandlung.
    int AnzahlAepfel = 20;
    int AnzahlPersonen = 40;
    double AnteilAepfelProPerson = (double)AnzahlAepfel / (double)AnzahlPersonen;
### Klasse
| Eine Klasse ist eine Beschreibung. Es beschreibt wie Objekte aussehen, aus wievielen Datenelementen diese bestehen und durch die Elementfunktionen (=Methoden) was ein solches Objekt für ein Verhalten hat. Es eine Schablone oder eine Vorlage für Objekte, die aber erst erzeugt werden müssen. Wir haben Klassen am 11.Abend kennengelernt.
### Objekt
| Ein Objekt ist sozusagen ein Lebewesen im C++-Universum. Ein Objekt ist von einer bestimmten Klasse. Es hat eine Lebensdauer und eine Identität. Das heisst ein Objekt wird erzeugt wenn eine Variable von einer bestimmten Klasse erzeugt wird. Dabei wird der Konstruktor aufgerufen. Das Objekt wird abgebaut, wenn die Variable ungültig wird. Dabei wird der Destruktor aufgerufen. Das Objekt befindet sich an einem bestimmten Ort im Speicher und es hat Datenelemente. Ein anderes Objekt von der gleichen Klasse befindet sich an einem anderem Ort im Speicher und die Datenelemente der Objekte können unterschiedlich sein.
### Instanz
| Ich verwende den Begriff Instanz meistens gleichbedeutend wie den Begriff Objekt. Eine Instanz kann aber auch einfach eine Variable von einem einfachen Datentypen sein:
    #include <string>
    using namespace std;

    string einString;
    // ein Objekt von der Klasse string
    // oder eine Instanz der Klasse string

    long einLong;
    // eine Instanz von Datentypen long
| Übrigens ist eine Klasse auch ein Datentyp, zwar kein eingebauter Datentyp wie long oder bool, aber trotzdem ist die Bezeichnung Datentyp korrekt.
### Konstruktor
| Der Konstruktor ist die Elementfunktion oder Methode, die aufgerufen wird, wenn ein Objekt von einer Klasse erzeugt wird. Es gibt verschiedene Konstruktoren : Den default-Konstruktor, den Konstruktor mit Parametern oder der Kopierkonstruktor.
### Destruktor
| Der Destruktor ist die Elementfunktion(=Methode), die aufgerufen wird wenn ein Objekt abgebaut wird. Er wird verwendet um irgendwelche Dinge aufzuräumen, wie Dateien schliessen oder Speicher freigeben.
### Methoden= Elementfunktionen
| Methoden sind Funktionen einer Klasse. Sie beschreiben das Verhalten von einem Objekt und werden über den Punktoperator oder Pfeiloperator für ein bestehendes Objekt aufgerufen :
    string einString("Markus");

    long NamenLaenge = einString.size();
    // Elementfunktion aufrufen
### Datenelemente
| Datenelemente sind Variablen, die zu einem Objekt gehören und sind in der Klassendefinition untergebracht. Es sind die Attribute eines Objektes, mit denen sich ein Objekt von einem anderen Objekt unterscheidet.