AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Properties in Interfaces

Ein Thema von Helmi · begonnen am 5. Okt 2017 · letzter Beitrag vom 10. Okt 2017
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#1

AW: Properties in Interfaces

  Alt 5. Okt 2017, 11:07
Leg einfach den Getter und den Setter, den Du im Interface refernzierst, in der entsprechenden Klasse public an.
Warum jetzt gerade public?

Implementierungen von Interfaces können sogar private sein, solange sie nicht auch in abgeleiteten Klassen benötigt werden. Eigentlich ist das auch vorzuziehen, da diese Methoden von außen in der Regel nur über das Interface angesprochen werden sollen und nicht über die Klasseninstanz.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Properties in Interfaces

  Alt 5. Okt 2017, 11:12
Hallo,

also einfach functions und procedures anlegen und die dann im Host aufrufen?
Aber wie reagier ich in der BPL darauf?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.913 Beiträge
 
Delphi 12 Athens
 
#3

AW: Properties in Interfaces

  Alt 5. Okt 2017, 11:56
also einfach functions und procedures anlegen und die dann im Host aufrufen?
Aber wie reagier ich in der BPL darauf?
Wir machen das (bei DLLs, aber kommt auf das gleiche raus) so, dass wir eine Schnittstelle initialisieren, die dann in beide Richtungen Interfaces durchreicht.

Konkret gibt es im IHostInterface ein RegisterClient, das wiederum ein Interface weitergibt. Auf die Weise kann die Anwendung in beide Richtungen kommunizieren. Wir machen das dann so, dass wir in einer Methode GetInterface die GUID des benötigten Interfaces anfragen und dann die entsprechende Implementierung als Instanz zurückbekommen. So können wir über eine schlanke Schnittstelle sehr viel Funktionalität durchleiten.

Wir würden also konkret vom Host aus am Client z.B. einen ITimerManager anfragen, der dann z.B. eine Property TimerEnabled hat.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Properties in Interfaces

  Alt 5. Okt 2017, 12:55
also einfach functions und procedures anlegen und die dann im Host aufrufen?
Aber wie reagier ich in der BPL darauf?
Wir machen das (bei DLLs, aber kommt auf das gleiche raus) so, dass wir eine Schnittstelle initialisieren, die dann in beide Richtungen Interfaces durchreicht.

Konkret gibt es im IHostInterface ein RegisterClient, das wiederum ein Interface weitergibt. Auf die Weise kann die Anwendung in beide Richtungen kommunizieren. Wir machen das dann so, dass wir in einer Methode GetInterface die GUID des benötigten Interfaces anfragen und dann die entsprechende Implementierung als Instanz zurückbekommen. So können wir über eine schlanke Schnittstelle sehr viel Funktionalität durchleiten.

Wir würden also konkret vom Host aus am Client z.B. einen ITimerManager anfragen, der dann z.B. eine Property TimerEnabled hat.
Könntest du mir ein kleines Beispiel basteln dafür?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.913 Beiträge
 
Delphi 12 Athens
 
#5

AW: Properties in Interfaces

  Alt 6. Okt 2017, 08:13
Das hatte ich schon länger vor... ich weiß nicht, ob ich in den nächsten Tagen dazu komme.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.903 Beiträge
 
Delphi 12 Athens
 
#6

AW: Properties in Interfaces

  Alt 5. Okt 2017, 11:16
Implementierungen von Interfaces können sogar private sein
Ui, das war mir neu. Funktioniert aber, wie ich gerade feststelle.
Eigentlich ist das auch vorzuziehen, da diese Methoden von außen in der Regel nur über das Interface angesprochen werden sollen und nicht über die Klasseninstanz.
Das leuchtet ein. Wieder was gelernt.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Properties in Interfaces

  Alt 7. Okt 2017, 10:58
Implementierungen von Interfaces können sogar private sein...
Ich setzte die "sogar" immer strict private...

2 Gründe:
  1. Ich nutze sonst NIE strict private also ist es für mich ein "flag" die Methoden kommen aus einem Interface...
    Bedeutet, wenn meine Klasse zwei oder mehr Interfaces Implementiert, gibt es auch für jedes Interface eine eigene strict private Region.
  2. Ich komme auch nicht auf die Idee innerhalb der Unit diese Methoden zu benutzen.

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.913 Beiträge
 
Delphi 12 Athens
 
#8

AW: Properties in Interfaces

  Alt 9. Okt 2017, 17:04
Ich mache die eher protected, aus dem einfachen Grund, dass sie dann in abgeleiteten Klassen auch erreichbar sind, nicht aber wie schon gesagt wurde von außen, wenn jemand versucht die Klassenreferenz statt der Interfacereferenz zu nutzen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Properties in Interfaces

  Alt 10. Okt 2017, 09:17
Ich mache immer ein Property und nicht nur Getter und Setter - weil ich zu faul bin
Wenn ich ein property habe, dann kann das der MMX verwalten und ich muss es nicht tun.

Methoden die auf interface liegen machen wir in der Regel public, Getter und setter strict private.
An sich ist es aber relativ egal, weil die Klasse im Produktivcode eh keiner kennen darf sondern nur das interface.

Im übrigen finde ich es aber schlecht wenn solche Methoden proteced sind, damit Nachfahren diese kennen. Öffentliche Methoden sollen nie virtuell sein.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#10

AW: Properties in Interfaces

  Alt 10. Okt 2017, 09:22
Im übrigen finde ich es aber schlecht wenn solche Methoden proteced sind, damit Nachfahren diese kennen. Öffentliche Methoden sollen nie virtuell sein.
Protected ist nicht gleich Virtuell...

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz