Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A COM alapvető különbséget tesz az interfészdefiníciók és azok implementációi között.
Az interfész valójában egy olyan szerződés, amely egy kapcsolódó függvény prototípusainak egy csoportjából áll, amelyeknek a használatát meghatározták, de a megvalósításuk nem. Ezek a függvény-prototípusok egyenértékűek a C++ programozás tiszta virtuális alaposztályaival. A felületdefiníció meghatározza az interfész tagfüggvényeit, az úgynevezett metódusokat, a visszatérési típusokat, a paraméterek számát és típusait, valamint azt, hogy mit kell tenniük. Az illesztőhöz nincs implementáció társítva.
Az felület implementálási az a kód, amelyet a programozó a felületdefinícióban megadott műveletek végrehajtásához biztosít. A COM-kódtárak tartalmazzák azoknak a felületeknek a implementációit, amelyeket a programozók használhatnak egy objektumalapú alkalmazásban. A programozók azonban szabadon figyelmen kívül hagyhatják ezeket a megvalósításokat, és megírhatják sajátjukat. Az illesztő implementációt egy objektumhoz kell társítani az objektum egy példányának létrehozásakor, és az implementáció biztosítja az objektum által kínált szolgáltatásokat.
Egy IStack nevű hipotetikus felület például két metódust definiálhat, a Leküldés és a Pop nevet, amelyek megadják, hogy a Pop metódusra irányuló egymást követő hívások fordított sorrendben adják vissza a korábban a Push metódusnak átadott értékeket. Ez az interfészdefiníció nem határozza meg, hogy a függvények hogyan legyenek implementálva a kódban. Az interfész implementálásához az egyik programozó tömbként implementálhatja a vermet, és úgy implementálhatja a Push és Pop metódusokat, hogy hozzáférhessen a tömbhöz, míg egy másik programozó egy csatolt listát használhat, és ennek megfelelően implementálná a metódusokat. A Leküldéses és pop metódusok adott implementációitól függetlenül az IStack-felületre mutató mutató memórián belüli ábrázolását, és így az ügyfél általi használatát teljes mértékben az interfészdefiníció határozza meg.
Az egyszerű objektumok csak egyetlen felületet támogatnak. A bonyolultabb objektumok, például a beágyazható objektumok általában több felületet támogatnak. Az ügyfelek csak az egyik interfészére mutató mutatón keresztül férhetnek hozzá a COM-objektumokhoz, ami lehetővé teszi, hogy az ügyfél meghívja az adott felületet alkotó metódusokat. Ezek a módszerek határozzák meg, hogy az ügyfél hogyan használhatja az objektum adatait.
Az interfészek egy objektum és ügyfelei közötti szerződést határoznak meg. A szerződés meghatározza az egyes interfészekhez társítandó metódusokat, valamint azt, hogy az egyes metódusok viselkedésének milyennek kell lennie a bemenet és a kimenet szempontjából. A szerződés általában nem határozza meg, hogyan kell implementálni a metódusokat egy felületen. A szerződés másik fontos eleme, hogy ha egy objektum támogatja az interfészt, valamilyen módon támogatnia kell az interfész összes metódusát. Nem minden implementálási módszernek kell valamit tennie. Ha egy objektum nem támogatja a metódus által sugallt függvényt, annak megvalósítása lehet egyszerű visszatérés, vagy egy értelmes hibaüzenet visszaadása – de a metódusnak léteznie kell.
Kapcsolódó témakörök