Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [Interfaces]: Anwendungsbeispiel (https://www.delphipraxis.net/35226-%5Binterfaces%5D-anwendungsbeispiel.html)

Chewie 10. Dez 2004 15:23

Re: [Interfaces]: Anwendungsbeispiel
 
Interfaces machen dann Sinn, wenn du Mehrfachvererbung (zwecks polymorphem Verhalten) nachbilden willst, denn eine Klasse kann in OPascal nur von einer erben, aber beliebig viele Interfaces implementieren.

Edit: Ein Interface kannst du dir als eine abstrakte Klasse ohne Felder, bei der alle Methoden abstrakt sind.

maximov 10. Dez 2004 15:45

Re: [Interfaces]: Anwendungsbeispiel
 
Zitat:

Zitat von mytar
Ich bräuchte ein Beispiel wo ich statt einer normalen Klasse,
besser ein Interface nehmen sollte (eventuelle Code).

zB. für das observer-pattern (Beobachter)! Wenn man das nicht mit interfaces macht, so müsste man es starr in die klassen hierarchie einbauen und fremde objekte könnten nicht als beobachter oder beobachtete fungieren, da sie nicht von der klasse abstammen. Nimmt man jetzt ein Interfaces so können alle objekte, die wollen, diese fähigkeiten implementieren. Man lediglich feststellen, ob das interface implmentiert ist.

Da bieten sich 'tausende' sachen an, die auf den ersten blick garnicht danach aussehen :cyclops:

HeikoDD 10. Dez 2004 17:46

Re: [Interfaces]: Anwendungsbeispiel
 
Delphi-Quellcode:
Type
  ixyz = interface
    [guid]
    procedure tutwat; stdcall;
  end;

TXYZ = Class(TInterfacedObject, IXYZ)
  privat
  protected
  public
    procedure tutwat; stdcall;
end;

Var tmp : ixyz;

ixyz = TXYZ.Create();
ixyz.tutwat;
ich hoffe das beantworte die eigentliche frage ein wenig :)

mytar 10. Dez 2004 18:04

Re: [Interfaces]: Anwendungsbeispiel
 
Ja danke :-D

@maximov: Könntest du dieses Observer-Zeug genauer erklären?

@HeikoDD: Ich weiss wie ich dass ganze deklariere, danke!

Bitte weitere Beispiele, danke! :oops:

mytar 11. Dez 2004 16:34

Re: [Interfaces]: Anwendungsbeispiel
 
*push* :firejump:

maximov 13. Dez 2004 15:17

Re: [Interfaces]: Anwendungsbeispiel
 
Zitat:

Zitat von mytar
@maximov: Könntest du dieses Observer-Zeug genauer erklären? ...

Ein observer ist ein software-muster (pattern):
Zitat:

Observer (Beobachter) - Definiere eine 1-zu-n-Abhängigkeit zwischen Objekten, so dass die Änderung des Zustands eines Objekts dazu führt, dass alle abhängigen Objekte benachrichtigt und automatisch aktualisiert werden.
Dazu könnte man ein interface implementieren, welches die nötigen features abstrakt definiert:
Delphi-Quellcode:
type

  INotifyable = interface
    procedure Notification(const NotifyArg:TNotifyArg);
  end;

  IObserveable = interface
    procedure AddObserver(const aObserver:INotifyable);
    procedure RemoveObserver(const aObserver:INotifyable);
  end;
Jedes object, das INotifyable implemntiert kann sich nun bei dem IObserveable-objekt anmelden und wenn es seinen zustand ändert, dann werden alle Notifications, von allen INotifyable-objekten auf gerufen.

Hätte man hier keine interfaces, so müssten sowohl, die procedure von INotifyable, als auch die von IObserveable, tief in der klassen-hierarchie vergraben sein, damit möglichst viele objekte diese fähigkeit besitzen. Das würde aber zu einer starren klassenabhängigkeit führen, mit der man soweiso immer schon kämpfen muss. Interfaces können also dieses problem auflockern und bieten eine prima möglichkeit 'Quer-Einsteiger-funktionalitäten' umzusetzen :wink:

mytar 14. Dez 2004 16:23

Re: [Interfaces]: Anwendungsbeispiel
 
Könntest du mit der Erklärung noch etwas weiter gehen, wass dann folgen würde.

Was ist eine 1 zu n - Beziehung?

Danke, maximov :-D

mirage228 14. Dez 2004 16:26

Re: [Interfaces]: Anwendungsbeispiel
 
Hi,

ich glaube er meint, dass 1 bis n Objekte als Observer an diesem Objekt hängen und dann über das Interface sich eintragen und über das andere Interface benachrichtigt werden.

mfG
mirage228

phXql 14. Dez 2004 16:33

Re: [Interfaces]: Anwendungsbeispiel
 
Zitat:

Zitat von jbg
Interfaces mit COM oder einfach nur Delphi-Interfaces?

Die Delphi Interfaces eignen sich immer dann, wenn du zwei Units hast, die sich aber beide im interface-Abschnitt brauchen, was ja nicht geht. Dann kann man ein Interface erstellen auf das dann beide Zugreifen, die eine implementierend und die andere nutzend.

das is ja interessant. könntest du mir bitte evtl dazu n bisschen sourcecode geben, wenn du hast?

Jens Schumann 14. Dez 2004 20:52

Re: [Interfaces]: Anwendungsbeispiel
 
Zitat:

Zitat von mirage228
Hi,

ich glaube er meint, dass 1 bis n Objekte als Observer an diesem Objekt hängen und dann über das Interface sich eintragen und über das andere Interface benachrichtigt werden.

mfG
mirage228

Nicht ganz. Das heißt, dass 1 Objekt mehrere als Observer bei diesem einen Objekt angemeldete Objekte benachrichtigt. Oder kurz 1 Objekt verwaltet mehrere Objekte


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 Uhr.
Seite 2 von 3     12 3      

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