Kursinhalt
C++ OOP
C++ OOP
Segmentierung und Aggregation
Bei der Entwicklung wartbarer und flexibler Software gibt es im Prozess, insbesondere in der objektorientierten Programmierung, viele Aspekte zu berücksichtigen. Komposition und Aggregation sind grundlegende Konzepte, die die Erstellung komplexer Systeme aus einfacheren Komponenten ermöglichen und Teil des Kapselungsparadigmas sind.
Komposition
Komposition ist eine Entwurfstechnik, bei der eine class
objects
anderer classes
als Member-Variablen enthält. Diese Member sind wesentliche Bestandteile der enthaltenden class
und stehen in einer starken Besitzbeziehung. Wird das enthaltende object
zerstört, werden auch seine zusammengesetzten Teile zerstört. Zum Beispiel:
Car.h
Engine.h
#include "Engine.h" class Car { public: void Start() { engine.Start(); // Start the engine std::cout << "Car started" << std::endl; } private: Engine engine; // Engine object composition };
Die Klasse Car
setzt sich aus einem Engine
-Objekt zusammen. Wenn ein Car
-Objekt erstellt wird, erzeugt es automatisch eine Instanz von Engine
als Teil seiner Komposition.
Aggregation
Aggregation ist eine weitere Form der object
-Komposition, bei der eine class
ein object
anderer classes
enthält, jedoch besteht zwischen den enthaltenen Instanzen eine schwächere Beziehung als bei der Komposition. Bei der Aggregation können die enthaltenen Mitglieder-classes
unabhängig existieren und möglicherweise von mehreren classes
gemeinsam genutzt werden.
Car.h
Engine.h
#include "Engine.h" class Car { public: Car(Engine* engine) : engine(engine) {} void Start() { engine->Start(); // Start the engine std::cout << "Car started" << std::endl; } private: Engine* engine; // Engine object aggregation };
Die Klasse Car
aggregiert ein Engine
-Objekt mittels eines Zeigers. Die Klasse Car
besitzt das Engine
-Objekt nicht; sie hält lediglich eine Referenz darauf. Dadurch kann die Engine
-Instanz unabhängig vom Car
-Objekt existieren und bei Bedarf von mehreren Instanzen gemeinsam genutzt werden.
Auswahl zwischen Komposition und Aggregation
Bei der Entwicklung von Softwaresystemen ist es wichtig, sorgfältig zu überlegen, ob Komposition oder Aggregation verwendet werden sollte, abhängig von den Beziehungen zwischen Klassen und Objekten.
Im Kontext der Klassen Car
und Engine
wäre die Verwendung von Komposition angemessener. Jedes Auto hat in der Regel seinen eigenen Motor, und der Motor ist ein integraler Bestandteil des Autos selbst. Außerdem wird dadurch verhindert, dass der Engine
von mehreren objects
-Objekten gemeinsam genutzt oder wiederverwendet wird, was ebenfalls sinnvoll ist.
Danke für Ihr Feedback!