O modelo de objeto componente

Traduções deste artigo Traduções deste artigo
ID do artigo: 104140 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

O modelo de objeto componente é uma especificação que descreve o processo de comunicação por meio de interfaces, obtendo acesso a interfaces através do método de QueryInterface, determinar o tempo de vida ponteiro através de contagem, de referência e objetos re-using por meio de agregação.

Mais Informações

Objeto

Um objeto é um item no sistema que expõe interfaces para manipular os dados ou propriedades do objeto. Um objeto é criado, direta ou indiretamente chamando a CoCreateInstance() aplicativo interface de programação (API), que por sua vez cria uma nova instância do objeto e retorna um ponteiro para uma interface solicitada. Para obter mais detalhes, consulte páginas 93 e 94 do "OLE 2.0 especificação de design."

Interfaces

Uma interface é um grupo de funções relacionadas. A comunicação entre dois objetos em um sistema ocorre chamando as funções em uma interface através de um ponteiro para essa interface. Um ponteiro de interface originalmente é obtido no momento que o objeto é criado.

Um bom exemplo de uma interface é uma janela que oferece suporte a arrastar e soltar. A janela expõe uma interface com métodos que podem ser usados durante a arrastar e soltar. O objeto arrastado pôde se comunicar com a janela através desta interface. Como uma interface pode ser semelhante a seguinte:
   interface IDropTarget : IUnknown {
       virtual HRESULT DragEnter() = 0; // Mouse entered the window.
       virtual HRESULT DragOver()  = 0; // Called each mouse move.
       virtual HRESULT DragLeave() = 0; // Mouse left the window.
       virtual HRESULT Drop()      = 0; // Item dropped on the window.
       };
				
para obter mais informações sobre interfaces, consulte páginas 57-60 do "OLE 2.0 especificação de design."

IUnknown

Todas as interfaces usadas no modelo de objeto de componente são derivadas de uma interface base chamada IUnknown. Os métodos contidos IUnknown estão relacionados como eles tratam de manutenção de objeto. A interface IUnknown é definida como:
   interface IUnknown {
       virtual HRESULT QueryInterface( REFIID, VOID FAR *) = 0;
       virtual ULONG   AddRef() = 0;
       virtual ULONG   Release() = 0;
   };
				
IUnknown::QueryInterface é usada para negociação de interface. Outros métodos são usados para contagem para controlar a vida do objeto de referência.

Mais informações sobre a interface IUnknown podem ser encontradas nas páginas 81-83 do "OLE 2.0 especificação de design."

Negociação de interface

Dado um ponteiro para uma determinada interface, um objeto pode ser consultado para outra interface. Isso é feito chamando o método QueryInterface() em uma interface. O código a seguir demonstra a consultar a interface IOleObject:
   // Assume that a pointer to an arbitrary interface, pint,
   // exists.

   LPOLEOBJECT pOleObject;
   HRESULT hErr;

   // Query the interface.
   hErr = pint->QueryInterface(IID_IOleObject, (LPVOID FAR *)
                                               &pOleObject);

   if (hErr == NOERROR)
       // Object supports this IOleObject. The IOleObject
       // methods can now be called through pOleObject.
   else
       // Object does not support IOleObject.
				

Contagem de referência

Tempo de vida interface é controlado pela contagem de referência. Para incrementar a contagem de referência em uma interface, chame o método AddRef(). Para diminuir a contagem de referência em uma interface, chame o método Release(). Depois de contagem de referência da interface vai para zero, o ponteiro para a interface não é válido. Se a contagem de referência em todas as interfaces de um objeto for zero, em seguida, o objeto pode ser liberado porque não há qualquer ponteiros para o objeto.

Mais informações sobre contagem de referência podem ser encontradas nas páginas 83 e 84 do "OLE 2.0 especificação de design."

Agregação

Agregação é a capacidade de um objeto para ser reutilizadas ou estendido dinamicamente, sem precisar recompilar o código de objeto original. Para obter mais informações sobre o processo de agregação, consulte o "OLE 2.0 Design Specification," páginas 61-63.

Propriedades

ID do artigo: 104140 - Última revisão: quarta-feira, 3 de dezembro de 2003 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft OLE 2.0
  • Microsoft OLE 4.0 nas seguintes plataformas
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows NT 4.0
    • Microsoft Windows 95
    • the operating system: Microsoft Windows 2000
Palavras-chave: 
kbmt KB104140 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 104140

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com