AW: Klassen mit unterschiedlichen Parents verwursten
Die Zwischenklasse ist leider auch nicht möglich, weil TFooClass1 und TFooClass2 wiederum Basisklassen bilden, von denen an anderer Stelle Ableitungen stattfinden (nennen wir sie TFooClass1ZweigA und TFooClass2ZweigA (diese Ableitungen haben aber ihrerseits nichts mit Funktion1/Funktion2 zu tun). Die Funktion1/Funktion2 soll nur (gemeinsam nutzbar) in TFooClass1ZweigB bzw. TFooClass2ZweigB wenn möglich.
|
AW: Klassen mit unterschiedlichen Parents verwursten
Dann bleibt nur noch das Interface. Oder eben die Überlegung ob dein Klassenmodell in sich noch passt.
Ah ne... eine GEschichte noch: Ich kenne die Hintergründe nicht, aber du könntest ggf. das gemeinsame Verhalten in einer weiteren Klasse abbilden, die dann von den entsprechenden Klassen einfach genutzt wird (nennt sich Komposition). Grüße |
AW: Klassen mit unterschiedlichen Parents verwursten
Ich bekomme das Gefühl, Du solltest Dein Klassenmodell vielleicht noch einmal überdenken (oder ich verstehe Dich völlig falsch, das kann natürlich auch sein) :gruebel:
|
AW: Klassen mit unterschiedlichen Parents verwursten
Ich würde auch mal vermuten, dass man das in Delphi über Interfaces lösen sollte.
Der Fragesteller will wahrscheinlich etwas, was man in C++ ungefähr so lösen würde:
Code:
Also (ggf. Mehrfach-) Vererbung von einen Generic. Geht das in Delphi ?
template<typename T>
class Foo : public T { // Irgendeine Implementierung }; |
AW: Klassen mit unterschiedlichen Parents verwursten
Nur geht sowas in den Delphi-Generics leider nicht. :cry:
|
AW: Klassen mit unterschiedlichen Parents verwursten
Zitat:
|
AW: Klassen mit unterschiedlichen Parents verwursten
Also ich mache nochmal ein (nur zur Verdeutlichung) Beispiel aus dem Fahrzeugbereich:
TFooBase stellt die Basis dar mit Eigenschaften wie z.B. 4 Räder. TFooClassBenzin => class(TFooBase) mit zusätzlichem Objekt Benzinmotor TFooClassElektro => class(TFooBase) mit zusätzlichem Objekt Elektromotor TFooClassKFZBenzin => class(TFooClassBenzin ) Basisklasse für z.B. KFZ mit Benzinmotor TFooClassKFZElektro => class(TFooClassElektro) Basisklasse für z.B. KFZ mit Elektromotor TFooClassLKW => class(TFooClassBenzin ) Basisklasse für z.B. LKW mit Benzinmotor :-) TFooClassKFZBenzin + TFooClassKFZElektro sollen jetzt noch die zusätzlichen gemeinsam nutzbaren Funktionen Funktion1/Funktion2 für z.B. ausschliesslich den KFZ-Bereich. Eine Zwischenklasse KFZ zwischen TFooBase und TFooClassBenzin/TFooClassElektro geht hier nicht, weil die KFZ-Funktionen direkt schon den Benzin bzw. Elektromotor ansprechen müssen. Natürlich würde ich einen Fahrzeugbereich etwas anders abbilden, aber so wäre mein momentanes Problem strukturiert. Hoffe, es ist nun etwas klarer. |
AW: Klassen mit unterschiedlichen Parents verwursten
Ich denke, das wäre in Delphi ein klassischer Fall für den Einsatz von Interfaces. So musst Du im späteren Einsatz nicht ständig die Objekte casten.
Man erreicht auch eine losere Bindung der einzelnen Klassen. Allerdings ist ein gewisser Mehraufwand durch die Deklaration der Schnittstellen notwendig und die Speicherverwaltung ist im Projekt anders als mit reinen Objekten zu organisieren. |
AW: Klassen mit unterschiedlichen Parents verwursten
Danke für die Auskünfte.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz