Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - OOP Vererbung und Methoden Problem


SilasZ - Sa 06.02.10 18:50
Titel: OOP Vererbung und Methoden Problem
Ich habe folgendes Problem:
Ich habe eine eigene Klasse erzeugt (ich nen sie jetzt mal eineklasse) und eine Klasse die von "eineklasse" abgeleitet wird(ich nen sie erbklasse). Die "erbklasse" hat noch mehr variablen als die "eineklasse". Jetzt will ich eine Prozedur schreiben der man ein object von "eineklasse" oder "erbklasse" übergibt(procedure eineprozedur(übergebenesobjekt: eineklasse)). Die Prozedur soll die Variablen der Klassen verändern (unter anderem auch Variablen von der "erbklasse").
Aber ich kann ja nicht schreiben übergebenesobjekt.variablevonerbklasse := irgendwas , weil übergebenesobjekt ja ein objekt von "eineklasse" ist.
Gibt es da eine Lösung oder habt ihr eine andere idee wie ich das machen könnte oder ein link der mir vielleicht weiterhilft.
Danke schon mal für die Antworten.

Es tut mir leid dass ich nicht die Suchfunktion genutzt habe, aber ich wusste nicht wonach ich suchen sollte.


elundril - Sa 06.02.10 19:21

Naja, eine Methode wäre eine Typüberprüfung:


Delphi-Quelltext
1:
2:
3:
4:
  if (aObject is EineKlasse) then
    (aObject as EineKlasse).Variable := Irgendwas
  else if (aObject is Erbklasse) then
    (aObject as Erbklasse).AndereVariable := Irgendwas;


Soweit ich aus meinem OOP-Skriptum aber noch weiß is das ein eher blödes Konstrukt. Nur hab ich leider Vergessen wie man es umgehen kann. :oops:

lg elundril


Hidden - Sa 06.02.10 19:33

Hi :)

Überladende Methoden sind ja leider auch nicht möglich, da Erbklasse ja nicht über den Typ von Eineklasse unterscheidbar ist(umgekehrt natürlich schon).

Das Ganze riecht ja ziemlich nach Initialisierung. Kannst du die Methode vielleicht zu einer Methode von Eineklasse machen, und sie dann in Erbklasse mittels 'override;' ergänzen(+inherited-Aufruf nicht vergessen)? Eventuelle Fremdklassen dann dazu nochmal ableiten, um den Code nicht umschreiben zu müssen.+

lg,