1 programação orientada aos componentes quartas à tarde no dei 12 de abril de 2000
Post on 17-Apr-2015
106 Views
Preview:
TRANSCRIPT
1
Programação Orientada aos COMponentes
Quartas à Tarde no DEI12 de Abril de 2000
2
ComponentesAgenda
• Introdução
• Tutorial
• Casos Práticos– I2S: Reengenharia via COM– IDT: Engenharia usando COM
3
ProgramaçãoAs Grandes Promessas
• “não reinventar a roda”– Reutilização– Interoperabilidade
• Facilidade de Manutenção– Flexibilidade– Evolução
4
ProgramaçãoEvolução da Programação
Linguagem máquina
Programação estruturada
POO
Unidade estrutural
Programa Subrotina Objecto
Relação com nível anterior
_ Unidade de Programa delimitada
Subrotinas + memória local persistente
Dependências
Processador Linguagem prog. (bib. suporte)
Linguagem prog. (bib. suporte)
5
ProgramaçãoProblemas 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çãoProblemas 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 PretendeProgramação
8
ComponentesConceitos Genéricos
• Componente– Unidade de execução que encapsula
funcionalidades
• Interface– “Ponto de acesso” às funcionalidades do
componenteIUnknown
ComponenteInterface1
Interface2
9
ComponentesComponentes & Interfaces
IUnknown
CompAritmetica
IAritBasica
IAritAvancada
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 GeralComponentes
IUnknown
Componente1
IUnknown
Componente5
IUnknown
Componente2
IUnknown
CompSO3
IUnknown
CompEmail1
IUnknown
componente3
IUnknown
Componente4
Listagem de Titulos (Biblioteca)
Utilizador
FormFicheiro Editar
Sistema Operativo
Programa de Email
IUnknown
CompEmail2
IUnknown
CompSO4
IUnknown
CompSO2
IUnknown
CompSO1
11
ComponentesVantagens
• 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
ComponentesModelos de Componentes
• COM, DCOM, COM+
• CORBA
• Java / RMI
13
COMIntroduçã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
COMIntroduçã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
COMProgramaçã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
COMProgramaçã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õesComponentes
IUnknown
Componente1
IUnknown
Componente5
IUnknown
Componente2
IUnknown
CompSO3
IUnknown
CompEmail1
IUnknown
componente3
IUnknown
Componente4
Listagem de Titulos (Biblioteca)
Utilizador
FormFicheiro Editar
Sistema Operativo
Programa de Email
IUnknown
CompEmail2
IUnknown
CompSO4
IUnknown
CompSO2
IUnknown
CompSO1
top related