001
17.11.2006, 15:24 Uhr
ao
(Operator)
|
Man kann es benutzen, um in der Implementierung von klasse die Fähigkeiten von klasse2 zu verwenden. Es ist *keine* Klassenbeziehung der Art "klasse ist eine Spezialisierung von klasse2", wie das bei public-Vererbung der Fall ist, eher ein "klasse verwendet klasse2 für internen Kram", was aber wiederum keinen Außenstehenden was angeht, also warum soll man es groß im Klassenheader verkünden?
Unter Leuten, die viel Klassendesign machen, ist die Ansicht verbreitet, dass das sog. Containment:
C++: |
class klasse { private: klasse2 kl2; };
|
in dem Fall die geeignetere Beziehung ist, weil sie das gleiche leistet ohne die Probleme, die eine Vererbungsbeziehung mitbringen kann (Mehrfachvererbung).
Anders ists, wenn klasse2 alle ihre tollen Funktionen protected mitbringt, so dass man gezwungen ist, von ihr zu erben, um sie nutzen zu können. Aber das ist dann oft ein Zeichen für ein krankes Design. Vererbung ist nicht die Lösung für alle Probleme. Dieser Post wurde am 17.11.2006 um 15:25 Uhr von ao editiert. |