Zusammensetzung bezieht sich auf die Kombination einfacher Typen, um komplexere zu machen. In Ihrem Beispiel könnte Zusammensetzung sein:
Animal:
Skin animalSkin
Organs animalOrgans
Mammal::Animal:
Hair/fur mammalFur
warm-blooded-based_cirulation_system heartAndStuff
Person::Mammal:
string firstName
string lastName
Wenn Sie völlig Zusammensetzung gehen wollte (und aller Erbe loszuwerden) es würde wie folgt aussehen:
Animal:
Skin animalSkin
Organs animalOrgans
Mammal:
private Animal _animalRef
Hair/fur mammalFur
warm-blooded-based_cirulation_system heartAndStuff
Person:
private Mammal _mammalRef
string firstName
string lastName
Der Vorteil dieses Ansatzes ist, dass Die Typen Mammal
und Person
müssen nicht der Schnittstelle ihres vorherigen Elternteils entsprechen. Diese könnte eine gute Sache sein, weil manchmal eine Änderung der Oberklasse schwerwiegende Auswirkungen auf die Unterklassen haben kann. Sie können weiterhin über ihre privaten Instanzen dieser Klassen auf die Eigenschaften und Verhaltensweisen dieser Klassen zugreifen. Wenn sie diese Verhaltensweisen der ehemaligen Oberklasse aufdecken möchten, können sie sie einfach in eine öffentliche Methode einbinden.
fand ich eine gute Verbindung mit guten Beispielen hier: http://www.artima.com/designtechniques/compoinh.html
Also kann ich sagen: "Zusammensetzung ist, wenn ich ein Objekt der' Klasse A' in 'Klasse B' (statt Klassen' B' von 'KlasseA') unterscheide." ? – thesummersign
oh. ok, hab 'w69rdy' es später beantwortet. JA, das kann ich sagen. – thesummersign