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,
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!