Wieder mal ne Design Frage:
-
Habe eine Haupt Klasse A. Dann hab ich eine weitere Klasse B. eine Instanz von Klasse B ist nur verwendbar wenn Klasse A vorhanden ist. Quaise ne Aggregation glaub ich weis nich mehr richtig:)
Soll ich nun Klasse B in A verschachteln, das die zusammengehörigkeit gefestigt wird, oder wie würdest es ihr machen
-
Schreib nochmal hin was du darstellen willst. Derzeit hast du nämlich eine Situation beschrieben die du afaik nicht darstellen willst.
Oder ist es korrekt, dass eine Instanz von B nur sein darf wenn Klasse A deklariert ist?
MfG SideWinder
-
Ok nochmal: Durch erzeugen einer Instanz von A, kann wird eine dazugehörige Instanz von B erzeugt. wenn A gelöscht wird, wird B auch gelöscht:) Es geht darum ob ich nun B Klasse in A klasse verschachteln soll :
class A{ public: class B{ ... }; ... };oder getrennt untereinander
class A{ ... }; class { ... };schreiben soll.
Druch Verwendung der B Klasse über A::B ist halt eine gewisse zusammengehörtigkeit gegeben.. wisst ihr was ich meine? Ist das Sinnvoll?
-
Unterklassen bilde ich eigentlich nur für public-Only-Strukturen ala Teilklassen (zB ListElement, etc.)
In deinem Fall wäre es imho eher angebracht den Konstruktor von B private zu machen und A als friend zu deklarieren - die friend-Deklaration zeigt dann auch die Zusammengehörigkeit.
MfG SideWinder
-
BorisDieKlinge schrieb:
Druch Verwendung der B Klasse über A::B ist halt eine gewisse zusammengehörtigkeit gegeben.. wisst ihr was ich meine? Ist das Sinnvoll?
Ob das sinnvoll ist hängt sehr von den konkreten Klassen ab. Macht B auch für sich Sinn und kann ohne A verwendet werden? Oder kann nur A die Objekte vom Typ B vernünftig benutzen?
-
Wenn wirklich nur A die Klasse B benutzt und B somit ein gefestigter Teil von A ist kannst du die Klasse in A definieren. Würde ich aber nur machen wenn B nicht gerade ne Monster Klasse ist, sonst nimmst du dir so die Übersichtlichkeit.
Normal macht man das nur wie Side schon sagte, zB bei Listenelementen und so, wo zB ein Listenelement natürlich nur die Klasse List was angeht.
Und wenn es doch sein könnte, das von außerhalb jmd auch mal die Klasse braucht, dann die Klasse halt in public definieren.Was genau stellt A und B dar ??? Man kann das nicht so einfach so sagen ...
-
Klasse A stellt eine Datenstruktur dar, welche über ne funktion bspw. createDAte erzeguit wird. Die Klasse B ist quasie eine Art filterklasse, welche die Daten aus A selektiert darstellen kann. Dabei ist B extra frü die A Datenstruktur zugeschnitten.. GRüße
-
Wenn sie klein ist kannst du sie in A popeln, ansonsten friend und eigenständig.
MfG SideWinder