1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000
2 Componentes Agenda Introdução Tutorial Casos Práticos –I2S: Reengenharia via COM –IDT: Engenharia usando COM
3 Programação As Grandes Promessas não reinventar a roda –Reutilização –Interoperabilidade Facilidade de Manutenção –Flexibilidade –Evolução
4 Programação Evolução da Programação Linguagem máquina Programação estruturada POO Unidade estrutural ProgramaSubrotinaObjecto Relação com nível anterior _Unidade de Programa delimitada Subrotinas + memória local persistente DependênciasProcessadorLinguagem prog. (bib. suporte)
5 Programação Problemas Identificados Reutilização –Diferenças linguagens de programação –Diferenças entre versões do mesmo compilador –Controlo de versões Interoperabilidade –Diferenças entre compiladores e linkers –Diferenças entre arquitecturas
6 Programação Problemas Identificados (cont.) Flexibilidade –Incompatibilidades entre bibliotecas –Isolamento das funcionalidades –Controlo de versões –Necessidade de recompilação completa da aplicação Evolução –Incompatibilidades entre bibliotecas –Diferenças entre versões do SO & hardware –Necessidade de recompilação completa da aplicação
7 O Que Se Pretende Programação
8 Componentes Conceitos Genéricos Componente –Unidade de execução que encapsula funcionalidades Interface –Ponto de acesso às funcionalidades do componente
9 Componentes Componentes & Interfaces interface IAritBasica { long Adicionar(long iN1, long iN2); long Subtrarir(long iN1, long iN2); long Multiplicar(long iN1, long iN2); long Dividir(long iN1, long iN2); }; interface IAritAvancada { long Potencia(long base, long expoente); }; coclass CoAritmetica { [default] interface IAritBasica; interface IAritAvancada; };
10 Arquitectura Geral Componentes
11 Componentes Vantagens Reutilização Interoperabilidade –Arquitectura (hardware + S.O.) –Linguagem de programação Actualização de componentes sem recompilação da aplicação ou até mesmo sem reinicialização Controlo de versões Encapsulam detalhes de implementação
12 Componentes Modelos de Componentes COM, DCOM, COM+ CORBA Java / RMI
13 COM Introdução Standard binário –Reutilização em grande escala (sem código fonte) –Suporte multi-linguagem Parte integrante do SO Windows DCOM para plataformas não-Windows Auto-activação! Auto-desactivação! (usando ATL/MFC)
14 COM Introdução (cont.) Localização transparente Múltiplas interfaces por objecto Interfaces standard –Persistência; Notificação; Structured storage; etc. Programação com abordagem procedimental (stateless) Serviços –Transacções; Eventos; invocação Off-line; etc.
15 COM Programação de Aplicações Componente –definir um interface utilizando IDL –atribuir CLSID e identificador programático –gerar código proxy/stub –implementar métodos da interface –Tratar de contagem de instancias Servidor –Implementar "class factory" Registar Classes de componentes Cliente –criar instância do objecto e obter ponteiro de interface –invocar métodos
16 COM Programação COM/ATL (Visual Studio) Criar Componentes usando wizard –definir um interface utilizando wizard –implementar métodos da interface VS Regista automaticamente as Classes Cliente –criar instância do objecto e obter ponteiro de interface –invocar métodos
17 Conclusões Componentes