1 programação orientada aos componentes quartas à tarde no dei 12 de abril de 2000

Post on 17-Apr-2015

106 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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