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
Download

classe