Hallo Zusammen,
Ich habe eine Klassenierarchie (wie ein Baum), wobei die jeweils untere Ebene von der oberen erbt.
Beispielhaften Aufbau:
Tier - Landlebewesen - Säugetier - Hund - Labrador - Bello
Tier - Meereslebewesen - Säugetier - Deflin - Blauflossen Delfin - Flipper
Tier - Landlebewesen - Reptil- Frosch - Pfeilgiftfrosch - Quaker
Wie bereits erwähnt erbt die jeweils untere Ebene von der Oberen. Dabei hat (als Baum betrachtet) jeder Knoten eigene Attribute und Funktionen.
Ich habe nun das Problem, dass es Mischwesen gibt die sowohl alle Attribute und Funktionen vom Frosch als auch vom Hund haben. Wie kann ich dies realisieren?
Kann ich eine Instanz von 2 unterscheiden Klassen erstellen die nicht voneinander geerbt haben (= auf der gleichen Ebene sind) ?
Ich hoffe mein Problem wird klar und ich freue mich sehr über Vorschläge.
Liebe Grüße
TobiM
Frage zur Vererbung und Instanz zweier Klassen
- __blackjack__
- User
- Beiträge: 14054
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@TobiM: Wozu soll das denn am Ende gut sein? Macht das überhaupt Sinn in so eine Klassenstruktur zu packen? Was willst Du am Ende damit machen?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Die Datengrundlage ist sehr inhomogen und durch den Zugriff über die Klassenstruktur soll dies handelbar bleiben. Die Daten sind am Ende in einer Datenbank gespeichert und über eine ORM mit der Datenbank verbunden.
Im obigen Beispiel gesprochen:
Der Hund hat völlig andere Attribute und Funktionen als der Delfin, allerdings sollen trotzdem beide in einer Datenbank gespeichert werden. Um nicht für jeden Datensatz neu auswählen zu müssen welche Attribute relevant sind und welche unbesetzt sind, wird über diese Klassenstruktur zugegriffen.
Es gibt letztlich auch zu viele Tiere um jedes einzeln zu handeln. Dabei ist die Klassenstruktur zusätzlich hilfreich.
Mein Problem ist jetzt nur, dass es Instanzen geben muss die Attribute und Funktionen aus zwei verschiedenen Ästen enthalten. Ich möchte diese Mischform allerdings nicht immer als neuen Zweig anlegen, weswegen ich eine Möglichkeit suche eine Instanz aus zwei Klassen zu bilden.
Liebe Grüße
TobiM
Im obigen Beispiel gesprochen:
Der Hund hat völlig andere Attribute und Funktionen als der Delfin, allerdings sollen trotzdem beide in einer Datenbank gespeichert werden. Um nicht für jeden Datensatz neu auswählen zu müssen welche Attribute relevant sind und welche unbesetzt sind, wird über diese Klassenstruktur zugegriffen.
Es gibt letztlich auch zu viele Tiere um jedes einzeln zu handeln. Dabei ist die Klassenstruktur zusätzlich hilfreich.
Mein Problem ist jetzt nur, dass es Instanzen geben muss die Attribute und Funktionen aus zwei verschiedenen Ästen enthalten. Ich möchte diese Mischform allerdings nicht immer als neuen Zweig anlegen, weswegen ich eine Möglichkeit suche eine Instanz aus zwei Klassen zu bilden.
Liebe Grüße
TobiM
- __blackjack__
- User
- Beiträge: 14054
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@TobiM: Ich bleibe lieber bei der Frage ob das denn überhaupt Sinn macht das als Vererbungshierarchie abzubilden mit diesen konkreten Klassennamen. Oder ob das nicht besser als Datenstruktur abgebildet werden sollte, mit ein paar wenigen festen Klassen für `Tier` ganz allgemein und eine für `Category`, und ein `Tier` besteht dann per Kompisition aus einer Menge von Kategorien die jeweils einen Satz an Attributen enthalten. Und daneben kannst Du Dir einen Baum mit den (Unter)kategorien als Datenstruktur anlegen. Und eventuell auch in der Datenbank speichern. Und für das Tier speicherst Du dann die jeweiligen Kategorien, aus denen das besteht. Für die initiale Auswahl brauchst Du dabei nur die Kategorien wählen die am weitesten von der Wurzel des Kategorien-Baums entfernt sind, denn die von dort auf dem Weg zur Wurzel kannst Du dir dann ja aus dem Baum zusammensuchen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Vielen Dank für den Anstoß inneine andere Richtung zu denken, allerdings möchte ich bei meinem jetzigen Modell gerne bleiben.
Gibt es eine Möglichkeit eine Instanz von 2 Klassen zu erzeugen, ohne dafür eine zusätzliche Klasse zu erstellen die von beiden erbt ?
Gibt es eine Möglichkeit eine Instanz von 2 Klassen zu erzeugen, ohne dafür eine zusätzliche Klasse zu erstellen die von beiden erbt ?