![]() |
![]() |
C++ - Objekte verwenden (2) |
Druckversion | G.Eichelsdörfer - Staatliche Technikerschule Weilburg |
Nun sollen Sie kennen lernen, wie ein Objekt verwendet werden kann. Dazu muss ein solches Objekt angelegt werden. Zusätzlich brauchen Sie eine Möglichkeit mit dem angelegten Objekt programmiertechnisch zu kommunizieren.
Da es unterschiedliche Arten von Objekten gibt, ist es erforderlich beim Anlegen den gewünschten
Objekttyp anzugeben. Dies geschieht fast genauso wie das Anlegen einfacher Datentypen wie
int, char, double, ...
. Die Typen für Objekte nennen wir Klassen.
Beispiel:
std::string str;
str ist vom Typ std::string
oder treffender von der Klasse std::string
.
Darin ist std
der Namensraum (von Standardbibliothek).
Wenn ein Objekt angelegt wird, wird es auch konstruiert - to construct hat im Englischen eher die Bedeutung von bauen, herstellen. Ein Objekt wird beim Anlegen also gebaut. Dabei wird immer eine spezielle Routine (Unterprogramm) aufgerufen, die Konstruktor (Constructor) heißt - abgekürzt C'tor, zumeist in Newsgroups zu lesen. Man nennt diese Routine nicht Funktion, weil sie nicht explizit aufgerufen werden kann. Ein Konstruktor wird genau dann abgearbeitet, wenn ein Objekt angelegt wird. Es gibt auch das Gegenstück, welches das Objekt abbaut - den Destruktor (Destructor).
Eine Klasse bietet zum Anlegen eines Objektes häufig mehrere verschiedene Konstruktoren
oder einen Konstruktor mit optionalen Parametern.
In solchen Fällen können wir wählen, wie das von uns angelegte Objekt gebaut werden soll.
Beispiel:
std::string str("Initialisierungstext");
Bei diesem Anlegen von str
wird das Objekt mit einem Text (Stringkonstante) gefüllt.
Dieser Text wird einem Konstruktor der Klasse std::string
als Parameter übergeben.
Der Konstruktor sorgt dafür, dass der Text in den von str
verwalteten Speicherbereich
kopiert wird. Ein Konstruktor kann, genauso wie eine Funktion, auch mehrere Parameter verarbeiten.
Wenn wir ein Objekt anlegen, sollten wir also zumindest einen Konstruktor der Klasse kennen.
Wie Sie auf der letzten Seite gesehen haben, gehören Kommunikationsschnittstellen zum jeweiligen Objekt. Auch wenn Sie an dieser Stelle ausschließlich fertige Klassen verwenden, ist es hilfreich die prinzipielle Struktur einer Klasse kennen zu lernen.
Im Rahmen des Programmierens (hier: Design) sind reale Objekte zu modellieren. Dabei werden Eigenschaften (Attribute) des Objektes in einfache oder zusammengesetzte Daten überführt. Die Verhaltensweisen des Objektes werden mit Hilfe von Funktionen nachgebildet. Ein programmiertechnisch modelliertes Objekt (Klasse) besteht also aus Daten und Funktionen. Hinzu kommen noch die Konstruktoren zum Aufbauen und ein Destruktor zum Abbauen des Objektes. Die zu einem Objekt gehörenden Funktionen nennt man member-functions oder Methoden.
Die für Sie wichtigen Funktionen einer Klasse bzw.eines Objektes sind diejenigen, durch die
Sie mit einem Objekt kommunizieren können. Diese Methoden sind die Kommunikationsschnittstellen
des Objektes.
Beispiel:
Sie können ein std::string-Objekt fragen, wie groß es gerade ist, d.h. wie viele
Zeichen es enthält. Dazu bietet die std::string-Klasse eine Methode size
.
Die Aufruf-Syntax verwendet die Punktnotation, mit welcher die verwendeten Dinge verbunden werden.
Wir rufen die Methode size wie folgt auf:
std::string str("irgendwas");
cout << str << " beinhaltet " << str.size() <<" Zeichen.";
In diesem Auruf ist str
das string-Objekt zu welchem die Methode size()
gehört. str.size()
liefert somit die Größe des in str
abgelegten Textes.
Solche Kommunikationsschnittstellen sind immer öffentlich (public), weil man sie von außerhalb des Objektes aufrufen kann. Daneben gibt es auch nichtöffentliche (private) Methoden, die ausschließlich innerhalb des Objektes verwendbar sind. private-Methoden brauchen Sie nur, wenn Sie selbst Klassen erstellen wollen.