Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
COM unterscheidet grundlegend zwischen Schnittstellendefinitionen und deren Implementierungen.
Eine Schnittstelle ist tatsächlich ein Vertrag, der aus einer Gruppe verwandter Funktionsprototypen besteht, deren Verwendung definiert ist, deren Implementierung jedoch nicht erfolgt. Diese Funktionsprototypen entsprechen reinen virtuellen Basisklassen in der C++-Programmierung. Eine Schnittstellendefinition gibt die Memberfunktionen der Schnittstelle an, die Methodengenannt werden, deren Rückgabetypen, die Anzahl und die Typen ihrer Parameter und was sie tun müssen. Es ist keine Implementierung mit einer Schnittstelle verknüpft.
Eine Schnittstellenimplementierung ist der Code, den ein Programmierer bereitstellt, um die in einer Schnittstellendefinition angegebenen Aktionen auszuführen. Implementierungen vieler Schnittstellen, die ein Programmierer in einer objektbasierten Anwendung verwenden kann, sind in den COM-Bibliotheken enthalten. Programmierer können diese Implementierungen jedoch ignorieren und ihre eigenen schreiben. Eine Schnittstellenimplementierung soll einem Objekt zugeordnet werden, wenn eine Instanz dieses Objekts erstellt wird, und die Implementierung stellt die Dienste bereit, die das Objekt anbietet.
Eine hypothetische Schnittstelle mit dem Namen "IStack" kann z. B. zwei Methoden namens "Push" und "Pop" definieren, die angeben, dass aufeinander folgende Aufrufe der Pop-Methode in umgekehrter Reihenfolge an die Push-Methode übergebene Werte zurückgeben. Diese Schnittstellendefinition würde nicht angeben, wie die Funktionen im Code implementiert werden sollen. Bei der Implementierung der Schnittstelle kann ein Programmierer den Stapel als Array implementieren und die Push- und Pop-Methoden so implementieren, dass auf dieses Array zugegriffen wird, während ein anderer Programmierer möglicherweise eine verknüpfte Liste verwendet und die Methoden entsprechend implementiert. Unabhängig von einer bestimmten Implementierung der Push- und Pop-Methoden wird die Speicherdarstellung eines Zeigers auf eine IStack-Schnittstelle und daher durch die Verwendung durch einen Client vollständig durch die Schnittstellendefinition bestimmt.
Einfache Objekte unterstützen nur eine einzige Schnittstelle. Komplexere Objekte, z. B. einbettbare Objekte, unterstützen in der Regel mehrere Schnittstellen. Clients haben Zugriff auf ein COM-Objekt nur über einen Zeiger auf eine seiner Schnittstellen, wodurch der Client wiederum eine der Methoden aufrufen kann, die diese Schnittstelle bilden. Diese Methoden bestimmen, wie ein Client die Daten des Objekts verwenden kann.
Schnittstellen definieren einen Vertrag zwischen einem Objekt und seinen Clients. Der Vertrag gibt die Methoden an, die den einzelnen Schnittstellen zugeordnet sein müssen, und das Verhalten der einzelnen Methoden in Bezug auf Eingabe und Ausgabe. Der Vertrag definiert im Allgemeinen nicht, wie die Methoden in einer Schnittstelle implementiert werden. Ein weiterer wichtiger Aspekt des Vertrags ist, dass, wenn ein Objekt eine Schnittstelle unterstützt, alle Methoden dieser Schnittstelle auf irgendeine Weise unterstützen muss. Nicht alle Methoden in einer Implementierung müssen etwas tun. Wenn ein Objekt die von einer Methode implizierte Funktion nicht unterstützt, kann es sich bei der Implementierung um eine einfache Rückgabe oder um die Rückgabe einer sinnvollen Fehlermeldung handeln, aber die Methoden müssen vorhanden sein.
Verwandte Themen