Buscar

3 UML footbol

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

José Correia UML – Diagramas de Classes 61
Exemplo: Campeonato de futebol
? Um campeonato é constituído por 34 jornadas, é identificado por uma 
época e possui um campeão e um melhor marcador.
? Cada jornada é identificada por um número e é constituída por 9 
jogos.
? Cada jogo é efectuado por uma equipa de futebol visitada, outra 
visitante e é arbitrado por uma equipa de arbitragem.
? Cada equipa de futebol tem 11 ou mais jogadores e cada equipa de
arbitragem possui 4 árbitros.
? Cada jogador pode marcar golos, a determinado instante do jogo e de 
uma de diversas formas: de grande penalidade, de livre, de pontapé
de fora da área, de cabeça, etc.
? O árbitro de um jogo pode mostrar um ou mais cartões, amarelos ou 
vermelhos.
José Correia UML – Diagramas de Classes 62
Campeonato de futebol: possível solução...
(mas que pode ser melhorada)
Campeonato
epoca
melhorarcador()
campeao()
Jornada
numero
3434
é constituído por
EquipaFutebol
nome
Pessoa
nome
numeroBI
numeroTelefone
morada
numeroCartaConducao
dataNascimento
numeroContribuinte
Cartão
cor
hora
EquipaArbitragem
Arbitro
1*
4
Jogo
dataRealizacao
99
é constituída por
*1 *
visitante
1
*1 *visitada
1
é arbitrado por
*
*
Jogador
11..*
*
11..*
*
é constituída 
por
0..*
*
0..*
1
Golo
hora
forma
mostrado por
1*
4
mostrado a 0..*
*
mostrado em
*
*
marca golo no
0..*
1
parte do modelo 
a melhorar
José Correia UML – Diagramas de Classes 63
Relação de Dependência
? As dependências são desenhadas como linhas dirigidas a tracejado
? Uma dependência é uma relação de uso entre dois elementos (não 
necessariamente classes), em que uma mudança na especificação de 
um dos elementos pode forçar uma alteração no outro elemento
? Por motivos de simplicidade, em geral não se explicita este tipo de 
relações nos diagramas de classes – são implícitas!
• as dependências são muito mais usadas entre outro tipo de elementos do 
UML, nomeadamente Pacotes
Sensor de Temperatura 
inicializa()
defineAlarme(t: Temperatura)
valor(): Temperatura
...
Temperatura
...
...
José Correia UML – Diagramas de Classes 64
Relação de Dependência: Exemplo
? Exemplo de um modelo de negócio, em que as classes estão 
agrupadas em pacotes
? Um pacote depende de outro se uma alteração do pacote de destino 
afectar o pacote de origem (dependente)
José Correia UML – Diagramas de Classes 65
Restrições (constraints)
? Uma restrição
• especifica uma condição que tem de se verificar
• é indicada por uma expressão ou texto entre chavetas...
... ou por uma nota posicionada junto aos elementos a que diz respeito, ou a 
eles ligada por linhas a traço interrompido (sem setas, para não confundir 
com relação de dependência)
? Alguns exemplos:
• o salário de um empregado não pode exceder o salário do seu chefe
{empregado.salario < chefe.salario}
• as janelas não podem ter uma relação de aspecto inferior a 0.8 e superior 
a 1.5
{0.8 <= largura/altura <= 1.5}
José Correia UML – Diagramas de Classes 66
Restrições em Classes
Pessoa
nome
dataNascimento
localNascimento
dataFalecimento
{ dataFalecimento > dataNascimento }
Factura LinhaFactura
*1
número
data
número
artigo
quantidade
valor
{ chave candidata: (factura.número, número) }
Restrições 
simples, como 
estas, podem 
ser colocadas 
no modelo...
... mas 
restrições mais 
complexas 
devem ser 
especificadas 
no modelo 
funcional
José Correia UML – Diagramas de Classes 67
Restrições em Associações
Pessoa Empresa
chefe
1*
empregado empregador
trabalhador0..1 *
Pessoa.empregador = 
Pessoa.chefe.empregador
Pessoa Comité
Membro-de
Director-de
*
*
*
1 {subset}
Factura LinhaFactura
*
{ordered}
1
uma factura é
constituída por um 
conjunto ordenado 
de 0 ou mais linhas
Conta
Pessoa
{xor}
Empresa
associações 
mutuamente 
exclusivas
José Correia UML – Diagramas de Classes 68
Dependências e Restrições: Exemplo
? Co_op depende de Company
• se modificarmos Company, podemos também ter de modificar Co_op
? O diagrama tem duas restrições:
• uma Section apenas pode ser parte de um CourseSchedule se ele não tiver sido 
cancelado
• a restrição {xor} indica que um Student tem de ter um CourseSchedule ou uma 
posição Co_op, mas não ambos
José Correia UML – Diagramas de Classes 69
Extensão e Restrição na Generalização
? Conforme já vimos, instâncias de uma classe são também instâncias 
de todas as classes ascendentes
? Consequentemente, todas as características das classes ascendentes 
são aplicadas às instâncias das sub-classes
• uma classe descendente não pode omitir ou suprimir determinada 
característica de uma classe ascendente
• no entanto, as sub-classes podem acrescentar novas características 
(atributos e operações) à sua super-classe
- a sub-classe passa a ser uma extensão da super-classe
José Correia UML – Diagramas de Classes 70
Extensão e Restrição na Generalização
(cont.)
? Os atributos de uma super-classe podem ter de obedecer a 
determinadas restrições quando aplicadas às subclasses
• os valores assumidos pelas subclasses passam a ficar restritos a
determinadas gamas de valores
- por exemplo, a classe círculo definido com base na classe elipse tem de 
obedecer à restrição “eixos menor e maior são iguais”
? Contudo, alterações arbitrárias dos atributos da super-classe podem 
violar as restrições relativas à subclasse
• por exemplo, se os eixos menor e maior de uma elipse forem alterados 
por uma das operações da classe elipse e o objecto em causa for um 
circulo, a restrição “eixos menor e maior são iguais” é certamente violada
José Correia UML – Diagramas de Classes 71
Extensão e Restrição na Generalização
(cont.)
? Para casos deste tipo:
• as propriedades herdadas podem ser renomeadas
- por exemplo, eixos ? diâmetro
• a subclasse pode não herdar todas as operações da super-classe
- por exemplo, operações de alteração de escala desigual segundo os eixos X e 
Y devem ser suprimidas de forma adequada na classe círculo
? A restrição implica que nem todas as operações da super-classe 
possam ser herdadas pela subclasse
José Correia UML – Diagramas de Classes 72
Classes e Operações abstractas (≠concretas)
? Classe abstracta: classe que 
não pode ter instâncias 
directas
• pode ter instâncias indirectas 
pelas subclasses concretas
? Operação abstracta: operação 
com implementação a definir 
nas subclasses
• uma classe com operações 
abstractas é obrigatoriamente 
uma classe abstracta
? Notação: nome em itálico ou 
propriedade {abstract}
Icon
RectangularIcon ArbitraryIcon
origin: Point
display()
getID(): Integer
height: Integer
width: Integer
edge:LineCollection
display()
isInside(p:Point):Bool
Button
display()
Fonte: The UML User 
Guide, Booch
José Correia UML – Diagramas de Classes 73
Classes abstractas (cont.)
? Uma classe é abstracta quando só os seus descendentes é que 
podem ser instanciados de forma directa
• a classe Empregado não pode ser directamente instanciada
? Uma classe é concreta quando pode ser directamente instanciada
• as subclasses de Empregado podem ser instanciadas
Empregado pago à hora 
CustoHora
CalcularPagamento()
Empregado fixo 
VencimentoMensal
CalcularPagamento()
Empregado
Rendimento
CalcularPagamento()
José Correia UML – Diagramas de Classes 74
Exemplo: Encomendas
Modelização das encomendas (Orders) de um cliente (Customer), cujo pagamento 
(Payment) é feito em dinheiro (Cash), cheque (Check) ou através de cartão de crédito 
(Credit Card). As encomendas contêm linhas (OrderDetail), cada uma das quais com o 
respectivo item (Item) associado.
José Correia UML –Diagramas de Classes 75
Multiplicidade de classes e atributos
? Multiplicidade de classe: número de instâncias que podem existir
• por omissão é 0..*
? Multiplicidade de atributo: número de valores que o atributo pode 
tomar do tipo especificado
• por omissão é 1
NetworkController
consolePort [2..*]: Port
1
José Correia UML – Diagramas de Classes 76
Visibilidade de atributos e operações
? Visibilidade
- (private): visível só por 
operações da própria classe
# (protected): visível por 
operações da própria classe e 
descendentes (subclasses)
+ (public): visível por todos
? Recordando o encapsulamento...
• devem-se esconder todos os 
detalhes de implementação que 
não interessam aos clientes 
(utilizadores) da classe
Toolbar
# currentSelection: Tool
# toolCount: Integer
+ getTool(i: Integer): Tool
+ addTool(t: Tool)
+ removeTool(i: Integer)
- compact() 
usada internamente 
por outras operações
José Correia UML – Diagramas de Classes 77
Atributos e operações do âmbito da classe 
(≠instância)
? Atributo do âmbito da classe: tem 
um único valor para todas as 
instâncias (objectos) da classe, o 
qual está definido mesmo que não 
exista nenhuma instância
? Operação do âmbito da classe: 
não tem como argumento implícito 
um objecto da classe
? Notação: nome sublinhado
? Correspondem a membros estáticos 
(static) em C++ e Java
Factura
número: Long
data: Date
valor: Real
últimoNumero: Long = 0
criar(data:Date,valor:Real)
destruir()
valorTotal(): Real
retorna a soma dos valores 
de todas as facturas
cria uma nova factura com a data e valor 
especificados, e um número sequencial 
atribuído automaticamente com base em 
ultimoNumero
José Correia UML – Diagramas de Classes 78
Subclasses incompletas (≠ completas)
? Caso em que um objecto da super-classe pode não pertencer a 
nenhuma das subclasses
? Indicado por restrição {incomplete}
? O contrário é {complete} (situação por omissão)
• outras possibilidades: Administrativo, Director, etc.
Funcionário
Técnico Comercial
{incomplete}
José Correia UML – Diagramas de Classes 79
Subclasses sobrepostas (≠ disjuntas)
? Caso em que um objecto da super-classe pode pertencer, 
simultaneamente, a mais do que uma subclasse
? Indicado por restrição {overlapping}
? O contrário é {disjoint} (situação por omissão) 
Académico
Estudante Professor
{overlapping}
ou Académico
Estudante Professor
{overlapping}
José Correia UML – Diagramas de Classes 80
Herança múltipla (≠ simples)
? Uma subclasse com duas ou mais super-classes é denominada 
classe de junção
Estudante Professor
curso categoria
Académico
nome
e-mail
Professor-Estudante
redução de horário
{overlapping} Só faz sentido assim!
Porquê?
Pelo menos conceptualmente, 
existe uma super-classe comum
Herda propriedades de Estudante 
e Professor e, indirectamente, de 
Académico (uma única vez!)
José Correia UML – Diagramas de Classes 81
Herança múltipla (cont.)
? As propriedades de uma classe ascendente, que são obtidas por
caminhos diferentes, só são herdadas uma vez
• um veículo anfíbio herda todas as
características de um veículo terrestre
e de um veículo aquático
• no entanto, as características
de veículo só são herdadas
uma vez pelo veículo anfíbio
? Definições paralelas em classes ascendentes produzem conflitos
• a definição de características idênticas para os veículos terrestres e 
aquáticos torna a definição de um veículo anfíbio ambígua e inconsistente
Veículo
Veículo 
Terrestre
Veículo 
Aquático
{overlapping}
Anfíbio BarcoAutomóvel
José Correia UML – Diagramas de Classes 82
Herança múltipla (cont.)
? As subclasses de uma dada generalização podem-se sobrepor ou 
podem ser disjuntas
• por exemplo, um determinado veículo pode ser terrestre e aquático ao 
mesmo tempo, ou seja, assumir ambas as formas em simultâneo – a 
generalização é sobreposta
• na generalização relativa aos empregados (pagos à hora, assalariados ou 
fixos), um determinado empregado ou pertence a uma das subclasses ou 
a outra, mas nunca às duas em simultâneo – generalização disjunta
? A herança múltipla permite misturar informação de duas ou mais 
fontes
? Cada generalização deve ser feita sobre uma das propriedades da 
classe
? A generalização múltipla deve ser usada quando uma classe 
necessitar de refinamentos em dimensões distintas e independentes
José Correia UML – Diagramas de Classes 83
Classificação múltipla (≠ simples)
? Caso em que um objecto pode pertencer num dado momento a várias 
classes, sem que exista uma subclasse que represente a intersecção 
dessas classes (com herança múltipla)
combinações legais: {Mulher, Enfermeira}, {Homem, Fisioterapeuta}, ...
? A classificação múltipla pode ser simulada por agregação de papéis
Homem
Mulher
Pessoasexo
função
Médico
Enfermeira
Fisioterapeuta
{incomplete}
José Correia UML – Diagramas de Classes 84
Classificação dinâmica (≠ estática)
? Caso em que a(s) classe(s) a que um objecto pertence pode(m) variar 
ao longo da vida do objecto
? Indicado por estereótipo «dynamic»
Pessoa
tarefa
Gestor
Engenheiro
Vendedor
«dynamic»
atributo discriminante (atributo de pessoa que 
indica a subclasse a que pertence)
uma pessoa que num dado momento tem a tarefa de 
gestor, pode noutro momento ter a tarefa de vendedor, etc.
José Correia UML – Diagramas de Classes 85
Elementos derivados
? Elemento derivado (atributo, associação ou classe) - elemento
calculado em função doutros elementos do modelo
? Notação: barra “/” antes do nome do elemento derivado
? Um elemento derivado tem normalmente associada uma restrição que 
o relaciona com os outros elementos
José Correia UML – Diagramas de Classes 86
Elementos derivados: Exemplos
Movimento
data
valor
/ TotalMensal
mês
valor
{ valor = (select sum(valor) from Movimento 
where month(data) = mês) }
Empresa 1 Departamento
*
Pessoa
TrabalhaEmDepartamento
1empregador1
*
*
dataNascimento
/idade
{ idade = dataActual() – dataNascimento }
José Correia UML – Diagramas de Classes 87
Perspectivas a usar
(num diagrama de classes)
? Um diagrama de classes é construído de acordo com determinada 
perspectiva (situada num dado nível de abstracção)
? Tipos comuns de perspectivas:
• Conceptual: descrição dos conceitos do domínio do problema
- as classes e respectivas associações representam conceitos
- em alguns casos, descrição das principais responsabilidades do objecto
• Especificação: descrição das interfaces das classes
- as classes já representam elementos de software
- as associações representam as responsabilidades
dos objectos
• Implementação: a descrição das interfaces é complementada com a 
descrição das respectivas implementações
José Correia UML – Diagramas de Classes 88
Resumo
José Correia UML – Diagramas de Classes 89
Resumo
? Um diagrama de classes é construído e refinado ao longo das várias 
fases do desenvolvimento do software, por analistas, projectistas 
(designers) e implementadores
? Elementos da UML presentes nos diagramas de classes:
• Classes, com as respectivas estruturas internas e comportamento
• Associações, agregações, dependências e relações de herança
• Multiplicidade e indicadores de navegação
• Nomes de papéis (o que uma classe representa para outra)
José Correia UML – Diagramas de Classes 90
Referências
Estes apontamentos foram baseados em:
? “UML – Unified Modeling Language”, Curso em Tecnologia de 
Objectos, FEUP, Novembro 2000
Ademar Aguiar, Gabriel David, João Pascoal Faria
? “Desenvolvimento OO – Construção do modelo de objectos através da 
linguagem UML”, ISPGaya, Novembro 1998
César Toscano
? UML, Capítulo 2, “Objectos e Classes”,ISPGaya
José Maria Bonnet
? “Practical UML: A Hands-On Introduction for Developers”,
TogetherSoft Corporation
? “UML Metodologias e Ferramentas CASE”, Centro Atlântico, 2001
Alberto Silva, Carlos Videira

Outros materiais