Análise e Concepção de Sistemas
de Informação
Unified Modeling Language (UML)
- Modelação da Estrutura -
Alberto Manuel Rodrigues da Silva
Prof. DEI/IST/UTL
Modelação da Estrutura
Classes
Relações
Interfaces, Tipos, e Papeis
Packages
Instâncias
Diagramas de Classes e de Objectos
ACSI/UML-Stat, Copyright, Alberto Silva
2
Classes
Uma classe é a descrição de
um conjunto de objectos que
partilham os mesmos:
–
–
–
–
atributos
operações
relações
semântica
nome
Dictionary
atributos
items
size()
isEmpty()
operações
As classes são os mais importantes
componentes de construção de sistemas OO
ACSI/UML-Stat, Copyright, Alberto Silva
3
Classes - Nome de Classes
ACSI/UML-Stat, Copyright, Alberto Silva
4
Classes - Atributos
[visibility] [/] name [: type] [ multiplicity ] [= default] [{ property-string }]
Tipos de visibilidade:
ACSI/UML-Stat, Copyright, Alberto Silva
+ : público; -: privado; #: protegido
5
Classes - Operações
Membro
- Membro()
+ Membro(nome, email)
+ obterNome() : String
+ obterMorada() : String
+ obterEmail() : String
+ obterInstituicao() : String
+ obterUserName() : String
+ validaPasswd(pwd : String) : Boolean
+ obterRecebePropostas() : Boolean
Membro
<<Constructor>> - Membro()
<<Constructor>> + Membro(nome, email)
<<GetSet>> + obterNome() : String
<<GetSet>> + obterMorada() : String
<<GetSet>> + obterEmail() : String
<<GetSet>> + obterInstituicao() : String
<<GetSet>> + obterUserName() : String
<<Manage>> + validaPasswd(pwd : String) : Boolean
<<GetSet>> + obterRecebePropostas() : Boolean
[visibility] name [( parameter-list )] : [return-type] [{ property-string }]
ACSI/UML-Stat, Copyright, Alberto Silva
6
Classes - Sugestões
Uma classe deve corresponder a algo tangível ou a
uma abstração conceptual existente no domínio do
problema ou no dominio da solução
Uma classe bem estruturada ...
Providencia uma abstração definida a partir do
vocabulário do domínio do problema ou do domínio da
solução.
Agrega um conjunto restrito e bem definido de
responsabilidades.
Providencia uma separação clara entre a especificação
abstracta e a sua implementação.
É simples, e facilmente entendida.
ACSI/UML-Stat, Copyright, Alberto Silva
7
Classes - Exercício
Usar classes para definição de dicionário de dados de um
sistema “O Jogo de Futebol”
“O jogo de futebol é realizado por duas equipas de jogadores. Cada equipa é
composta por 11 jogadores, com diferentes funções: o guarda-redes,
defesas, médios, atacantes, e pontas de lança. O ponta de lança é um
atacante especial por ter especiais características de goleador...
O jogo é realizado num campo com medidas regulamentares (em
comprimento e largura), tem duas balizas, cada qual em extremos opostos do
campo. Ganha o jogo a equipa que marcar mais golos (I.e., colocar a bola)
na baliza do adversário. No jogo apenas existe um única bola, que apresenta
características (peso, diâmetro, …) regulamentares...
O jogo de futebol é mediado por uma equipa de 3 árbitros, em que um é o
árbitro principal, e os outros dois árbitros auxiliares…
De um jogador conhece-se o nome, morada, telefones (pode ter mais que
um), data-nascimento, ... A idade de um jogador tem de ser inferior a 40
anos...”
ACSI/UML-Stat, Copyright, Alberto Silva
8
Relações
Uma relação é uma ligação entre
elementos.
Na modelação OO os 3 tipos de
relações mais importantes são:
elemento
B
– dependências
– generalizações
– associações
relação
elemento
A
ACSI/UML-Stat, Copyright, Alberto Silva
9
Relações - Dependência
Uma dependência indica que a alteração na especificação de um
elemento (e.g., pacote “UML 0.9”) pode afectar outro elemento que o
usa (e.g., pacote “UML 1.0”) mas não necessariamente o oposto.
Em UML as dependências são usadas entre normalmente com
packages, componentes e notas.
ACSI/UML-Stat, Copyright, Alberto Silva
10
Relações - Dependência
Tipos de dependência predefinidos
Abstração:
– «refinement»: Usado quando o cliente representa melhorias,
junçõe, alterações e outros aspectos relativamente ao conteúdo
do(s) fornecedor(es).
– «trace»: Usado quando se pretende representar relações históricas
e dependência de elementos ao longo do tempo
Ligação:
– «bind»: Usado para estabelecer ligações entre parâmetros
genéricos e parâmetros efectivos, na criação de elementos não
parametrizados
Permissão:
– «import»: Usado quando o pacote fornecedor concede ao pacote
cliente acesso aos seus elementos públicos, de forma que o nome
desses elementos passem a poder ser referenciados directamente
no pacote cliente.
Utilização:
– «include», «extend», «communicate»: Usados no contexto de
diagramas de casos de utilização
ACSI/UML-Stat, Copyright, Alberto Silva
11
Relações - Dependência
Exemplo de dependência com semântica de «refinement»
– «refinement»: Usado quando o cliente representa melhorias,
junções, alterações e outros aspectos relativamente ao conteúdo
do(s) fornecedor(es).
ACSI/UML-Stat, Copyright, Alberto Silva
12
Relações - Generalização
Shape
Uma generalização é uma
relação entre um elemento
geral (superclasse) e um
tipo mais específico desse
elemento (subclasse).
Geralmente conhecida como
uma relação “is-a” ou “is-akind-of”.
origin
move()
resize()
display()
Rectangle
corner: Point
Circle
radius: Float
Polygn
points: List
Square
No contexto de classes usam-se generalizações para ilustrar
relações de herança.
ACSI/UML-Stat, Copyright, Alberto Silva
13
Relações - Generalização
Tipos de Generalização...
ACSI/UML-Stat, Copyright, Alberto Silva
14
Relações - Generalização
Tipos de Generalização...
Generalização disjunta {disjoint}:
– tipo por omissão
– especifica o facto de uma classe descendente de X poder ser
apenas descendente de uma das subclasses de X.
Generalização sobreposta {overlapping}:
– especifica o facto de uma classe descendente de X pertence ao
produto cartesiano das subclasses de X
– No exemplo, a classe CírculoComEtiqueta é uma combinação das
subclasses de FiguraGeométrica).
Generalização completa {complete}: vs. incompleta
{incomplete}:
– especifica o facto de uma generalização ser completamente
especificada ou não
– No exemplo, o caso da decomposição segundo a dimensão
“etiqueta”
ACSI/UML-Stat, Copyright, Alberto Silva
15
Relações - Associação
Uma associação é uma relação semântica entre dois ou mais
elementos de um modelo .
Uma pessoa pode trabalhar para várias (0 ou mais) empresas.
Numa empresa trabalha 1 ou mais pessoas.
ACSI/UML-Stat, Copyright, Alberto Silva
16
Relações - Associação
Multiplicidade
– Define quantos objectos participam na relação
– O número de instâncias de uma classe relacionadas com
uma instância da outra classe
– Especificada para cada participante (classe) da associação
Não especificada
Apenas uma
1
Zero ou mais
0..* ou *
Uma ou mais
1..*
Zero ou uma
0..1
Intervalo especificado
2..4
Valores múltiplos
ACSI/UML-Stat, Copyright, Alberto Silva
2, 4..6
17
Relações - Associação
Adornos básicos das associações:
- nome
- o papel de cada participante na associação
- a multiplicidade de cada participante na associação
- tipo de agregação
ACSI/UML-Stat, Copyright, Alberto Silva
18
Relações - Associação
Adornos básicos das associações:
- restrições
As empresas têm um conjunto de empregados, o qual é uma lista
ordenada pelo “nome” da pessoa. Adicionalmente, foi definido a
restrição de que os empregados são todos do género masculino.
ACSI/UML-Stat, Copyright, Alberto Silva
19
Relações - Associação
Outros Adornos das Associações
– Navegação
– Visibilidade
– Qualificação
– Vários tipos de Agregação
ACSI/UML-Stat, Copyright, Alberto Silva
20
Relações - Associação
Navegação
Por omissão a navegação numa associação é bidireccional.
“Dado um pessoa é relevante obter a lista das empresas em que se
encontra ligado. Mas não é relevante ou interessante obter-se os
empregados de cada empresa .”
A navegação é um adorno mais relevante na fase de desenho...
ACSI/UML-Stat, Copyright, Alberto Silva
21
Relações - Associação
Visibilidade
Quando se pretende limitar a visibilidade a objectos externos a determinada
associação.
Navegação da associação
UserGroup *
*
+user
User
1
+owner
*
-key
Password
Instâncias de UserGroup podem aceder a instâncias de User(e vice-versa)
mas não podem, por sua vez, ver as instâncias de Password dos respectivos User
Tipos de visibilidade:
ACSI/UML-Stat, Copyright, Alberto Silva
+ : público; -: privado; #: protegido
22
Relações - Associação
Qualificação
Um qualificador é um atributo, ou lista de atributos, cujos valores servem
para partir o conjunto de instâncias associadas a uma instância ao longo de
uma associação.
Os qualificadores são atributos da associação.
Banco
NrConta
*
0..1
Pessoa
ACSI/UML-Stat, Copyright, Alberto Silva
TabuleiroXadrez
qualificador
Linha
Coluna
1
1
Quadrado
23
Relações - Associação
Agregação Simples
A associação entre classes sem agregação reflecte que ambas as classes
se encontram no mesmo nível conceptual.
Por vezes, estabelecem-se relações do tipo “is-part-of” ou “has-a”, que
devem ser representadas através de agregação.
ACSI/UML-Stat, Copyright, Alberto Silva
24
Relações - Associação
Composição (Agregação Composta)
A composição é uma variante à agregação simples, em que é adicionada a
seguinte semântica: (1) forte pertença do “todo” em relação à “parte”, e (2)
tempo de vida delimitado (as “partes” não podem existir sem o “todo”).
Adicionalmente, o “todo” é responsável pela disposição das suas “partes”, ou
seja, “o todo” é responsável pela criação e destruição das suas “partes”.
... Um Departamento não existe sem o contexto de uma Empresa...
ACSI/UML-Stat, Copyright, Alberto Silva
25
Relações - Associação
ACSI/UML-Stat, Copyright, Alberto Silva
26
Relações - Associação, Exercício
Composição (Agregação Composta)
Modelize o seguinte discurso:
«Uma mesa de café é constituída por um tampo e por quatro pernas…»
«Uma mesa de café é constituída por um tampo e por duas a seis pernas, as
quais têm de estar ordenadas…»
ACSI/UML-Stat, Copyright, Alberto Silva
27
Relações - Associação
Classes-Associação
Numa associação entre classes, a associação pode também ter as suas
próprias propriedades, devendo ser, por conseguinte, modelizada também
como uma classe.
Pessoa
*
1..*
empregado
empregador
Empresa
Tarefa
descrição
dataInício
salário
ACSI/UML-Stat, Copyright, Alberto Silva
classe associação
28
Relações - Associação
Associação N-Ária (N 3)
Associações com aridade 3 ou superior.
São pouco comuns, mas há casos que a sua aplicação é vantajosa...
TipoTarefa
*
Pessoa
*
A multiplicidade em associações n-árias pode
ser especificada mas é menos óbvia que a
multiplicidade em associações binárias.
A multiplicidade num papel representa o número
de tuplos (de instâncias) numa associação
quando os outro N-1 valores são fixos.
ACSI/UML-Stat, Copyright, Alberto Silva
Tarefa
*
Empresa
Tarefa
descrição
dataInício
salário
classe associação
29
Relações - Associação
Associação N-Ária (N 3)
As associações N-árias podem
ser transformadas em várias
relações binárias entre a classeassociação e as restantes
classes participantes.
Se for esta a estratégia adoptada
deve ser assinalado esse facto
(por exemplo, através de um
estereótipo ou de uma anotação)
junto à classe-associação
ACSI/UML-Stat, Copyright, Alberto Silva
“Tarefa” é uma classe resultante da
associação entre as classes
“Pessoa”, “TipoTarefa” e “Empresa”
TipoTarefa
1
*
Tarefa
Pessoa
1
* descrição
dataInício
salário
*
1
Empresa
30
Relações - Associações Reflexivas
Quando uma classe tem uma associação consigo própria...
professor 1
Docente
*
assistente
“um docente, enquanto professor, é responsável por
outros docentes, designados por assistentes”
ACSI/UML-Stat, Copyright, Alberto Silva
31
Relações - Sugestões
Usar dependência apenas quando a relação não é
estrutural.
Usar generalização apenas quando se tem uma
relação do tipo is-a ou is-a-kind.
Herança múltipla pode ser geralmente substituida pela
agregação.
Evitar relações de generalização ciclicas
Manter as generalizações balenceadas (nem muito largas,
nem muito fundas)
Usar associações sempre que existirem relações
semânticas entre objectos.
ACSI/UML-Stat, Copyright, Alberto Silva
32
Diagramas de classes
Perspectivas:
Modelo de Análise – diagrama representa os conceitos do
dominio em análise; normalmente existirá uma relação com as
classes que os implementarão (tb. modelos de domínio)
Modelo de Desenho - o diagrama representa o desenho da
implementação do software
São muito ricos, podem-se tornar complicados
Não se deve utilizar todas as notações disponíveis
Começar com: classes, atributos, associações, generalizações
e restrições
Utilizar correctamente as diferentes perspectivas (análise vs
desenho)
ACSI/UML-Stat, Copyright, Alberto Silva
33
Diagramas de classes
Representam a visão lógica do sistema, expressa pelo
conjunto de todas as suas classes e respectivas
relações.
Elementos UML que são representados num diagrama
de classes:
– Classes e toda a sua estrutura interna
– Relações
Tipos (Associações, Agregações, Dependências, Generalização)
Multiplicidade
Navegabilidade
Nome da relação e papel de cada interveniente
....
ACSI/UML-Stat, Copyright, Alberto Silva
34
Exercícios
1. Modelizar o diagrama de classes de um jogo de futebol
Usar as classes anteriormente definidas
Introduzir as relações entre as classes
2. Como representaria a seguinte informação: “Um aluno pode-se
inscrever em algumas disciplinas de um curso, que têm
precedência entre si.”?
ACSI/UML-Stat, Copyright, Alberto Silva
35
Exercício: Facturas&Clientes
Enunciado:
Um sistema de facturação mantém informação sobre clientes,
sobre tipos de produtos e de serviços vendidos/prestados.
Um cliente é identificado univocamente pelo NIF, e tem ainda
nome, morada, telefones, e tipo de cliente. Um cliente pode ter
mais que uma morada…
Uma factura é identificada univocamente pelo IDFactura, que é
um número sequencial. Tem ainda a informação sobre data de
facturação, cliente, valor total. Uma factura tem várias linhas,
cada qual especificando a venda de um bem ou serviço…
Uma factura pode ser paga por uma ou mais prestações. Cada
pagamento parcial/total corresponde à emissão de respectivo
recibo...
ACSI/UML-Stat, Copyright, Alberto Silva
36
Interfaces
Uma interface é um ...
contrato na forma de uma colecção de assinaturas de métodos que
providencia um mecanismo para separação clara entre a vista
externa e a vista interna de um determinado elemento
permite compreender melhor uma abstração sem se
ter de conhecer os detalhes da sua implementação
Promove a abstração; desenvolvimento baseado em
componentes; separação de aspectos
Suportada pela generalidade das modernas
linguagens de programação (Java, VB, VisualC++,
Delphi, Corba IDL, COM IDL, …)
Visão externa
interface
elemento
Visão interna
A adequada definição de interfaces é essencial para
um bom desenho/desenvolvimento de sistemas OO
ACSI/UML-Stat, Copyright, Alberto Silva
37
Interfaces
Uma interface é uma coleção de operações que são usadas para
especificar um serviço de uma classe ou de uma componente
ACSI/UML-Stat, Copyright, Alberto Silva
38
Interfaces
exemplo de interfaces de uma componente em Active-X...
ACSI/UML-Stat, Copyright, Alberto Silva
39
Interfaces - Relações
Uma interface pode participar em relações do tipo
generalização, associação, e dependência
Adicionalmente pode participar em relações do tipo “realização
A realização é uma relação semântica entre duas entidades, em que
uma específica um contrato, e a outra garante a sua execução. Quais?
ACSI/UML-Stat, Copyright, Alberto Silva
40
Interfaces – em UML 2.0
Considere a situação:
A universidade promove várias actividades de cariz socioprofisssional (e.g., jantares-debates, cursos de curta duração,
visitas a empresas), as quais podem ser patrocionadas por
empresas
Considere que “Actividade” é uma interface...
Empresa
<<Interface>>
Actividade
patrociona >
Jantar-Debate
obterResponsável()
obterPatrocionadores()
obterCusto()
Empresa
patrociona >
OK!
Jantar-Debate
??!
Actividade
ACSI/UML-Stat, Copyright, Alberto Silva
41
Interfaces – em UML 2.0
Considere a situação:
A universidade promove várias actividades de cariz socioprofisssional (e.g., jantares-debates, cursos de curta duração,
visitas a empresas), as quais podem ser patrocionadas por
empresas
Considere que “Actividade” é uma interface...
ACSI/UML-Stat, Copyright, Alberto Silva
42
Interfaces - Sugestões
Uma interface bem estruturada é:
Simples, ainda que completa:
Compreensível:
providencia todas as operações necessárias para especificar
um determinado serviço ou papel
E.g., serialização, gestão de nomes, estabelecimento de
conexões HTTP, acesso a objecto remoto, …
providencia informação suficiente para ser, quer usada, quer
realizada sem ser necessário examinar-se a sua realização
Fácil de aprender/utilizar
providencia informação para ser fácil utilizar as suas operações
principais, sem se ter que dominar, em detalhe, todas as
operações
ACSI/UML-Stat, Copyright, Alberto Silva
43
Packages
Motivação
Torna-se difícil, impraticável, modelizar de uma “só vez”
sistemas de média/grande dimensão ou complexidade
package
O que é?
É um mecanismo genérico para
organizar elementos em grupos
Package A
Um package pode conter outros elementos, incluindo:
classes, interfaces, … e mesmo outros packages
Qq elemento é definido em apenas um único package
Um package providencia suporte para um espaço de
nomes adequado
e.g., X::A é diferente de X::Y:A, diferente de Z::A,
...
ACSI/UML-Stat, Copyright, Alberto Silva
44
Packages - Exemplos
ACSI/UML-Stat, Copyright, Alberto Silva
45
Packages - Importação/Exportação
O package origem tem acesso ao conteúdo (público) do package
destino.
A tem acesso a B, mas o recíproco não é verdade.
ACSI/UML-Stat, Copyright, Alberto Silva
46
Packages - Tipos Standard
5 estereótipos standard para packages…
facade:
– pacote com elementos (tipicamente classes e interfaces) que
constituem a fachada (ou a interface de programação)
providenciada conjunta e coerentemente por outros pacotes
framework:
– um framework é uma arquitectura de classes e interfaces com
inúmeros pontos de variabilidade ou de extensão e com estruturas
de objectos padronizadas, conhecidas por padrões de desenho
stub:
– um adaptador (stub) é usado quando se pretende partir um sistema
em diferentes pacotes por motivos, e.g., de divisão de trabalho
subsystem:
– uma parte independentemente do sistema inteiro
system:
– pacote que representa o sistema inteiro; tipicamente este pacote
agrega pacotes dos restantes tipos (subsistema, fachada, etc.)
ACSI/UML-Stat, Copyright, Alberto Silva
47
Packages - Conselhos ...
Um package bem estruturado é:
Coerente:
– providencia uma fronteira bem definida que agrega um conjunto de elementos
relacionados
Minimiza as dependências:
– exporta apenas os elementos que outras packages necessitarão; e importa de
outras packages os elementos estritamente necessários
Tem hierarquias balanceadas
– evitar largas/profundas hierarquias de packages aninhadas
Tem conteúdo balanceado
– dentro do conjunto de packages de um sistema, não deverão existir packages
nem demasiado grandes (partir), nem demasiado pequenos (juntar)
Quando utilizar Packages?
Sempre que um determinado diagrama que representa o sistema (ou
subsistema) não seja legível numa “folha A4”
Particularmente úteis para os testes unitários => um caso de testes por
package
Úteis ainda em termos de unidades de programação
ACSI/UML-Stat, Copyright, Alberto Silva
48
Packages - Exercício
Considere o sistema de jogos de futebol. Defina 4
packages respectivamente para agrupar classes
relativas a (1) equipas de jogadores; (2) equipas de
arbitragem; (3) clubes de futebol; e (4) os jogos
propriamente ditos.
Defina o diagrama de packages respectivo,
evidenciando as classes exportadas e as
dependências de importação correspondentes.
ACSI/UML-Stat, Copyright, Alberto Silva
49
Instâncias
Uma instância é uma manifestação concreta de uma
abstracção, à qual um conjunto de operações pode ser
aplicado, e que tem um estado que regista os efeitos das
operações
Em geral designa-se “instância” a “objecto” e vice-versa;
mas rigorosamente são conceitos distintos. E.g.,
instância de uma classe é um objecto
instância de uma associação é um link
instância de um nó é um computador que se encontra
fisicamente num local
instância de um use case é um cenário
ACSI/UML-Stat, Copyright, Alberto Silva
50
Instâncias - Objectos
Um objectos é ...
uma instância de uma classe, herdando, por conseguinte,
todos os atributos e métodos definidos na própria classe e
possuindo uma representação de execução própria, a qual se
pode designar genericamente por estado, bem como uma
identificação única no contexto da sua execução
Nome-do-objecto : Nome-da-classe
ACSI/UML-Stat, Copyright, Alberto Silva
51
Instâncias - Objectos
Estado de um objectos...
é dado pelos valores assumidos pelo conjunto de atributos de
um objecto.
é naturalmente um facto dinâmico, variando ao longo do
tempo e do espaço na medida em que o objecto interactua
com outros objectos
ACSI/UML-Stat, Copyright, Alberto Silva
52
Instâncias - Objectos Activos
Para representar objectos activos:
processos, threads, agentes, aplicações,...
t:HandlerNetworkThread
:AgentNews
:Produtor
:Produtor
ACSI/UML-Stat, Copyright, Alberto Silva
Linhas com maior espessura
53
Instâncias - Objectos Compostos
Um objecto composto
– é aquele que é constituído por outros (sub)objectos.
– há inúmeras situações de objectos compostos, mas em geral
reflectem relações de agregação entre as suas respectivas
classes.
my:Empresa
my:Empresa
d-fin:Departamento
d-fin:Departamento d-ven:Departamento
d-pro:Departamento
d-ven:Departamento
d-pro:Departamento
Objecto composto
A vantagem de se representar um conjunto relacionado (por agregação) de objectos
através de um objecto composto é essencialmente por motivos de clareza e
simplicidade dos diagramas produzidos, para além de se explicitar desta forma o
nível de coesão entre os objectos.
ACSI/UML-Stat, Copyright, Alberto Silva
54
Diagramas de Objectos
Um diagrama de objectos...
– ilustra um conjunto de objectos e respectivas relações num determinado
momento
– permite captar uma imagem ou fotografia momentânea sobre
determinado sistema
– é um grafo composto por objectos e ligações (links) entre eles
Um diagrama de objectos não pode especificar completamente a
estrutura de objectos de um dado sistema. Pois para cada classe há
uma infinidade de potenciais combinações entre instâncias…
Logo, o objectivo dos diagramas de objectos é tão só expôr
conjuntos relevantes de objectos de modo a melhor se entender as
suas funcionalidades e inter-relações.
ACSI/UML-Stat, Copyright, Alberto Silva
55
Diagramas de Objectos
Exemplo “Sistema de Gestão de Automóveis ”
Uma pessoa pode ser proprietário de vários veículos e estes são
possuídos apenas por uma única pessoa. Por outro lado, um veículo
tem de possuir necessariamente um motor. Um veículo é identificado
univocamente pela matrícula e possuí ainda outras informações, tais
como a cor, data de fabrico, marca e modelo. Um motor é identificado
por um número de motor, tipo de combustível e cilindrada
Pessoa
0..1
*
Veiculo
modelo
matricula
cor
ACSI/UML-Stat, Copyright, Alberto Silva
0..1
1
Motor
número
cilindrada
combustível
56
Diagramas de Objectos
Exemplo “Sistema de Gestão de Automóveis ”
“o Zé Maria é dono de um Audi A3 TDi vermelho, com matricula
‘99-99-MM’, que tem um motor 1900cc, com número ‘9999’
ZéMaria:Pessoa
tem
nome=“Zé Maria”
AudiA3:Veiculo
tem
modelo=A3 TDi
matricula=99-99-MM
cor=vermelho
:Motor
número=9999
cilindrada=1900cc
combustível=gasóleo
(1) Alterar para:
“o Zé Maria e a Rita são donos de um Audi A3 Tdi vermelho, com
matricula “99-99-MM”, que tem um motor 1900cc, com número 9999”
(2) Fazer o respectivo diagrama de classes
ACSI/UML-Stat, Copyright, Alberto Silva
57
Diagramas de Objectos - Sugestões...
Um diagrama de objectos bem estruturado é:
Tem um foco:
Representa uma “Fotografia”:
representa uma fotografia no storyboard dinâmico
representado por um diagrama de interacções
Simples
focaliza um determinado aspecto da visão do
desenho/processo estático do sistema
contém apenas os elementos que são essenciais à
compreensão de determinado aspecto
Consistente
providencia detalhes de forma consistente com o seu nível de
abstração
ACSI/UML-Stat, Copyright, Alberto Silva
58
Exercício 1: Gestão de Encomendas
A empresa XPTO compra produtos a diferentes
fornecedores. Os produtos adquiridos são
identificados univocamente por um código, têm uma
descrição, e ainda a identificação de um tipo de
produto (e.g., alimentar, vestuário, linha branca).
Cada encomenda especifica um conjunto de
produtos com respectivas quantidades, o fornecedor,
a data de aquisição, e a data de entrega prevista…
ACSI/UML-Stat, Copyright, Alberto Silva
59
Exercício 1: Gestão de Encomendas
Pretende-se:
(1) Diagrama de classes de análise
(2) Como especificar que a encomenda só é realizada se o seu valor
total fôr superior a 100€?
(3) Diagrama de objectos para a seguinte situação:
«A Nestlé satisfez a encomenda 333, em 2003/9/14, relativa à
data de encomenda de 2003/8/31.
A encomenda 333 tem 2 itens: (i) produto 123, chocolate BLO,
Euro 30; 10000 unidades; e (ii) produto 135, leite condensado 1/4,
Euro 20, 50000 unidades. Ambos os produtos são do tipo
alimentar.»
ACSI/UML-Stat, Copyright, Alberto Silva
60
Exercício 1: Gestão de Encomendas
Pretende-se:
(1) Diagrama de classes de análise
Produto
Tipo-Produto
1
* nome
preço_unitário
tx_iva
1
Fornecedor
1
nome
nif
morada
ACSI/UML-Stat, Copyright, Alberto Silva
*
Encomenda
idEnc
data_aqs
data_enc
1
*
* Linha-Encomenda
quantidade
valor_total
valor_iva
61
Exercício 1: Gestão de Encomendas
Pretende-se:
(2) Diagrama de classes de análise, com restrição
Como especificar que a encomenda só é realizada se o seu valor total
fôr superior a 100€?
Produto
Tipo-Produto
1
* nome
preço_unitário
tx_iva
1
Fornecedor
1
nome
nif
morada
*
Encomenda
1
*
* Linha-Encomenda
idEnc
data_aqs
data_enc
/valor_total
{Encomenda.valor_total > 100€}
ACSI/UML-Stat, Copyright, Alberto Silva
quantidade
valor_total
valor_iva
62
Exercício 1: Gestão de Encomendas
Erros Tipicos
Hashtable
Produto
Produto
Lista de
TipoProduto
Tipo-Produto
1
* nome
preço_unitário
tx_iva
1
Fornecedor
1
nome
nif
morada
ACSI/UML-Stat, Copyright, Alberto Silva
*
Encomenda
idEnc
data_aqs
data_enc
idFornecedor
1
*
* Linha-Encomenda
idEnc
quantidade
valor_total
valor_iva
63
Exercício 1: Gestão de Encomendas
Pretende-se:
Diagrama de objectos para a seguinte situação:
«A Nestlé satisfez a encomenda 333, em 00/10/14, relativa à data de
encomenda de 00/8/31.
A encomenda 333 tem 2 itens: (i) produto 123, chocolate BLO, Euro 30;
10000 unidades; e (ii) produto 135, leite condensado 1/4, Euro 20, 50000
unidades. Ambos os produtos são do tipo alimentar.»
l1:Linha-Encomenda
P123:Produto
:Encomenda
qty = 10000
preço = 30
idEnc = 333
data_aqs = 00/10/14
data_enc = 00/8/31
Alimentar:Tipo-Produto
l2:Linha-Encomenda
Nestlé:Fornecedor
ACSI/UML-Stat, Copyright, Alberto Silva
qty = 50000
preço = 20
P135:Produto
64
Exercício 2: Torneio de Ténis
«Num torneio de ténis, cada partida é jogada entre 2 jogadores.
Pretende-se manter informação sobre o nome e idade dos
jogadores; data da partida e atribuição dos jogadores às
partidas. O máximo de partidas que um jogador poderá realizar
é 6 e o mínimo 1.»
Pretende-se
(1) Diagrama de classes de nível de desenho (com atributos).
Como garantir que o jogador não jogue com ele próprio?
(3) Diagrama de objectos para a seguinte situação:
«Os jogadores Zé Maria e Pedro Cunha disputaram os oitavosfinal e a final, respectivamente às 16:30 e 23:00 de 2004/10/10;
nos quartos-final venceu o Zé e na final o Pedro.»
ACSI/UML-Stat, Copyright, Alberto Silva
65