Auf deutsch anzeigenDisplay in English

 

:: Home  :: Sitemap  :: Downloads  :: Shop  :: Impressum  :: Newsletter

:: Produkte  :: Support  :: dataweb

Support

:: NEWS :: Mit NShape können Entwickler MS Visio-ähnliche Funktionalität in Ihre Anwendungen integrieren. NShape ist Open Source und speziell für industrielle Anwendungen gemacht. Mehr...

Support-Optionen ::
Häufig gestellte Fragen ::
Produktdokumentation ::
Ergänzendes Material ::
Diskussions-Forum ::
NShape Feedback ::
Partner ::
Service-Releases ::
Artikel ::
Datenbank- und SQL-Links ::
ISAPI-Links ::

Delphi Interfaces

Dieser Artikel beinhaltet eine kleine FAQ zu Interfaces in Delphi sowie eine Sammlung von nützlichen Resourcen zum Thema.

Warum soll ich mich mit dem Thema Interfaces beschäftigen?

Interfaces nehmen in der Software-Entwicklung eine immer wichtigere Stellung ein. Java und COM sind zwei Technolgieen die beide sehr stark auf Interfaces aufbauen, wenn auch auf völlig unterschiedliche Weise. Auch in anderen Programmiersprachen halten Interfaces immer mehr Einzug, C# z.B. hat zwar ein Klassen-basiertes Ableitungskonzept arbeitet aber trotzdem auch intensiv mit Interfaces.
In Delphi wurde die Unterstützung für Interfaces in der Version 4 eingeführt und seitdem ständig verbessert. Immer mehr VCL-Komponenten benutzen Interfaces, z.B. das ToolAPI, Datenbank-Komponenten und ganz besonders start der neue WebSnap-Framework in Delphi 6. Auch für das Design Ihrer Anwendungen können Interfaces sehr nützlich sein.

Wo sollte ich in Delphi Interfaces einsetzen?

Es gibt zwei Haupt-Anwendungsbereiche: Erstens, wenn Sie mit COM zu tun haben, sei es Server- oder Client-seitig, lassen sich interfaces gar nicht vermeiden. COM beruht darauf, und sowohl beim Import von Typ-Bibliotheken als auch beim Erstellen neuer COM-Objekt generieren die Wizards ein oder mehrere Interfaces.
Der zweite Anwendungsbereich liegt im Design Ihrer Anwendung. Wo immer Sie eine möglichst klareTrennung zwischen zwei Komponenten erreichen wollen, können Sie ein Interface einsetzen. Interfaces erlauben auch eine abgemilderte Form der Mehrfachvererbung. Eine Klasse kann zwar nur von einer Basisklasse aber zusätzlich noch von beliebig vielen Interfaces abgeleitet werden.

Ich habe von zwei verschiedenen Arten von Vererbung gehört, was hat es damit auf sich?

Im Software-Engineering unterscheidet man zwischen der interface inheritance und der implementation inheritance. Manchmal spricht man auch von der Vererbung auf Typ-Ebene und auf Klassen-Ebene. Gemeint ist dabei, dass beim Ableiten einer Klasse manchmal der Polymorphie-Gedanke im Vordergrund steht, d.h. die Umsetzung einer "is a"/"ist ein" Beziehung, die es erlaubt alle abgeleiteten Klassen in gewisser Weise gleich zu behandeln. In anderen Fällen ist der Aspekt der Wiederverwendung wichtiger, also die Benutzung schon vorhandenen Codes und damit auch schon vorhandener Variablen. Interfaces ermöglichen ausschließlich die erste also die interface inheritance und sind somit "sauber". Die gewöhnliche Delphi-Ableitung von einer Basis-Klasse vereint beide Arten von Vererbung.

Was ist neu an der Interface-Unterstützung in Delphi 6?

Durch die Kompatibilität mit Kylix wurden in Delphi 6 die letzten COM-Reste in der Umsetzung von Interfaces beseitigt. Interfaces sind jetzt eine reine Delphi-Spracherweitung und in der System-Unit implementiert ähnlich übrigens wie Kylix. Neben dem COM-basierten Namen für das Wurzel-Interface IUnknown kann jetzt auch der Delphi-eigene Name IInterface benutzt werden.
Wichtiger noch ist die Unterstützung des Objekt-Inspektors für Eigenschaften vom Typ Interface. Wenn eine Klasse eine solche Eigenschaft als published deklariert hat, zeigt der OI ähnlich wie bisher schon mit Klassen eine Liste aller in Frage kommenden Komponenten an. Dadurch kann das Verschalten von Komponenten jetzt auch auf Interface-Basis geschehen.

Was bedeutet das Schlagwort "Delegation" im Zusammenhang mit Interfaces?

Wenn eine Klasse von einem Interface erbt, verpflichtet sie sich, die Methoden des Interfaces zu implementieren. Manchmal kann sie dazu auf eine andere Klasse zurückgreifen, die die nötige Logik enthält und über die entsprechenden Methoden anbietet. In diesen Fall enthält die ursprüngliche Klasse eine Referenz auf die Implementierungs-Klasse oder das infragekommende Interface dieser Klasse und zeigt dem Compiler mit der Anweisung implements an, dass es seine Implementierung an diese andere Klasse delegiert.

Wo finde ich weitere Informationen zum Thema Interfaces in Delphi?

Eine wichtige Quelle sind alle Bücher, Artikel usw. zum Thema COM in Delphi, weil hier Interfaces so wichtig sind und deshalb ausführlich besprochen werden. Z.B: Andreas Kosch: "COM/DCOM/C+ mit Delphi" Natürlich sind diese Resourcen etwas einseitig und weniger auf die Implementierung von Interfaces und die Bedeutung im Objektorientierten Design ausgerichtet. In dieser Richtung ist der Artikel von Max Kleiner: "Von Angesicht zu Angesicht" in "Der Entwickler" 5.2001 eine gute Einführung. Ein guter zweiteiliger Artikel auf Englisch ist in der Borland Community zu finden. Auch Bücher über Software-Design sind oft eine gute Quelle, z.B. enthält Max Kleiner: "UML mit Delphi" ein Kapitel zum Thema. Schließlich finden sich in praktisch allen aktuellen Delphi-Büchern Erläuterungen zu Interfaces so z.B. auch in Ray Lischner: "Delphi in a Nutshell"

Peter Pohmann ist Trainer, Speaker, Coach und Autor bei dataweb und hat sich auf Delphi, COM und Datenbank-Anwendungen spezialisiert. Er freut sich über Ihre Kommentare zu diesem Artikel: peterDOTpohmannADDdataweb.de