Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Multi-Language Interfaces und Vererbung (https://www.delphipraxis.net/185017-multi-language-interfaces-und-vererbung.html)

Zacherl 8. Mai 2015 01:05

Multi-Language Interfaces und Vererbung
 
Hallo zusammen,

ich schreibe an einer Bibliothek, die ich gerne mit Header Files für mehrere Sprachen (Delphi, C++, etc.) ausliefern möchte. Dazu habe ich sämtliche Klassen als COM Interface implementiert und die entsprechenden Interface Deklarationen in die Header Files gepackt.

Soweit, so gut.

Nun hatte ich vorher im Code aber eine Basisklasse "TBaseDataProvider", welche neben einigen public- auch protected Methoden besitzt, die in den konkreten Implementationen vom User überschrieben werden müssen. Diese abstrakten protected Methoden (genauso wie weitere protected Helper Methoden) sollen bei Möglichkeit aber NICHT von außen zugreifbar sein.

Gibt es irgendeine sinnvolle Möglichkeit oben genanntes zu modellieren (ohne die abstrakte Klasse in jeder Sprache komplett neu zu implementieren)?

Viele Grüße
Zacherl

himitsu 8. Mai 2015 01:58

AW: Multi-Language Interfaces und Vererbung
 
Ein Objekt kann auch mehrere Interfaces implementieren.

Also entweder du implementierst Interfaces für interne und externe Funktionen (natürlich die internen interfaces nicht veröffentlichen :zwinker:) und greifst dann jeweils via AS oder Supports auf das nötige Interface zu

oder du legst die entsprechenden Funktionen in eine andere Klasse und kannst diese dann intern aufrufen.

Zacherl 9. Mai 2015 17:41

AW: Multi-Language Interfaces und Vererbung
 
Aber wie hilft mir das weiter? Ich will ja, dass der User die Basisklasse überschreiben kann, möchte aber gleichzeitig einige Klassen-interne Funktionen bereitstellen, die man in der konkretisierten Klasse verwenden kann, nicht aber von außerhalb.

Ich implementiere die Library übrigens in C++, wobei hier ja sogar "richtige" multiple Inheritance möglich ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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