Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Segmentierung und Aggregation | Überblick Über Kapselung
C++ OOP

Segmentierung und Aggregation

Swipe um das Menü anzuzeigen

Bei der Entwicklung wartbarer und flexibler Software gibt es im Prozess viele Aspekte zu berücksichtigen, insbesondere in der objektorientierten Programmierung. 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 Mitglieder sind wesentliche Bestandteile der umschließenden class und stehen in einer starken Besitzbeziehung. Wird das umschließende object zerstört, werden auch die enthaltenen Teile zerstört. Zum Beispiel:

Car.h

Car.h

Engine.h

Engine.h

123456789101112
#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 Car-Klasse 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, aber die enthaltenen Instanzen eine schwächere Beziehung im Vergleich zur Komposition aufweisen. Bei der Aggregation können die enthaltenen Mitglieder-classes unabhängig existieren und möglicherweise von mehreren classes gemeinsam genutzt werden.

Car.h

Car.h

Engine.h

Engine.h

123456789101112131415
#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 mithilfe 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 soll, basierend auf den Beziehungen zwischen Klassen und Objekten.

Im Zusammenhang mit den Klassen Car und Engine ist 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 die Engine von mehreren objects-Objekten gemeinsam genutzt oder wiederverwendet wird, was ebenfalls sinnvoll ist.

question mark

Welches der folgenden Beispiele ist eine Aggregation?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 5

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 5
some-alt