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).
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 }; |
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 |
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;
};
|
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); }; |
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); ... }; |
Beispiel: |
class Fahrrad {... ~Fahrrad(); // Der Destruktor }; |