OO
OO bezeichnet nicht die Toilette sondern stellt die Abkürzung für object oriented (objekt-orientiert) dar. Dieses "OO" ist enthalten in OOA (objekt-orientierte Analyse), OOD (oo-Design) und OOP (oo-Programmierung).

Objekt
ist ein reales Ding, was per Software zu modellieren ist - oder das Softwaremodell zu diesem Ding.
In der Fachsprache wird Objekt sowohl für einen Objekttyp (Klasse) als auch für eine Variable dieses Typs (Instanz) verwendet. Erst im Zusammenhang wird deutlich, was von beiden gemeint ist.
Vor der Implementation - in der Analyse- oder Entwurfsphase - ist diese Unterscheidung auch überflüssig.

Beispiel Spannungsteiler:
Finden Sie in einem Schaltplan die symbolische Darstellung eines Spannungsteilers (beispielsweise 2 Widerstände in Reihe) so nennen Sie dieses Teil einen Spannungsteiler (Objekt). Falls Sie jemandem einen Spannungsteiler erklären sollen, werden Sie womöglich den Schaltplan eines Spannungsteilers aufzeichnen (abstrakt, Bauplan) ...
Um die Wirkungsweise eines Potentiometers zu beschreiben, könnten Sie dieses Ding als Spannungsteiler bezeichnen (reell, verwendbar).

Klasse
ist eine zusammengesetzte Typbeschreibung für ein Objekt, einem C-Struct ähnlich. Eine Klasse ist ein "Bauplan für ein Objekt". Der Bauplan für ein Fahrrad ist kein Fahrrad, man kann aber nach diesem Plan ein Fahrrad bauen.

Eine Klasse ist keine Variable, ein Computer kann aber nach dieser Klasse eine Variable anlegen. Wenn Sie eine Klasse zusammenstellen, wird während des Programmablaufs auf Grund der Klassenbeschreibung kein Arbeitsspeicher reserviert. Eine solche Speicherreservierung tritt erst ein, wenn eine Instanz (Variable) dieser Klasse angelegt wird.

z.B. Spannungsteiler:
Der Schaltplan eines Spannungsteilers ist für einen Elektrotechniker ein Bauplan (Klasse). Ein solcher Schaltplan ist aber kein Spannungsteiler (keine Instanz). Es macht keinen Sinn, an die Symbole der Eingangsklemmen eine elektrische Spannung zu legen in der Erwartung, zwischen den Symbolen der Ausgangsklemmen eine elektrische Ausgangsspannung zu erhalten. Erst wenn nach dem Schaltplan ein Spannungsteiler (Instanz) gebaut wurde, kann man damit eine Spannung herunterteilen.

Beispiel:
class Beispieltyp
{
 // Beschreibungen der Klassenelemente
};

Instanz oder besser Exemplar
ist eine Variable, zumeist im Zusammenhang mit Objekten verwendet.
Das Instanziieren entspricht dem Bau eines Gegenstandes nach einer Baubeschreibung (Plan). Dabei wird für die Instanz Arbeitsspeicher benötigt.

Eine wohl bessere Ünersetzung des Wortes instance ist Exemplar. Wenn eine "Instanz instanziiert" (eigentlich grässlich) wird ein Exemplar erzeugt.

z.B. Spannungsteiler:
Ein Potentiometer ist ein konkreter (verwendbarer) Spannungsteiler (Instanz, Exemplar). In einem elektrischen Gerät wird dafür Platz benötigt - für den Schaltplan nicht.

Beispiel:
Beispieltyp Beispiel; // Beispiel ist eine Instanz (Exemplar) von Beispieltyp

Elementvariable
Jedes Objekt besitzt Eigenschaften. Eine solche Eigenschaft kann sich mitunter verändern. In einem Computer wird eine Eigenschaft durch einen Wert beschrieben (eigentlich quantifiziert). Die Eigenschaft selbst witd durch eine Variable repräsentiert. Eine Eigenschaft (property) eines Objektes wird durch eine Variable repräsentiert, die dem Objekt eigen ist - zu diesem gehört. Eine solche Variable ist eine Elementvariable des besitzenden Objektes.

Beispiel Haarfarbe:
Die Haarfarbe eines Menschen ist eine Eigenschaft, welche dieser Menschen besitzt. "Blond" ist ein Wert der Haarfarbe. Dieser kann noch feiner quantifiziert werden mit "hellblond" oder "dunkelblond". Ein entsprechendes Objekt würde also eine Elementvariable (Eigenschaft) Haarfarbe besitzen.

Beispiel:
class Mensch
{ ...
 Haarfarbentyp Haarfarbe;
};

Elementfunktion
Ein Objekt ist anders als eine herkömmliche Variable auch aktiv, es verhält sich. Außerdem muss ein Objekt Schnittstellen aufweisen, durch die mit dem Objekt kommuniziert werden kann.

Wenn Sie Fahrrad fahren, kommunizieren Sie mit dem Fahrrad über den Lenker, die Bremshebel, die Gangschaltungshebel, die Pedale ...
Diese Teile stellen die Kommunikationsschnittstellen des Fahrrades dar.

Solche Kommunikationsschnittstellen werden mit Hilfe von zum Objekt gehörenden Funktionen implementiert, welche Elementfunktionen (member functions) oder auch Methoden genannt werden.

Beispiel:
class Fahrrad
{...
 // Kommunikationsschnittstellen
 void bremsen(double Staerke);
 void schalten(unsigned int Gang);
};

Konstruktor
Wenn ein Objekt instanziiert wird, wird es zusammengestellt, also konstruiert. Zu diesem Zweck wird eine spezielle Elementfunktion aufgerufen, die dieses Konstruieren unterstützt. Eine solche spezielle Funktion ist ein Konstruktor. Ein Konstruktor ist zumindest dafür verantwortlich, dass die Eigenschaften (Elementvariablen) einer Instanz mit geeigneten Anfangswerten initialisiert werden.

Immer wenn ein Objekt instanziiert wird, wird ein entsprechender Konstruktor aufgerufen. Konstruktoren können wie übliche Funktionen überladen werden (unterschiedliche Signaturen!). Beim Anlegen einer Instanz wird der passende Konstruktor aufgerufen.

Ein Konstruktor kann nicht wie übliche Funktionen explizit aufgerufen werden. Deshalb besitzt ein Konstruktor in C++ keine Typangabe für einen Rückgabewert, nicht einmal void. Desweiteren ist er daran erkennbar, dass er genauso heißt wie seine Klasse.

Beispiel:
class Fahrrad
{
 // Ein Konstruktor, der zur Initialisierung drei Werte importiert
 Fahrrad(double Raddurchmesser, unsigned int Gaenge, double Gewicht);
 ...
};

Destruktor
Ein Destruktor ist das Gegenstück zu einem Konstruktor. Er wird aufgerufen, wenn eine Instanz entfernt bzw. zerstört (destruiert) wird. Ein Destruktor kann wie ein Konstruktor nicht explizit aufgerufen werden. Auch ein Destruktor besitzt in C++ keine Typangabe für einen Rückgabewert, nicht einmal void. Er importiert keinen Parameter, d.h. seine Parameterliste ist leer. Deshalb gibt es immer nur einen Destruktor. Er heißt immer wie seine Klasse, allerdings mit einer vorangestellten Tilde.
Beispiel:
class Fahrrad
{...
 ~Fahrrad(); // Der Destruktor
};


Kurze Zusammenfassung