Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Segmentierung und Aggregation | Kapselungsübersicht
C++ OOP
course content

Kursinhalt

C++ OOP

C++ OOP

1. Grundlagen der OOP in C++
2. Konstruktoren und Destruktoren
3. Kapselungsübersicht
4. Überblick Über die Vererbung
5. Überblick Über Polymorphismus

book
Segmentierung und Aggregation

Wenn Sie Software erstellen, die wartbar und flexibel ist, gibt es viele Dinge 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 Klasse Objekte anderer Klassen als Mitgliedsvariablen enthält. Diese Mitglieder sind wesentliche Komponenten der enthaltenden Klasse und haben eine starke Eigentumsbeziehung. Wenn das enthaltende Objekt zerstört wird, werden auch seine zusammengesetzten Teile zerstört. Zum Beispiel:

h

Car

h

Engine

copy
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, wird automatisch eine Engine Instanz als Teil seiner Komposition erstellt.

Aggregation

Aggregation ist eine andere Form der Objektkomposition, bei der eine Klasse Objekte anderer Klassen enthält, aber die enthaltenen Instanzen eine schwächere Beziehung im Vergleich zur Komposition haben. Bei der Aggregation können die enthaltenen MitgliedsKlassen unabhängig existieren und können unter mehreren Klassen geteilt werden.

h

Car

h

Engine

copy
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 };

In diesem Beispiel aggregiert die Car Klasse ein Engine Objekt mithilfe eines Zeigers. Die Car Klasse besitzt das Engine Objekt nicht; sie hält lediglich eine Referenz darauf. Dies ermöglicht es der Engine-Instanz, unabhängig von dem Car Objekt zu existieren und bei Bedarf unter mehreren Instanzen geteilt zu werden.

Wahl zwischen Komposition und Aggregation

Beim Entwerfen von Softwaresystemen ist es wichtig, sorgfältig zu überlegen, ob Komposition oder Aggregation basierend auf den Beziehungen zwischen Klassen und Objekten verwendet werden soll.

Komposition
Aggregation
Die enthaltende Klasse muss das Eigentum an den enthaltenen Objekten übernehmen
Ja
Nein
Enthaltene Objekte sind integrale Bestandteile der enthaltenden Klasse
Ja
Nein
Die enthaltende Klasse referenziert lediglich die enthaltenen Objekte
Nein
Ja
Enthaltene Objekte können unabhängig existieren oder unter mehreren Instanzen geteilt werden
Nein
Ja

Im Kontext von Car und seinen Engine Klassen wäre die Verwendung von Komposition angemessener. Jedes Auto hat typischerweise seinen eigenen Motor, und der Motor ist ein integraler Bestandteil des Autos selbst. Darüber hinaus verhindert es, dass die Engine über mehrere Objekte hinweg geteilt oder wiederverwendet wird, was ebenfalls sinnvoll ist.

Welches der folgenden ist ein Beispiel für Aggregation?

Welches der folgenden ist ein Beispiel für 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 6
We're sorry to hear that something went wrong. What happened?
some-alt