Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O COM faz uma distinção fundamental entre as definições de interface e suas implementações.
Um de interface é, na verdade, um contrato que consiste em um grupo de protótipos de função relacionados cujo uso é definido, mas cuja implementação não é. Esses protótipos de função são equivalentes a classes base virtuais puras na programação C++. Uma definição de interface especifica as funções membro da interface, chamadas métodos, seus tipos de retorno, o número e os tipos de seus parâmetros e o que eles devem fazer. Não há nenhuma implementação associada a uma interface.
Uma implementação de interface é o código que um programador fornece para executar as ações especificadas em uma definição de interface. Implementações de muitas das interfaces que um programador pode usar em um aplicativo baseado em objeto são incluídas nas bibliotecas COM. No entanto, os programadores são livres para ignorar essas implementações e escrever suas próprias. Uma implementação de interface deve ser associada a um objeto quando uma instância desse objeto é criada e a implementação fornece os serviços que o objeto oferece.
Por exemplo, uma interface hipotética chamada IStack pode definir dois métodos, chamados Push e Pop, especificando que chamadas sucessivas para o método Pop retornam, em ordem inversa, valores passados anteriormente para o método Push. Essa definição de interface não especificaria como as funções devem ser implementadas no código. Ao implementar a interface, um programador pode implementar a pilha como uma matriz e implementar os métodos Push e Pop de modo a acessar essa matriz, enquanto outro programador pode usar uma lista vinculada e implementar os métodos adequadamente. Independentemente de uma implementação específica dos métodos Push e Pop, a representação na memória de um ponteiro para uma interface IStack e, portanto, seu uso por um cliente, é completamente determinada pela definição da interface.
Objetos simples dão suporte apenas a uma única interface. Objetos mais complicados, como objetos inseriveis, normalmente dão suporte a várias interfaces. Os clientes têm acesso a um objeto COM apenas por meio de um ponteiro para uma de suas interfaces, o que, por sua vez, permite que o cliente chame qualquer um dos métodos que compõem essa interface. Esses métodos determinam como um cliente pode usar os dados do objeto.
As interfaces definem um contrato entre um objeto e seus clientes. O contrato especifica os métodos que devem ser associados a cada interface e qual deve ser o comportamento de cada um dos métodos em termos de entrada e saída. O contrato geralmente não define como implementar os métodos em uma interface. Outro aspecto importante do contrato é que, se um objeto der suporte a uma interface, ele deverá dar suporte a todos os métodos dessa interface de alguma forma. Nem todos os métodos em uma implementação precisam fazer algo. Se um objeto não der suporte à função implícita por um método, sua implementação poderá ser um retorno simples ou talvez o retorno de uma mensagem de erro significativa, mas os métodos devem existir.
Tópicos relacionados