Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
18. Jul 2014
Nö.
Denn was ist, wenn jemand nicht will, daß das Objekt auch alle Vorfahren der supporteten Interfaces supported?
Delphi hat nunmal eine strenge Typsicherheit und sowas würde das total aufweichen,
was dann schnell mal Probleme mit überladenen Methoden ergibt, da am Ende dann jede Interface-Variable wie IInterface aussieht.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
17. Jul 2014
Auch für Delphi ist das "möglich", aber man muß da etwas aufpassen und in den zweiten, dritten und x-ten Vererbungslinien, neben der Hauptvererbungslinie, sind bestimmte Dinge nicht mehr möglich.
In dem neuen kombinierten Typen ist dann (intern) nur die erste Vererbungslinie wirklich vererbt und alle anderen Felder/Funktion sind praktisch in den neuen Typen reinkopiert. (so wie bei den...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
17. Jul 2014
Schlimm ist ja, daß selbst ein Singlepasscompiler, wie Delphi, theoretisch Mehrfachvererbung anbieten könnte,
also rein von den "sichtbaren" Schnittstellen, welche der Programmierer sieht. (vor dem Compilieren)
Man würde einfach nur beim neuen "kombinierten" Objekt/Interface die direkten Schnittstellen der Vorfahren nochmals durch den Compiler jagen und dabei die bekannten Fehlermeldungen...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
17. Jul 2014
Also grundsätzlich arbeite ich dann immer mit dem Typen, welcher am Meisten benötigt wird und der Rest wird gecastet.
Wenn kurz hintereinander mehrfach auf das andere Interface zugegriffen wird, dann wird in einer Temp-Variable kurz zwischengespeichert. (oder im extremen Notfall auch mal ein WITH)
Aber du kannst den Cast auch intern machen.
s := myMessgerät.Livedaten.getTemperatur.toString;...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
17. Jul 2014
Interfaces lassen sich inzwischen (fast) wie Objekte casten.
- harte Casts sind zwar verboten, da unterschiedliche Interfaces auch unterschiedliche Referenzzeiger (Pointer-Adressen) besitzen,
im gegensatz zu Klassen-Typcasts, welche alle die selbe Referenz (Adresse) besitzen.
- aber soft-casts (AS) sind erlaubt
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
17. Jul 2014
Zusammenführen (Mehrfachvererbung) ist nunmal grundsätzlich nirgendwo möglich.
Aber es verbietet keiner einem TMessgerät die beiden Interfaces zu implementieren, selbst wenn sie von einem Vorfahren abgeleitet sind.
Vererbung bei Interfaces würde ich persönlich aber eh nur zur Versionierung verwenden.
Die neue Version implementiert die alten Schnittstellen (also erbt sie Diese einfach)...