C++ - Einführung in die Programmiersprache Objektorientierte Programmierung hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen
Modulare Programmierung Projekt main.cpp int main(){ // Anweisungen } rechnen.cpp int addition(...) { } int subtraktion(...) { } rechnen.h int addition(...); int subtraktion(...); Einführung in die C++-Programmierung, 03.03.10 Seite 2
Erläuterung Jede Aufgabe wird in Teilaufgaben zerlegt. Eine Funktion stellt eine Teilaufgabe dar. Verschiedene Funktionen, die verschiedene Aufgaben innerhalb eines Projekts bewältigen, werden in einer Quelldatei zusammengefasst. Header-Dateien enthalten die Deklarationen und Definitionen. Quelldateien und Header-Dateien werden in einem Projekt gesammelt. Das Projekt bildet die Gesamtaufgabe ab. Einführung in die C++-Programmierung, 03.03.10 Seite 3
Objektorientierte Programmierung... abstrahiert Gegenstände der realen Welt, um sie in einem Programm abzubilden.... versucht Daten, die ein Objekt beschreiben und Prozeduren, die die Daten verändern, in einer Struktur zusammenzufassen.... versucht Daten und Funktionen, die die Daten verändern, in einer Struktur zu kapseln. Einführung in die C++-Programmierung, 03.03.10 Seite 4
Prinzipien Datenkapselung Die Daten gehören zu einem bestimmten Objekt. Ein fremdes Objekt kann diese Daten nicht lesen. Die Definition von Funktionen wird verborgen. Polymorphie Methoden (Funktionen) können überschrieben werden. Vererbung Kinder erben von ihren Eltern Eigenschaften und Methoden. Einführung in die C++-Programmierung, 03.03.10 Seite 5
Objekte beschreiben einen Gegenstand, Person etc. aus der realen Welt. sind Substantive in einem Text. haben Attribute (Eigenschaften), die das Aussehen des Objekts beschreiben. haben Methoden, die die Attribute verändern. Methoden spiegeln das Verhalten eines Objekts wieder. Einführung in die C++-Programmierung, 03.03.10 Seite 6
Beispiel Ein Würfel wird beschrieben: Der Würfel ist rot. Der Würfel hat eine Kantenlänge von 5 cm. Der Würfel kann gedreht werden. Der Würfel kann neu eingefärbt werden. Einführung in die C++-Programmierung, 03.03.10 Seite 7
Klassen sind Baupläne zur Beschreibung eines Objekts. abstrahieren das Aussehen und Verhalten eines bestimmten Objekttyps. bieten eine Schablone, um Objekte abstrakt zu beschreiben. definieren Eigenschaften (Attribute) und Methoden die alle Objekte eines bestimmten Typs besitzen. Einführung in die C++-Programmierung, 03.03.10 Seite 8
Beispiel Welche Eigenschaften hat jeder Würfel? Farbe. Kantenlänge Welche Methoden hat jeder Würfel? Drehen. Einfärben. Zeichnen. Einführung in die C++-Programmierung, 03.03.10 Seite 9
Beschreibung mit Hilfe von UML Unified Modelling Language zur Darstellung von Klassen etc. Der Name der Klasse steht am oberen Rand. Dem Namen folgen die Attribute der Klasse. Auf die Attribute kann von außen nicht zu gegriffen werden (-; private ). Am Ende werden die Methoden aufgelistet. Die Methoden dürfen von außen aufgerufen werden (+; public). Wuerfel - farbe : string - kante: double +get_farbe() : string +get_laenge() : float +set_farbe() : string +set_laenge(): float +drehen_wuerfel() : void Einführung in die C++-Programmierung, 03.03.10 Seite 10
Klassen in C++ class KUNDE { private: string kontonummer; string pinummer; float guthaben; int dispo; public: string getadress(); void setadress(string strasse, string plz, string ort); float hebeab(float betrag); float zahleein(float betrag); float changedispo(float betrag); }; Einführung in die C++-Programmierung, 03.03.10 Seite 11
Deklaration einer Klasse class KUNDE { private: // Attribute public: // Methoden }; beginnt mit dem Schlüsselwort class. Dem Schlüsselwort folgt der Name der Klasse. Attribute und Methoden werden mit Hilfe der geschweiften Klammern zu einer Struktur zusammengefasst. endet mit einem Semikolon. wird nie innerhalb der main-funktion definiert. Häufig werden sie in Header-Dateien ausgelagert. Einführung in die C++-Programmierung, 03.03.10 Seite 12
Regeln für Klassennamen Es können die Buchstaben a...z, A...Z, die Zahlen 0...9 sowie der Unterstrich genutzt werden. Klassennamen beginnen mit einem Großbuchstaben. Häufig haben Klassennamen das Präfix C, um sie von anderen Elementen in C++ zu unterscheiden. Unterscheidung zwischen Groß- und Kleinschreibung. Einführung in die C++-Programmierung, 03.03.10 Seite 13
Weitere Hinweise Nutzen Sie aussagekräftige Namen. Der Oberbegriff aus der realen Welt sollte auch für die dazugehörige Klasse in C++ genutzt werden. Jedes Teilwort eines Klassennamen beginnt mit mit einem Großbuchstaben. Es wird ein Sprachraum genutzt. Schlüsselwörter der Programmiersprache C++ dürfen nicht genutzt werden. Einführung in die C++-Programmierung, 03.03.10 Seite 14
in einer Projektbeschreibung Klassen entsprechen Substantiven in einer Projektbeschreibung. Das Konto wird für den Inhaber xyz von der Bank a eröffnet. Das Auto HI hat den Besitzer xyz. Mitarbeiter Müller arbeitet an dem Projekt Ausschreibung. Die Bestellung wird über einen Laserdrucker xyz ausgedruckt. Außendienstmitarbeiter Meier betreut Kunden im Bezirk Unterweser. Redundante oder für die Aufgabenstellung unnötige Klassen werden nicht implementiert. Einführung in die C++-Programmierung, 03.03.10 Seite 15
Attribute (Member) beschreiben einen Gegenstand, Person, Funktion etc. Jedes Objekt einer Klasse hat die gleichen Attribute. Jedes Objekt einer Klasse unterscheidet sich aber in mindestens einem Attributwert von allen anderen Objekten. werden für jedes Objekt im Speicher angelegt. Anschließend werden die Attribute mit bestimmten Werten initialisiert. Einführung in die C++-Programmierung, 03.03.10 Seite 16
implementieren class KUNDE{ private: string kontonummer; string pinummer; float guthaben; int dispo; }; sind Variablen in C++, gekapselt in einer Klasse. Der Datentyp bestimmt die Art des Attributs. Es kann jeder Datentyp aus C++ genutzt werden. Jede Deklaration endet mit einem Semikolon. Einführung in die C++-Programmierung, 03.03.10 Seite 17
in der Projektbeschreibung Attribute entsprechen meist der Beschreibungen eines Objekts. Das Auto ist rot und hat einen KM-Stand von 130.000. Die Milch ist pasteurisiert. Sobald ein Buch im Lager vorhanden ist, wird es an den Kunden ausgeliefert. Attribute sind Substantive, die einen Rückbezug auf ein anderes Substantiv besitzen. Die Menge des Artikels. Ausleihdatum des Buches. Anmeldung eines Autos. Einführung in die C++-Programmierung, 03.03.10 Seite 18
Statische Attribute class _CGirokonto{ private: static float zinssatz; }; float _CGirokonto::zinssatz = 2.0; werden nur einmal für alle Objekte einer Klasse im Speicher abgelegt. werden in der Klasse deklariert (static float zinssatz;). werden außerhalb der Klasse definiert und initialisiert (float _CGirokonto::zinssatz = 2.0). Einführung in die C++-Programmierung, 03.03.10 Seite 19
Methoden beschreiben das Verhalten eines Objekts. lesen oder verändern Attributwerte. beschreiben eine Schnittstelle nach außen. werden nur einmal für die Klasse im Speicher angelegt. Einführung in die C++-Programmierung, 03.03.10 Seite 20
deklarieren und definieren Methoden werden immer in einer Klasse deklariert. Methoden können in der Klasse definiert werden. außerhalb der Klasse definiert werden. Einführung in die C++-Programmierung, 03.03.10 Seite 21
Prototyp einer Methode Datentyp Methodenname(para01, para02,...); class KUNDE{ // Attribute public: string getadress(); void setadress(string strasse, string plz, string ort); float hebeab(float betrag); float zahleein(float betrag); float changedispo(float betrag); }; sind C++ Funktionsprototypen, gekapselt in einer Klasse. Jede Deklaration wird mit einem Semikolon beendet. Einführung in die C++-Programmierung, 03.03.10 Seite 22
in der Projektbeschreibung Methoden sind meist Verben. Das Bankkonto wird eröffnet. Der Inhaber hebt eine bestimmte Summe von seinem Konto ab. Beschreibung einer Zustandsänderung / Änderung: Wenn die Ampel gelb ist, wird die Geschwindigkeit des Autos vermindert. Wenn die Helligkeit draußen einen bestimmten Prozentwert unterschreitet, wird die Straßenlaterne eingeschaltet. Eine Zugdurchfahrt wird gemeldet. Die Schranke wird geschlossen. Einführung in die C++-Programmierung, 03.03.10 Seite 23
Deklaration und Definition in der Klasse class KUNDE{ // Methoden public: string getadress() { stringstream tmpadresse; tmpadresse << kundename << ", " << kundevorname << endl; tmpadresse << kundestrasse << endl; tmpadresse << kundeplz << " " << kundeort<< endl; return tmpadresse.str(); } }; Einführung in die C++-Programmierung, 03.03.10 Seite 24
Hinweise Die gleichzeitige Deklaration und Definition einer Methode muss nicht mit einem Semikolon abgeschlossen werden. Eine Definition der Methode innerhalb der Klasse sollte nur für sehr kleine Funktionen genutzt werden. lesenden Zugriffe verwendet werden. Es wird auf die Werte der Attribute zugegriffen, aber die Werte werden nicht verändert. Einführung in die C++-Programmierung, 03.03.10 Seite 25
Definition außerhalb der Klasse, aber in einer Datei class KUNDE{ // Attribute public: void setadress(string strasse, string plz, string ort); }; void KUNDE::setAdress(string strasse, string plz, string ort) { kundestrasse = strasse; kundeplz = plz; kundeort = ort; } Einführung in die C++-Programmierung, 03.03.10 Seite 26
Aufbau des Methodenkopfs void KUNDE::setAdress(string strasse, string plz, string ort) void definiert den Funktionstyp. Welchen Datentyp gibt die Methode zurück? KUNDE beschreibt die Klasse, in der die Methode deklariert ist. Die Klasse und der Methodennamen sind durch zwei Doppelpunkte getrennt. Zwischen den zwei Doppelpunkten darf kein Leerzeichen stehen. Dem Methodennamen folgt die Parameterliste. In der Parameterliste werden die Eingabeparameter für die Methode, getrennt durch Kommata, aufgelistet. Einführung in die C++-Programmierung, 03.03.10 Seite 27
Bereichsoperator (Soope-Operator) besteht aus zwei nacheinander folgenden Doppelpunkten. Links vom Bereichsoperator steht die Klasse, in der die Methode deklariert wurde. Rechts vom Bereichsoperator steht die zu definierte Methode. Einführung in die C++-Programmierung, 03.03.10 Seite 28
Klassen in der Praxis kunde.h class KUNDE { private: // Attribute public: void setadress(...); }; kunde.cpp class KUNDE { private: // Attribute public: void setadress(...); }; Die Schnittstelle wird von der Implementierung getrennt. Die Schnittstelle in der Header-Datei sollte nicht verändert werden. Vorteil: Änderungen im Methodenrumpf benötigen keine Neu- Kompilierung der Header-Datei. Einführung in die C++-Programmierung, 03.03.10 Seite 29
Beispiel: Header-Dateien class KUNDE { private: string kundename; string kundevorname; string kundestrasse; string kundeplz; string kundeort; string pinnummer; }; public: void setadress(string strasse, string plz, string ort); void setpinnummer(string pin); Einführung in die C++-Programmierung, 03.03.10 Seite 30
Beispiel: Methoden-Definition in einer Quelldatei #include "objektkunde.h" void KUNDE::setPinnummer(string pin){ pinnummer = pin; } void KUNDE::setAdress(string strasse, string plz, string ort){ kundestrasse = strasse; kundeplz = plz; kundeort = ort; } Einführung in die C++-Programmierung, 03.03.10 Seite 31
Zugriff festlegen private: oder public:. Mit Hilfe des Schlüsselwortes private oder public wird die Zugriffsart festgelegt: Dem Schlüsselwort folgt immer ein Doppelpunkt. Das Zugriffsrecht gilt für alle nachfolgenden Zeilen. Einführung in die C++-Programmierung, 03.03.10 Seite 32
Zugriffsrecht private Das Element ist in der Klasse / in dem Block gekapselt. Zugriff nur innerhalb der eigenen Klasse. Ein Zugriff von außen ist nicht möglich. Die Elemente der Klasse sind schreibgeschützt. wird für Attribute einer Klasse genutzt. Die Werte der Attribute können nicht außen unkontrolliert verändert werden. In einer Klasse sind alle Elemente standardmäßig privat. Einführung in die C++-Programmierung, 03.03.10 Seite 33
Zugriffsrecht public Die Elemente sind öffentlich. Auf die Elemente kann von außen zu gegriffen werden. Methoden sind öffentlich zugänglich. Die Methoden einer Klasse können von außen aufgerufen werden. beschreibt eine Schnittstelle nach außen. Einführung in die C++-Programmierung, 03.03.10 Seite 34
Konstante Methoden class KUNDE { Private: // Attribute }; public: string getadress() const; // Methoden string KUNDE::getAdress() const { stringstream tmpadresse; // Anweisungen return tmpadresse.str(); } Einführung in die C++-Programmierung, 03.03.10 Seite 35
Hinweise In der Deklaration sowohl als auch in der Definition muss am Ende des Methodenkopf das Schlüsselwort const angegeben werden. Konstante Methoden lesen Attribute, verändern diese aber nicht. Eine konstante Methode kann im Methodenrumpf nur eine weitere konstante Methode aufrufen. Konstante Objekte können nur konstante Methoden aufrufen. Einführung in die C++-Programmierung, 03.03.10 Seite 36
Objektvariable KUNDE mykunde; class KUNDE mykunde;... definiert eine Variable der entsprechenden Klasse. verweist auf die Speicheradresse, an der das Objekt abgelegt ist.... nutzt als Datentyp den Namen einer Klasse. Der Name der Objektvariablen ist frei wählbar. Das Schlüsselwort class wird bei einem eindeutigen Klassennamen nicht benötigt. Einführung in die C++-Programmierung, 03.03.10 Seite 37
Methoden aufrufen mykunde.setadress("straße", "38640", "Goslar"); cout << mykunde.getadress() << endl; mykunde.setpinnummer("1234"); Methoden werden mit ihren Namen aufgerufen. Die Parameterliste kann leer sein oder die zu übergebenen Parameter auflisten. Die Objektvariable wird mit der Methode durch den Punkt verbunden. Die Objektvariable ist ein Synonym für die Klasse, in der die Methode deklariert ist. Einführung in die C++-Programmierung, 03.03.10 Seite 38
Lebenszyklus eines Objekts erzeugen: Aufruf eines Konstruktors KUNDE mykunde; arbeiten: Methoden aufrufen mykunde.setpinnummer("1234"); zerstören: Destruktor automatisch aufrufen Einführung in die C++-Programmierung, 03.03.10 Seite 39
Konstruktoren class KUNDE { private: // Attribute public: KUNDE(string nachname, string vorname) { kundename = nachname; kundevorname = vorname; } sind spezielle Methoden zur Initialisierung eines Objekts. setzen Anfangswerte für ein Objekt. Einführung in die C++-Programmierung, 03.03.10 Seite 40
Kopf eines Konstruktors KUNDE(string nachname, string vorname) Als Bezeichnung wird der Name der Klasse genutzt. Die folgende Parameterliste kann leer sein. Es werden keine Startwerte für die Attribute gesetzt. kann die gewünschten Eingabeparameter enthalten. Diese Parameter werden genutzt, Startwerte für die Attribute zu setzen. Einführung in die C++-Programmierung, 03.03.10 Seite 41
Eigenschaften Konstruktoren dürfen kein Objekt der eigenen Klasse anlegen. Konstruktoren haben immer das Zugriffsrecht public. Konstruktoren werden automatisch durch die Deklaration einer Objektvariablen aufgerufen. Konstruktoren setzen keine statischen Attribute. Durch die Erzeugung würde das statische Attribut auf den Anfangswert gesetzt werden. Es wird kein Wert zurückgegeben. Der Zustand des Objektes kann nur über die entsprechenden Methoden ermittelt werden. Konstruktoren können nie konstant sein. Konstruktoren können überladen werden. Einführung in die C++-Programmierung, 03.03.10 Seite 42
implementieren werden wie Methoden in der Klasse gleichzeitig deklariert und definiert. Andere Möglichkeit: Die Deklaration des Konstruktors befindet sich innerhalb der Klasse. Die Definition des Konstruktors befindet sich außerhalb der Klasse. Einführung in die C++-Programmierung, 03.03.10 Seite 43
in der Klasse deklarieren und definieren class KUNDE { private: // Attribute public: KUNDE(string nachname, string vorname) { kundename = nachname; kundevorname = vorname; } Einführung in die C++-Programmierung, 03.03.10 Seite 44
außerhalb der Klasse implementieren class KUNDE { private: // Attribute public: KUNDE(string nachname, string vorname); }; KUNDE::KUNDE(string nachname, string vorname) { kundename = nachname; kundevorname = vorname; } Einführung in die C++-Programmierung, 03.03.10 Seite 45
Überladene Konstruktoren deklarieren class KUNDE { private: // Attribute public: // Der Standard-Konstruktor hat nie Eingabeparameter KUNDE(); // Weitere Konstruktoren KUNDE(string nachname, string vorname); KUNDE(string nachname, string vorname, string kontonummer); }; // Methoden Einführung in die C++-Programmierung, 03.03.10 Seite 46
Standard-Konstruktoren werden keine Parameter übergeben. muss immer ohne Klammern aufgerufen werden. werden vom System automatisch erzeugt. Die Attribute erhalten unbestimmte Werte. wird selbst definiert. Die Attribute werden mit Hilfe von Standardwerten initialisiert. Einführung in die C++-Programmierung, 03.03.10 Seite 47
Allgemeine Konstruktoren Die Parameterliste kann aus beliebig vielen Parametern bestehen. können mit Hilfe der Anzahl und des Datentyps der Parameters wie Funktionen überladen werden. Wenn ein allgemeiner Konstruktor vorhanden ist, wird vom System kein Standardkonstruktor erzeugt. Einführung in die C++-Programmierung, 03.03.10 Seite 48
Überladene Konstruktoren definieren KUNDE::KUNDE() { kundename = ""; kundevorname = ""; } KUNDE::KUNDE(string nachname, string vorname) { kundename = nachname; kundevorname = vorname; } KUNDE::KUNDE(string nachname, string vorname, string bankkonto) { kundename = nachname; kundevorname = vorname; kontonummer = bankkonto; } Einführung in die C++-Programmierung, 03.03.10 Seite 49
Objekte erzeugen // Der Konstruktor erwartet keine Eingabeparameter class KUNDE KundeNoInfo; // Es werden zwei Eingabeparameter erwartet class KUNDE mykunde("nachname", "Vorname"); // Es werden drei Eingabeparameter erwartet class KUNDE KundeKonto("Nachname", "Vorname", "123456"); Einführung in die C++-Programmierung, 03.03.10 Seite 50
Default-Parameter nutzen class KUNDE { private: // Attribute public: KUNDE(); KUNDE(string nachname, string vorname, string bankkonto= ""); // Methoden }; KUNDE::KUNDE() { // Anweisungen} KUNDE::KUNDE(string nachname, string vorname, string bankkonto) { // Anweisungen } Einführung in die C++-Programmierung, 03.03.10 Seite 51
Hinweise Default-Parameter werden nur in der Deklaration gesetzt. Bevor Default-Parameter genutzt werden können, müssen diese bekannt sein. Nach einem Default-Parameter werden nur weitere Default- Parameter aufgelistet. Default-Parameter befinden sich am Ende der Parameterliste. Einführung in die C++-Programmierung, 03.03.10 Seite 52
Konstante Attribute deklarieren class KUNDE { private: const string kundenummer; // Initialisierung im Konstruktor string kundename; string kundevorname; }; public: // Konstruktoren // Methoden Einführung in die C++-Programmierung, 03.03.10 Seite 53
Initialisierung im Standard-Konstruktor class KUNDE { private: const string kundenummer; }; public: KUNDE(); KUNDE::KUNDE() : kundenummer("1111") { kundename = ""; kundevorname = ""; } Einführung in die C++-Programmierung, 03.03.10 Seite 54
Initialisierungsliste KUNDE::KUNDE() : kundenummer("1111") { Die Initialisierungsliste wird vom Kopf des Konstruktors durch ein Doppelpunkt getrennt. besteht in diesem Beispiel nur aus dem Element kundenummer("1111"). kann mehrere Elemente, getrennt durch Kommata besitzen. Das Attribut kundennummer wird mit dem Wert 1111 initialisiert. Die Reihenfolge der Initialisierung richtet sich nach der Reihenfolge der Attribute in der Klasse. Einführung in die C++-Programmierung, 03.03.10 Seite 55
Nutzen Konstante Attribute initialisieren. Attribute, die als Referenzen deklariert sind, initialisieren. Attribute werden direkt beim Anlegen der Datenstruktur initialisiert. Einführung in die C++-Programmierung, 03.03.10 Seite 56
Initialisierung im allgemeinen Konstruktor class KUNDE { private: const string kundenummer; public: KUNDE(); }; // muss KUNDE(string kundenr, string nachname) : kundenummer(kundenr) { kundename = nachname; kontonummer = bankkonto; } Einführung in die C++-Programmierung, 03.03.10 Seite 57
Definierte Klassen als Datentyp nutzen #ifndef BANK_CLASSGIROKONTO_H_INCLUDED #define BANK_CLASSGIROKONTO_H_INCLUDED #include "classkunde.h" // Definition des Datentyps _CKunde class _CGirokonto { private: _CKunde owner; string kontonummer; string pinnummer; float kontostand; int dispo; // Als Datentyp wird eine Klasse genutzt Einführung in die C++-Programmierung, 03.03.10 Seite 58
Hinweis Attribute können nur vom Typ einer anderen Klasse sein. Es werden Objekte anderen Typs eingegebetttet. Attribute können nicht vom Typ der eigenen Klasse sein. Die Nutzung einer vorher definierten Klasse als Datentyp implementiert eine hat eine -Beziehung oder besitzt eine - Beziehung. Diese Art von Beziehung wird als Aggregation bezeichnet. Zum Beispiel: Ein Konto hat eine Person als Besitzer. Ein Person existiert ohne ein Konto. Ein Konto existiert aber nicht ohne eine Person. Einführung in die C++-Programmierung, 03.03.10 Seite 59
Allgemeinen Konstruktor nutzen class _CGirokonto { private: _CKunde owner; // Als Datentyp wird eine Klasse genutzt public: // nur mit Initialisierungsliste möglich _CGirokonto(string kontonr, string pin, string kundennummer, string nachname, string vorname) : owner(kundennummer, nachname, vorname) { kontonummer = kontonr; kontostand = 10.0; } Einführung in die C++-Programmierung, 03.03.10 Seite 60
Objekte erzeugen class _CGirokonto mykonto("12345678", "7894","27", "Edda", "Mann"); class _CKunde mykunde("26", "Nachname", "Vorname"); Die Signatur der Parameterliste muss zu einem Konstruktor passen. werden innerhalb eines Blocks angelegt. Die Objektvariable ist lokal. erzeugt ein neues Objekt und initialisiert dieses. Eingebettete Objekte werden durch Aufruf eines Konstruktors vor dem umschließenden Objekt initialisiert. Einführung in die C++-Programmierung, 03.03.10 Seite 61
Dynamische Objektvariablen class _CGirokonto *mykonto; mykonto = new _CGirokonto("12345678", "7894","27", "Edda", "Mann"); werden als Zeiger implementiert. Mit Hilfe von new wird Speicher für das Objekt der Klasse angefordert. das Objekt mit Hilfe eines Konstruktors initialisiert. Der Zeiger verweist auf das neue Objekt. Einführung in die C++-Programmierung, 03.03.10 Seite 62
löschen class _CGirokonto *mykonto; mykonto = new _CGirokonto("12345678", "7894","27", "Edda", "Mann"); delete mykonto; Mit Hilfe von delete wird das Objekt aus dem Speicher entfernt. Einführung in die C++-Programmierung, 03.03.10 Seite 63
Aufruf von Methoden class _CGirokonto *mykonto; mykonto = new _CGirokonto("12345678", "7894","27", "Edda", "Mann"); std::cout << mykonto->getkontoinfo() << std::endl; Die Methode und das Objekt werden durch den Operator -> verbunden. Einführung in die C++-Programmierung, 03.03.10 Seite 64
Arrays von Objektvariablen class _CKunde neukunde[10]; neukunde[0].setadress("strasse", "Ort", "Name"); class _CKunde neukunde[10]; legt ein Array von 10 Objekten vom Typ _Ckunde an. Für die Definition wird ein Konstruktor ohne Parameter benötigt. Die Attribute des Objekts werden mit Hilfe von Methoden gesetzt. Einführung in die C++-Programmierung, 03.03.10 Seite 65
Methoden aufrufen class _CKunde neukunde[10]; neukunde[0].setadress("strasse", "Ort", "Name"); Die Elemente des Arrays werden mit Hilfe von Indizies aufgerufen. Jeder Index ist ein Platzhalter für ein Objekt. Die aufzurufende Methode wird mit Hilfe des Punktoperators mit einem Objekt verbunden. Einführung in die C++-Programmierung, 03.03.10 Seite 66
Array von dynamischen Objektvariablen class _CKunde *array_kunde; array_kunde = new _CKunde[10]; werden als Zeiger implementiert. Mit Hilfe von new wird der gewünschte Speicher für das Array angefordert. jedes Objekt mit dem Standard-Konstruktor definiert. Der Zeiger verweist auf das erste Element im Array. Einführung in die C++-Programmierung, 03.03.10 Seite 67
löschen delete[] array_kunde; Als Kennzeichen für die Löschung eines dynamischen Arrays folgen dem Schlüsselwort delete die eckigen Klammern. Das Weglassen der eckigen Klammern erzeugt keine Fehlermeldung, sondern nur eine fehlerhafte Löschung im Speicher. In diesem Beispiel wird das dynamische Array array_kunde gelöscht. Einführung in die C++-Programmierung, 03.03.10 Seite 68
Methoden aufrufen (array_kunde+anzahl)->setkundenname("müller", "Else"); Die Methode wird mit Hilfe des ->-Operators mit dem dazugehörigen Objekt verbunden. Das gewünschte Objekt kann mit Hilfe von Indizies ermittelt werden. Andere Möglichkeit: Der Zeiger wird auf das gewünschte Element verschoben. Hinweis: Der Zeiger auf das erste Element muss erhalten bleiben. Andernfalls kann das Array nicht gelöscht werden. Einführung in die C++-Programmierung, 03.03.10 Seite 69