Vererbung + Polymorphie

Guntpat1981

Mitglied
Guten Morgen zusammen,

habe ein Vererbungs / Polymorphie - Problem. Ich habe eine abstrakte Basisklasse "Building", und zwei von Building abgeleitete Klassen "ResearchBuilding" und "MoneyBuilding". "ResearchBuilding" hat wiederum 2 abgeleitete konkrete Klassen "University" und "Library". "MoneyBuilding" hat 2 abgeleitete konkrete Klassen "Bank" und MarcetPlace".
Soweit die Vererbungshierarchie.
Nun habe ich in der obersten Basisklasse Building eine rein virtuelle Methode, die Attribute einer weiteren von der Klassenhierarchie unabhängigen Klasse verändern soll (per Referenzübergabe).
Die 4 konkreten Klassen (University, Library, MarcetPlace und Bank) verändern die Attribute der anderen Klasse (die heißt übrigens Town) - für mich stellt sich jetzt die Frage, ob ich die rein virtuelle Methode in MoneyBuilding und ResearchBuilding implementiere (bei Vererbung könnten die jeweiligen Unterklassen ja die Methode nutzen), oder jeweils in allen 4 Unterklassen.

Ich hoffe ihr könnt mir helfen.
Gruß,
Patrick
 
Code:
für mich stellt sich jetzt die Frage, ob ich die rein virtuelle Methode in MoneyBuilding und ResearchBuilding implementiere (bei Vererbung könnten die jeweiligen Unterklassen ja die Methode nutzen), oder jeweils in allen 4 Unterklassen.

Mhm das kommt immer auf den Fall an was die Methode implementiert.
Wenn du meinst die Methode implementiert eher eine Verhaltensweise der
konkreten Klassen würde ich sie in den 4 konkreten Klassen implementieren.
Wenn du aber meinst die Methode ist eher für eine ReseachrBuilding im
Allgemeinen Fall gebräuchlich dann implmentiere sie in der Klasse
ReseachrBuilding bzw MoneyBank.
Rein vom virtuellen Methoden Aufruf macht das kein Unterschied.
Falls du aber mal ein konkretes Objetk dir ungefähr so beschaffen
hast:

Code:
University* a = new University();
Und du hast die Methoden mit letzter von mir genannter Vorgehensweise
implementiert, dann seie dir im klaren das du dann beim Aufruf der virtuellen
Methode höchstwahrsch. einen Kompilierfehler bekommst.

Gruß

RedWing
 
Zurück