Version [26608]
Dies ist eine alte Version von ObjProg05Beziehungen erstellt von RonnyGertler am 2013-04-29 19:08:47.
Objektorientierte Programmierung - Kapitel 5 - Objekt-Beziehungen
Inhalte von Dr. E. Nadobnyh
51. Verbindungen zwischen Objekten in C++
Nachricht
Ein objektorientiertes Programm ist eine Vielzahl kooperierender Objekte.
Kommunikation zwischen Objekten bedeutet, dass die Objekte sich gegenseitig Nachrichten schicken, d.h. Methoden des anderen Objektes aufrufen.
Verbindungen zwischen Objekten in C++
Die Voraussetzung für eine Kommunikation zwischen Objekten ist , dass diese sich kennen. Eine C++ -Methode kennt folgende Objekte:
1) Globale Objekte,
2) Lokale Objekte,
3) Parameter-Objekte,
4) Attribut-Objekte.
Objekte können in drei bekannten Formen gestaltet werden:
1) Benanntes-Objekt,
2) Referenziertes Objekt ,
3) Referenz-Objekt.
Subobjekte
Objekte können sich aus anderen Objekten (AttributObjekten) zusammensetzen.
Ein Attribut-Objekt wird auch als Subobjekt bezeichnet.
Es gibt zwei Arten von Subobjekten:
1) Teilobjekt (Benanntes-Objekt ),
2) Eigenständiges Subobjekt (Referenziertes Objekt ).
Begriffsverwirrung: Ein Subobjekt kann manchmal als ein Teilobjekt bezeichnet werden.
Ein Teilobjekt ist ein unlösbares Subobjekt.
class A{ };
class B{ A a1; };
main(){ B b1; }
Hier ist a1 das Teilobjekt des Objektes b1.
Bei der Initialisierung eines Objektes, das Teilobjekte enthält, sind mehrere Konstruktoren auszuführen.
Reihenfolge der Konstruktor- Aufrufe:
1) Zuerst werden die Teilobjekte angelegt und initialisiert. Ohne weitere Angaben wird für jedes Teilobjekt der Default- Konstruktor aufgerufen.
2) Danach wird der Konstruktor des Objektes aufgerufen.
Der Aufruf von Default-Konstruktoren beim Aufbau von Teilobjekten hat folgende Nachteile:
1) Ein Teilobjekt wird zwei mal mit Werten versehen: zuerst durch den Aufruf des Default-Konstruktors des Teilobjektes, danach durch die Zuweisung beim Aufruf des Konstruktors des Objektes. Diese doppelte Aktion beeinträchtigt die Ausführungszeit.
2) Konstante Objekte oder Referenzen können nicht durch die Zuweisung mit Werten versehen werden.
3) Klassen ohne Default-Konstruktor können nicht als Typ für Teilobjekte verwendet werden.
CategoryObjProg