pedro ramos, dcti/iscte diagramas de componentes os diagramas de componentes permitem modelar a...

21
Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis, libraries, etc.). Um componente é um fragmento físico de um sistema, que pode ser conectado a outros componentes e ser substituído por equivalentes. Desenhar um diagrama de componentes implica tomar opções de desenho, nomeadamente no que diz respeito à forma de encapsulamento da informação. A arquitectura do sistema final começa a ser definida nestes diagramas (e é completada através dos Diagramas de Distribuição). UML – Diagrama de Componentes

Upload: internet

Post on 17-Apr-2015

120 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Diagramas de ComponentesOs diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis, libraries, etc.).

Um componente é um fragmento físico de um sistema, que pode ser conectado a outros componentes e ser substituído por equivalentes.

Desenhar um diagrama de componentes implica tomar opções de desenho, nomeadamente no que diz respeito à forma de encapsulamento da informação. A arquitectura do sistema final começa a ser definida nestes diagramas (e é completada através dos Diagramas de Distribuição).

Nos diagramas de componentes constam componentes, interfaces e relações.

UML – Diagrama de Componentes

Page 2: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Interfaces

UML – Diagrama de Componentes

Uma interface é um conjunto de operações que especifica parte do comportamento de um conjunto de classes. São as operações (serviços) que as classe oferecem ao exterior (outras classes). Uma interface é frequentemente vista como um conjunto de classes apenas com operações (sem atributos).

O encapsulamento de classes (através das interfaces) faz com que o exterior não tenha que conhecer a estrutura interna das classes. Nomeadamente, alterações da estrutura de uma classe não têm que ser comunicadas para o exterior.

Não confundir com as interfaces de JAVA.

Page 3: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Exemplo de Interface (I)

O acesso à base de dados deve estar isolado das restantes módulos do sistema. Este desenho facilita a migração de SGBD’s e permite que uma interface interactue com mais que um SGBD. Apenas as classes de ligação a SGBD conhecem a base de dados (localização).

Sybase

Oracle

Classes de Interface para SGBD

(Select ... From ....)

Classe

Classe

UML – Diagrama de Componentes

Page 4: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Exemplo de Interface (II)

Não é aconselhável que as classes gráficas (ecrãs) sejam muito dependentes do modelo relacional (pequenas alterações na base de dados não deveriam originar alterações nos ecrãs). Por outro lado, as classes que encapsulam o acesso à base de dados (ie., que permitem o acesso aos dados) deverão ser independentes dos ecrãs (de modo a poderem ser partilhadas por diferentes módulos).

Sybase

Oracle

Classes de Interface para SGBD

(Select ... From ....)

Classe

Classe Classe

Classe

Classes de Interface gráficas

(Listeners)

UML – Diagrama de Componentes

Page 5: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Arquitectura Genérica de uma Aplicação

Caso seja relevante poderá existir mais que uma “camada” (diferentes níveis de encapsulamento).

Classes de Interface para SGBD (transacções, abrir, fechar, executar sql, ODBC, JDBC, etc ...)

Classes gráficas

Número Título Autor

001

013

Tabela (BD)Ecrã

MidlleWare

Camada de software que contém as os requisitos da aplicação e que liga a BD aos ecrãs

Page 6: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Classes Dados versus Classes Controlo

Classes de manipulação de dados

Número Título Autor

001

013

Tabela (BD)Ecrã

MidlleWare

cliente factura

produtoGestãoClientes

GestãoAssiduidade funcionário

Tabela Faltas

Classes de controlo de requisitos

Requisito: “Caso o funcionário exceda n faltas do tipo A desconta no vencimento”

Implementado em classes de controlo? Em classes de dados? ... provavelmente nas classes de controlo

Page 7: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Interfaces e Realização (I)

UML – Diagrama de Componentes

Uma classe pode disponibilizar várias interfaces (um certo paralelismo com as views do modelo relacional) e uma interface pode ser realizada por mais do que uma classe.

A Realização é a relação entre uma classe e uma interface.

<<Interface>> Factura

Emitir()AdicionarLinha()RemoverLinha()Anular()Arquivar()

Factura

NúmeroData

Linha da factura

ProdutoQuantidadePreço Unitário

1 … *1

Emitir()Anular()Arquivar()

AdicionarLinha()RemoverLinha() Realização

Podem corresponder apenas a “apontadores” para os métodos da classe

Page 8: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Interfaces e Realização (II)

UML – Diagrama de Componentes

<<Interface>> Funcionário

Alterardados()Inserir()Consulta()

Funcionário

NomeMoradaTelefone

<<Interface>> Consulta Funcionário

Consulta()

Será útil a classe funcionário?, i.e, no desenho de uma aplicação suportada por uma base de dados, deverão ser implementadas as classes correspondentes às classes do diagrama de classes?

