IIIª Igreja Batista do Plano Piloto Escatologia nas Quartas-Feiras, 19h Resumo.
1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.
Transcript of 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.
![Page 1: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/1.jpg)
1
Programação Orientada aos COMponentes
Quartas à Tarde no DEI12 de Abril de 2000
![Page 2: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/2.jpg)
2
ComponentesAgenda
• Introdução
• Tutorial
• Casos Práticos– I2S: Reengenharia via COM– IDT: Engenharia usando COM
![Page 3: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/3.jpg)
3
ProgramaçãoAs Grandes Promessas
• “não reinventar a roda”– Reutilização– Interoperabilidade
• Facilidade de Manutenção– Flexibilidade– Evolução
![Page 4: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/4.jpg)
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)
![Page 5: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/5.jpg)
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
![Page 6: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/6.jpg)
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
![Page 7: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/7.jpg)
7
O Que Se PretendeProgramação
![Page 8: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/8.jpg)
8
ComponentesConceitos Genéricos
• Componente– Unidade de execução que encapsula
funcionalidades
• Interface– “Ponto de acesso” às funcionalidades do
componenteIUnknown
ComponenteInterface1
Interface2
![Page 9: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/9.jpg)
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;
};
![Page 10: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/10.jpg)
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
![Page 11: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/11.jpg)
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
![Page 12: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/12.jpg)
12
ComponentesModelos de Componentes
• COM, DCOM, COM+
• CORBA
• Java / RMI
![Page 13: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/13.jpg)
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)
![Page 14: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/14.jpg)
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.
![Page 15: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/15.jpg)
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
![Page 16: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/16.jpg)
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
![Page 17: 1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.](https://reader036.fdocuments.net/reader036/viewer/2022062418/552fc0fc497959413d8ba1da/html5/thumbnails/17.jpg)
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