Klassendesign
-
Hallo,
ich habe ein Problem, ein richtiges Klassendesign zu einem zugrundeliegenden Problem zu finden. Ich muss ein hierarchisch zusammenhängenden Sachverhalt in ein Klassenmodell verpacken, der folgendermaßen aussieht:
Es gibt Gruppen (ca. 10 Stück), die wiederum Unterelemente beinhalten. Diese Unterelemente sollen wiederum Informationen bereitstellen, wobei hier mein Problem liegt. Auf der einen Seite sollen diese Informationen Werte für einen Sachverhalt_1 bereitstellen, auf der anderen Seite für einen Sachverhalt_2.
Wenn ich diese Problemstellung nun in ein Klassenmodell abbilden müsste, würde ich eine abstrakte Klasse schreiben, welche die Struktur der Gruppen und dessen Unterelemente beschreibt. Dabei dürfte die Klasse aber keine Informationen beihalten sondern nur die Struktur darstellen.
Ich versuche es mal hier in Code darzustellen (kann syntaktisch falsch sein!)
class Abstrakt { public: typedef struct { typedef struct { }Unterelement_1; typedef struct { }Unterelement_2; ... }Gruppe_1; typedef struct { typedef struct { }Unterelement_1; typedef struct { }Unterelement_2; ... }Gruppe_2; ... }; //Child-Klasse, die nun von der Klasse Abstrakt erbt. class Sachverhalt_1 : public Abstrakt { public: //Ich weiß z.B. nicht, wie man eine geerbete Struktur um weitere Element erweitern kann!!!!!!!! Gruppe_1::Unterelement_1 { int iPos; AnsiString sText; } ... }; //Child-Klasse, die nun von der Klasse Abstrakt erbt. class Sachverhalt_2 : public Abstrakt { public: //Ich weiß z.B. nicht, wie man eine geerbete Struktur um weitere Element erweitern kann!!!!!!!! Gruppe_1::Unterelement_1 { int iWert; } ... };
Man kann erkennen, dass ich nun zwei Klassen anlegen wurde (Sachverhalt_1 und Sachverhalt_2) welche von Abstrakt erben. Aber beide implementieren und erweitern die Strukturen der Abstrakten Klasse. Ist das so möglich? Wie kann man eine geerbte Struktur erweitern? Sollte ich vielleicht einen anderen logischen Aufbau wählen? wenn ja, welchen?
Könnte Ihr mir bitte ein Beispiel geben, in dem meine Problemstellung exemplarisch gelöst wird?!? Mit meiner Lösung möchte ich einfach nur verhindern, dass ich nich zwei Klassen anlegen muss, in der zu 85% das gleiche drin steht. Daher wollte ich diesen gemeinsamen Teil in eine separate Klasse auslagern, die ich dann über Vererbung den anderen wieder mitgeben kann.
Ich habe z.B. gerade große Probleme, wenn ich in der abstrakten Klasse Strukturen verwende und diese erweitern möchte. Ich weiß nicht, wie ich das machen kann. Methoden kann man ja überschreiben, geht das auch mit Strukturdefinitionen?
Vielen Dank für eure Hilfe!
-
Hallo
Es hat immer noch keiner verstanden, was du eigentlich vorhast und warum.
Ich habe ja bereits hier versucht eine Umsetzung zu finden. Aber ich fürchte du verrennst dich da in einer Umsetzung, die so nicht machbar ist. Vielleicht solltest du uns nicht erklären wie du deine Datenstruktur umsetzen willst, sondern lieber wofür du diese Datenstruktur brauchst, und was du damit machen willst. Ich bin mir sicher das du viel zu kompliziert denkst.bis bald
akari
-
Vielleicht solltest du dir erst mal angucken was "Vererbung" und "Überladen von Funktionen" bedeutet?
-
hier mal ein Link zur Vererbung: http://www.willemer.de/informatik/cpp/cpperben.htm
und zum überladen: http://www.willemer.de/informatik/cpp/cppovrld.htm