Arquitecturas da Informação e Base de Dados

Propaganda
UML – Diagrama de Componentes
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).
Nos diagramas de componentes constam componentes, interfaces e
relações.
Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Componentes
Interfaces
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.
Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Componentes
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
Classe
Classe
Oracle
Classes de Interface
para SGBD
(Select ... From ....)
Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Componentes
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
Classe
Classe
Classe
Classe
Oracle
Classes de Interface gráficas
(Listeners)
Classes de Interface para SGBD
(Select ... From ....)
Pedro Ramos, DCTI/ISCTE
Arquitectura Genérica de uma Aplicação
Tabela (BD)
Ecrã
Número
MidlleWare
Título
Autor
001
013
Camada de software que contém as os requisitos da
aplicação e que liga a BD aos ecrãs
Classes gráficas Caso seja relevante poderá existir
mais que uma “camada” (diferentes
níveis de encapsulamento).
Pedro Ramos, DCTI/ISCTE
Classes de Interface
para SGBD (transacções,
abrir, fechar, executar sql,
ODBC, JDBC, etc ...)
Classes Dados versus Classes Controlo
Tabela (BD)
Ecrã
Número
001
MidlleWare
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
Pedro Ramos, DCTI/ISCTE
Título
013
produto
Gestão
Clientes
Gestão
Assiduidade
Classes de controlo de requisitos
cliente
factura
funcionário
Tabela
Faltas
Classes de manipulação de dados
Autor
UML – Diagrama de Componentes
Interfaces e Realização (I)
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.
Linha da factura
Factura
Número
Data
Emitir()
Anular()
Arquivar()
Podem corresponder
apenas a “apontadores”
para os métodos da
classe
Pedro Ramos, DCTI/ISCTE
1
1…*
Produto
Quantidade
Preço Unitário
AdicionarLinha()
RemoverLinha()
<<Interface>> Factura
Emitir()
AdicionarLinha()
RemoverLinha()
Anular()
Arquivar()
Realização
UML – Diagrama de Componentes
Interfaces e Realização (II)
Funcionário
Nome
Morada
Telefone
Alterardados()
Inserir()
Consulta()
<<Interface>>
Consulta
Funcionário
Consulta()
<<Interface>>
Funcionário
Alterardados()
Inserir()
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?
Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Componentes
Interfaces e Realização (III)
Funcionário
Nome
Morada
Salário
Novo()
Remover()
Alterar()
Actualizar Salário()
Consultar()
Não é um método de objecto
A solução b) é uma
tentativa de de aplicar uma
teoria de objectos a uma
teoria (relacional) que não é
orientada a objectos?
Implementação:
a)
Actualizar Salário (IDObjecto, Novo Salário)
Nome
Morada
Salário
Funcionários
Na solução a) não são
necessários atributos na
classe Funcionário
... mas tem desvantagens,
por ex., ordem de atributos
Apenas é um método de objecto
caso seja consultar apenas a
ficha de um fornecedor
Funcionário
Alterar()
Actualizar Salário()
ConsultarFicha()
Uma classe
abstracta
parece
suficiente ...
Necessidade de duas
classes (Funcionários não
tem atributos porque
representa a colecção dos
funcionários)
Novo()
Remover()
Consultar()
Pedro Ramos, DCTI/ISCTE
Os atributos das classes são
públicos? Não de acordo
com a teoria dos objectos
Ou b)
Integer Id Objecto;
Float Salário;
SetID()
SetSalário()
Actualizar Salário ()
Interfaces e Realização (IV)
listener
Funcionários
Relacional
On click em botão actualiza salário ...
Funcionario f = new() Funcionario
Public actualizasalario(id, s)
Update ......
f.actualizasalario(idf,salario)
Desvantagem: Ordem de atributos é relevante
Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Componentes
Notas
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
Nome
Morada
Telefone
Funcionário
AlterarDados()
Inserir()
Consulta()
Consulta
Funcionário
Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Componentes
Visibilidade
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()
Pedro Ramos, DCTI/ISCTE
Forma alternativa (mais rígida, igual
para todas as classes exteriores) de
implementar interfaces.
UML – Diagrama de Componentes
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.
JDBC Interface
Method Invocation
FormsStock
Stock.java
Stock.bd
O componente Stock.java usa (usage dependency) o componente Stock.bd
através de uma interface JDBC
Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Componentes
Nota
É 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).
Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Distribuição
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.).
Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Distribuição
Representação Gráfica
A indicação de
estereótipos é opcional
<< device>>
Monitor
Duas camadas
no mesmo
computador
<< processador>>
ISP
<< processador>>
Cliente
<< device>>
Modem
<< processador>>
Servidor
FormStock.java
Stock.java
Stock.bd
<< device>>
Impressora
Pedro Ramos, DCTI/ISCTE
Indicação dos
componentes
Exemplo
Vídeo
Classes
Para gerar o
Relacional
Pedro Ramos, DCTI/ISCTE
Exemplo
Vídeo
Interfaces
Relações de
Dependência
Desapareceram atributos ...
Pedro Ramos, DCTI/ISCTE
Exemplo
Vídeo
Interfaces
(síntese)
Pedro Ramos, DCTI/ISCTE
Packages
Exemplo Vídeo
Diagrama de Componentes
Pedro Ramos, DCTI/ISCTE
Exemplo Vídeo
Diagrama de Distribuição
Pedro Ramos, DCTI/ISCTE
Download