"Hat ein"-Beziehung
-
Ich hab wiedermal ne kleine Frage bzw ein Problem.
Hab schon fleißig das netz durchsucht aber kein mir einleuchtendes Beispiel für eine "Hat-ein"-Beziehung gefunden, glaube man spricht auch von Aggregation:
Nun vielleicht kann jemand erklären, wie man diese in c++ um setzt, z.B angenommen
man nehme eine class Haus und bekanntlich "hat ein" Haus ja eine Tür.Läuft das wie bei ist ein, also Vererbung....class haus {};
class Tuer:public Haus {};
????
Danke schonmal für eure Bemühungen
-
Das was du meinst ist Vererbung
Auch gut zu finden unter dem Stichwort
UML
Da kannst dich tot beziehen
Ausserdem gehört das wirklich nicht ins MFC Forum
beim nächsten mal kurz üerlegen wo es reingehör (steht ja unten dran bei den Ruriken als beschreibung )
wenn das nächste mal besser postest helft man dir eher
Aber ok, will ja kein .... seinsuche mal unter
Achtung suchegriff
"ist ein" Vererbung
-
class Tuer { }; class Haus { private: Tuer tuer_; };
-
Entschuldigung und vielen Dank nochmals für die schnelle Hilfe
-
sorry
klar
nicht in google nach "ist ein" sonder "hat ein" suchen
sorry
sind ja 2 paar stifel
-
Dieser Thread wurde von Moderator/in dEUs aus dem Forum MFC mit dem Visual C++ in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
http://www.lmtm.de/InformatiXTM/umljava/texte/assoziation.html
schau dir auch noch die unterschiede zwischen aggregation, komposition und assoziation als drüber an.
-
Flaah schrieb:
Ich hab wiedermal ne kleine Frage bzw ein Problem.
Hab schon fleißig das netz durchsucht aber kein mir einleuchtendes Beispiel für eine "Hat-ein"-Beziehung gefunden, glaube man spricht auch von Aggregation:
Nun vielleicht kann jemand erklären, wie man diese in c++ um setzt, z.B angenommen
man nehme eine class Haus und bekanntlich "hat ein" Haus ja eine Tür.Läuft das wie bei ist ein, also Vererbung....class haus {};
class Tuer:public Haus {};
????
Danke schonmal für eure Bemühungen"Hat-ein"-Beziehungen sind Aggregationen das ist richtig.
Was du beschrieben hast ist eine "Ist-ein"-Beziehung. Wobei das auch noch falschrum beschrieben wurde.
Eine Tür ist zwar ein Teil eines Hauses aber es ist kein Haus. Daher müsstest du es wenn schon anders herum machen ( class Haus : public Tuer ), was wiederum auch falsch wäre, weil ein Haus keine Tuer ist.
Die "Hat ein"-Beziehung bedeutet das die Klasse einen Member.
class Tuer { //... }; // class Haus hat eine Tuer -> class Haus { Tuer haustuer; public: //... };
Ich hoffe das hast du jetzt verstanden.
MfG
-
Statt Layering kann man in bestimmten Fällen auch private Vererbung benutzen. Nach Meyers sollte man private Vererbung immer dann benutzen, wenn keine "Ist-Ein-Beziehung" vorliegt und man lediglich auf den Code der Basisklasse zugreifen will.
Mir fällt aber gerade auf, dass das mit Haus und Tür weniger viel zu tun hat :xmas2:.
-
simon.phoenix schrieb:
Statt Layering kann man in bestimmten Fällen auch private Vererbung benutzen. Nach Meyers sollte man private Vererbung immer dann benutzen, wenn keine "Ist-Ein-Beziehung" vorliegt und man lediglich auf den Code der Basisklasse zugreifen will.
Ne, nur wenn man virtuelle Methoden überschreiben will. Sonst ist Layering idR besser.
-