Quartas à Tarde no DEI
12 de Abril de 2000
Programação Orientada aos
COMponentes
1
Componentes
Agenda
• Introdução
• Tutorial
• Casos Práticos
– I2S: Reengenharia via COM
– IDT: Engenharia usando COM
2
Programação
As Grandes Promessas
• “não reinventar a roda”
– Reutilização
– Interoperabilidade
• Facilidade de Manutenção
– Flexibilidade
– Evolução
3
Programação
Evolução da Programação
Unidade
estrutural
Relação com
nível anterior
Linguagem
máquina
Programação
estruturada
POO
Programa
Subrotina
Objecto
Unidade de
Programa
delimitada
Subrotinas +
memória local
persistente
Linguagem
prog. (bib.
suporte)
Linguagem
prog. (bib.
suporte)
_
Dependências Processador
4
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
5
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’
6
Programação
O Que Se Pretende
7
Componentes
Conceitos Genéricos
• Componente
– Unidade de execução que encapsula
funcionalidades
• Interface
– “Ponto de acesso” às funcionalidades do
IUnknown
componente
Interf ace1
Interf ace2
Componente
8
Componentes
Componentes & Interfaces
IUnknown
IAritBasica
IAritAv ancada
CompAritmetica
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;
};
9
Componentes
Arquitectura Geral
Listagem de T itulos (Biblioteca)
IUnknown
Form
Ficheiro
Editar
Programa de Email
IUnknown
IUnknown
Componente1
CompEmail1
Componente5
IUnknown
IUnknown
IUnknown
Utilizador
Componente2
IUnknown
Componente4
CompEmail2
componente3
Sistema Operativo
IUnknown
CompSO1
IUnknown
CompSO2
IUnknown
CompSO3
IUnknown
CompSO4
10
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
11
Componentes
Modelos de Componentes
• COM, DCOM, COM+
• CORBA
• Java / RMI
12
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)
13
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.
14
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
15
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
16
Componentes
Conclusões
Listagem de T itulos (Biblioteca)
IUnknown
Form
Ficheiro
Editar
Programa de Email
IUnknown
IUnknown
Componente1
CompEmail1
Componente5
IUnknown
IUnknown
IUnknown
Utilizador
Componente2
IUnknown
Componente4
CompEmail2
componente3
Sistema Operativo
IUnknown
CompSO1
IUnknown
CompSO2
IUnknown
CompSO3
IUnknown
CompSO4
17
Download

Programação