Struppi: C++: wie mache ich richtiges OO-Design?

Beitrag lesen

Ja, wenn ich so drüber nachdenke ...

denken ist gut, lesen aber auch ;-) - Wir sind hier im Prinzip schon weiter.

Ich würde es dann eher so machen, dass ich ein Display-Objekt machen würde, das die Eigenschaften und Methoden bietet, die alle Displays gemeinsam haben, z.B. den anzuzeigenden Wert oder eine Anzeigemethode. Darunter könnte ich mir dann für die verschiedenen Anzeigearten Unterobjekte vorstellen, z.B. Display::LED oder Display::Text (um mal bei der mir aus Perl bekannten Schreibweise zu bleiben). Die Methoden werden dann direkt über die Instanz des nachrangigen Objektes aufgerufen. Hat man ein LED-Display, käme man also gar nicht in die Verlegenheit, eine Methode setSchriftfarbe aufzurufen.

Es ging darum dass eine Klasse Rechner eine Klasse Display hat, dieses Klasse ist abstrakt. Wird nun eine konkretes Objekt erzeugt, kann dieses sowohl das eine oder andere sein, aber nur in dem Fall das es ein Display::LED ist, kann die Farbe gesetzt werden.

Das ganze ist nicht unbedingt 1:1 in Perl übetragbar, da es dort keine echten abstrakten Klassen gibt (manche sagen noch nicht mal echte Klassen). Aber Polymorphismus ist dort natürlich auch möglich. D.h. du weißt vorher nicht was für ein Art Objekt du hast und eigentlich sollte es dich auch nicht intersssieren, es reicht zu Wissen das du ein (abstraktes) Objekt Display hast.

Aber in dem Beispiel reicht das eben nicht, da setFarbe() nur ein LED Display kennt und das halte ich für nicht gewünscht im OOP Konzept.

Struppi.

--
Javascript ist toll (Perl auch!)