Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Com rozlišuje základní rozdíl mezi definicemi rozhraní a jejich implementacemi.
Rozhraní je ve skutečnosti kontrakt, který se skládá ze skupiny souvisejících prototypů funkcí, jejichž použití je definováno, ale jehož implementace není. Tyto prototypy funkcí jsou ekvivalentní čistě virtuálním základním třídám v programování jazyka C++. Definice rozhraní určuje členské funkce rozhraní, které se nazývají metody, jejich návratové typy, počet a typy jejich parametrů a co musí dělat. K rozhraní není přidružena žádná implementace.
Implementace rozhraní je kód, který programátor poskytuje k provádění akcí zadaných v definici rozhraní. Implementace mnoha rozhraní, která může programátor použít v objektové aplikaci, jsou zahrnuty do knihoven COM. Programátoři ale mohou tyto implementace ignorovat a psát vlastní. Implementace rozhraní je přidružena k objektu při vytvoření instance tohoto objektu a implementace poskytuje služby, které objekt nabízí.
Například hypotetické rozhraní s názvem IStack může definovat dvě metody s názvem Push a Pop, které určují, že následné volání metody Pop vrací hodnoty v obráceném pořadí dříve předány metodě Push. Tato definice rozhraní by nespecifikovala způsob implementace funkcí v kódu. Při implementaci rozhraní může jeden programátor implementovat zásobník jako pole a implementovat metody Push and Pop takovým způsobem, jako je přístup k matici, zatímco jiný programátor může použít propojený seznam a implementovat metody odpovídajícím způsobem. Bez ohledu na konkrétní implementaci metod Push a Pop je reprezentace ukazatele na rozhraní IStack v paměti, a proto jeho použití klientem, je zcela určeno definicí rozhraní.
Jednoduché objekty podporují pouze jedno rozhraní. Složitější objekty, jako jsou vložené objekty, obvykle podporují několik rozhraní. Klienti mají přístup k objektu COM pouze prostřednictvím ukazatele na jedno z jeho rozhraní, což klientovi umožňuje volat některou z metod, které tvoří toto rozhraní. Tyto metody určují, jak může klient používat data objektu.
Rozhraní definují kontrakt mezi objektem a jeho klienty. Kontrakt určuje metody, které musí být přidruženy ke každému rozhraní a jaké chování každé metody musí být z hlediska vstupu a výstupu. Kontrakt obecně nedefinuje, jak implementovat metody v rozhraní. Dalším důležitým aspektem kontraktu je, že pokud objekt podporuje rozhraní, musí nějakým způsobem podporovat všechny metody tohoto rozhraní. Ne všechny metody v implementaci musí něco udělat. Pokud objekt nepodporuje funkci odvozenou metodou, může být její implementace jednoduchým návratem nebo možná návratem smysluplné chybové zprávy , ale metody musí existovat.
Související témata