As interfaces poderão ser suficientes?

Os atributos são necessários?

Alterardados()Inserir()Consulta()

Page 9: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Interfaces e Realização (III)

UML – Diagrama de Componentes

Funcionário

NomeMoradaSalário

Novo()Remover()Alterar()Actualizar Salário()Consultar()

Não é um método de objecto

Apenas é um método de objecto caso seja consultar apenas a ficha de um fornecedor

Funcionário

NomeMoradaSalário

Alterar()Actualizar Salário()ConsultarFicha()

Funcionários

Novo()Remover()Consultar()

Necessidade de duas classes (Funcionários não tem atributos porque representa a colecção dos funcionários)

Os atributos das classes são públicos? Não de acordo com a teoria dos objectos

Implementação:a) Actualizar Salário (IDObjecto, Novo Salário)

Ou b)Integer Id Objecto;Float Salário;SetID()SetSalário()Actualizar Salário ()

Na solução a) não são necessários atributos na classe Funcionário

Uma classe abstracta parece suficiente ...

A solução b) é uma tentativa de de aplicar uma teoria de objectos a uma teoria (relacional) que não é orientada a objectos?

... mas tem desvantagens, por ex., ordem de atributos

Page 10: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Interfaces e Realização (IV)

On click em botão actualiza salário ...

Funcionario f = new() Funcionario

f.actualizasalario(idf,salario)

Public actualizasalario(id, s)

Update ......

Desvantagem: Ordem de atributos é relevante

Relacional

Funcionários listener

Page 11: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Notas

UML – Diagrama de Componentes

Usualmente na representação gráfica não se discriminam as operações de uma interface.

Forma gráfica mais habitual para representar interfaces:

Funcionário

Funcionário

NomeMoradaTelefone

AlterarDados()Inserir()Consulta()

ConsultaFuncionário

Page 12: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Visibilidade

UML – Diagrama de Componentes

O tipo de visibilidade dos atributos e métodos pode ser indicado nas classes. Os tipos são:

public(+) – acessível a todas as classes

private(-) – acessível apenas à classe de que fazem parte

protected (#) – acessível às classes que herdam a classe de que fazem parte

Funcionário

# Nome# Morada# Telefone

# AlterarDados()- Inserir()+ Consulta()

Forma alternativa (mais rígida, igual para todas as classes exteriores) de implementar interfaces.

Page 13: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Componentes

UML – Diagrama de Componentes

Um componente é uma parte física de um sistema que está localizado em um computador. Um componente pode ser visto como uma implementação de uma classe ou conjunto de classes (packages) e respectivas interfaces.

Um componente também disponibiliza interfaces para o exterior.

É usual tipificar (através de ícones) vários tipos de componentes.

Stock.java Stock.bdFormsStock

JDBC Interface

O componente Stock.java usa (usage dependency) o componente Stock.bd através de uma interface JDBC

Method Invocation

Page 14: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Nota

UML – Diagrama de Componentes

É possível graficamente enumerar as classes ou packages contidos num componente. Não é usual fazer-se por razões de legibilidade do diagrama, mas, caso se opte por não o fazer, é necessário indicar os elementos de um componente de uma forma não gráfica (documento anexo).

Page 15: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Diagramas de Distribuição(Deployment)

Enquanto que os diagramas de componentes modelam a arquitectura do software, os diagramas de distribuição definem a arquitectura do hardware. Desenhar um diagrama de distribuição consiste essencialmente em distribuir os componentes por unidades de hardware (computadores).

Nos diagramas de distribuição constam nós (processadores e devices) e relações (usualmente ligações físicas, embora possam ser indicadas relações de dependência).

Os processadores são os nós capazes de executar componentes, enquanto os devices são utilizados para discriminar a interface para o exterior (impressoras, modems, monitores, etc.).

UML – Diagrama de Distribuição

Page 16: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Representação Gráfica

UML – Diagrama de Distribuição

FormStock.java

<< processador>>ISP

<< device>>Modem

<< processador>>Cliente

Stock.javaStock.bd

<< processador>>Servidor

<< device>>Impressora

<< device>>Monitor

A indicação de estereótipos é opcional

Indicação dos componentes

Duas camadas no mesmo computador

Page 17: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Exemplo Vídeo

Classes

Para gerar o Relacional

Page 18: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Exemplo Vídeo

Interfaces

Relações de Dependência

Desapareceram atributos ...

Page 19: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Exemplo Vídeo

Interfaces (síntese)

Packages

Page 20: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Exemplo VídeoDiagrama de Componentes

Page 21: Pedro Ramos, DCTI/ISCTE Diagramas de Componentes Os diagramas de componentes permitem modelar a componente física do sistema (tabelas, ficheiros executáveis,

Pedro Ramos, DCTI/ISCTE

Exemplo VídeoDiagrama de Distribuição