schlechtes Beispiel für Vererbung?
-
Sollte die Funktion getName() nicht einen Rückgabewert != void haben?
-
jo, habs schnell ausgebessert.
Aber im Prinzip geht es mir weniger um die Member sondern um die Beziehungen der Klassen untereinander.
-
Naja, und ist es nicht so, das die Pfeile zu der Basisklasse gehen?
-
ja, sorry.
Mir geht es nicht um solche Kleinigkeiten - ich würde nur gerne wissen ob die Beziehungen so passen. Ich hab das UML Diagramm nur gemalt, damit ich es euch besser zeigen kann. Da ich UML nicht besonders mag, verwende ich es auch quasi nie. sorry
-
Da ich UML nicht besonders mag, verwende ich es auch quasi nie.
Hast du denn ein besseres oder überhaupt irendein allgemeinverständliches anders Mittel um Klassenhirachien darzustellen.
-
Können wir bitte wieder auf meine Frage zurück kommen?
Ich will hier nicht über UML diskutieren, sondern darüber wie man Vogel, Amsel, Strauss und Pinguin zueinander in Beziehung setzt.
-
Shade Of Mine schrieb:
Ich will hier nicht über UML diskutieren, sondern darüber wie man Vogel, Amsel, Strauss und Pinguin zueinander in Beziehung setzt.
ich finde, dass dies sehr stark von kontext und anwendungsfall abhängt, also was du damit machen willst
-
class fahrzeug { virtual void fahren()=0; } class car: public fahrzeug { void fahren(){...} } class boot :public fahrzeug { void fahren(){...} } class Amphibienfahrzeug:public car, public boot // Errr } }
-
Bashar schrieb:
(wegen LSP-Verletzung)
edit: es ist wahrscheinlich schon zu spät...
Bedeutet das sowas wie: "Quadrat verhält sich anders als ein Rechteck"?
Sodass folgender Code nicht mit Quadraten funktioniert:bool foo(const Rechteck& r) { r.setWidth(1); r.setHeight(2); /* ... */ return r.getWidth() == r.getHeight() / 2; }
Wofür steht LSP?
-
Liskov substitution principle
-
Danke.
-
xroads42 schrieb:
class fahrzeug { virtual void fahren()=0; } class car: public fahrzeug { void fahren(){...} } class boot :public fahrzeug { void fahren(){...} } class Amphibienfahrzeug:public car, public boot // Errr } }
class Amphibienfahrzeug:public car, public boot // alles ok { void fahren(){ /* choose */ } }
ist (meines wissens nach) eh nur mehrdeutig, wenn fahren auch aufgerufen wird.
gruß
cellar's child
-
wieso?
ist doch alles in butter:
vorraussetzung:virtual void fahren()
-