INTERFACES La base de todo el Módelo de objetos Componentes es, el concepto de interfaz. Sabemos que una de las técnicas fundamentales de la programación consiste en denegar al programador el acceso a la implementación de un recurso; de esta forma lo protegemos de los cambios que ocurrirán muy probablemente en la misma. En COM nunca podremos trabajar con un objeto COM, ni con el puntero al objeto. Por el contrario, con lo que podrá contar es con punteros a interfaces.
Un interfaz define un conjunto de servicios ofrecidos por un objeto. Físicamente, le corresponde una tabla de punteros a métodos.
Delphi trata los interfaces como tipos de datos especiales, que se declaran
mediante la palabra clave interface. Cada nombre de interfaz comienza con
la letra I, del mismo modo que los nombres de clases de Borland comienzan
con T. Un interfaz en Delphi podría ser algo así:
Type IunKnow= interface['{00000000-0000-C000-000000000046}'] Function QueryInterface(const IID: TGUID;out OBJ):Integer; stdcall; Function _AddRef:Integer;stdcall; Function _Release:Integer;stdcall; End; |
A continuación de la palabra Interface parece que hay un número hexadecimal. En realidad, se trata de un entero de 128 bits que identifica a la interfaz. Podemos prescindir de este número, pero en tal caso solamente podríamos utilizar la interfaz dentro de la aplicación que la define.
A este tipo de número se los conoce como GUIDs , o identificadores únicos globales. Si creamos un interfaz debemos asignarle un número único. Pero los GUIDs también pueden generarse localmente, por medio de una función definida en el API de windows, CoCreateGuid. La mayoría de las veces, Delphi genera por nosotros los identificadores de interfaces y otros tipos de GUID utilizados por COM. Pero si en algún momento necesita uno de estos números, podemos pulsar Ctrl+Shift+G en el editor de delphi.
COM es un módelo de objetos diseñado por Microsoft para interactuar entre los componentes y aplicaciones. El aspecto importante de COM es que habilita comunicación entre los clientes y servidores a través de las interfaces. Com definde la creación de objetos y comunicación entre los objetos. Pueden escribirse objetos COM en idiomas diferentes de programación, que corra en espacios de proceso diferente y en plataformas diferentes.
Partes de una aplicación COM:
. Servidor COM
.- Es el exe, dll u ocx.
. Interface COM
.- es la manera en la que un obejto nos expone sus servicios para los
clientes. Un objeto COM tiene métodos y propiedades.
Los objetos residen en las
aplicaciones servidoras y un objeto COM puede utilizar
uno o más interfaces.
. Cliente .-
el código que llama a las interfaces.
Tenemos una clase que implementa uno o más interface. Este tipo de clase es CoClass. Este tipo de clase son instanciadas por un tipo especial de objeto llamado Class Factory. Siempre que los servicios de un objeto sean pedidos por un cliente, una class factory crea y registra la instancia del objeto para ese cliente.