Diagrama de classes
�Estrutura do sistema (classes)�Representação estática da colaboração
(relações)
�Relações�associação (mais comum)�agregação (um tipo de associação),�generalização/especialização�dependência
Associação
Professor
Disciplina
leciona
Objetos de uma classe se associam a objetos de outra
Nome da associação
Multiplicidade das relações
����������� � � � �����������
����������������� � � ���������
������������
� ������������
���������������
��!����!����
� �� � ��������
Multiplicidade: exemplo
Professor
Disciplina
leciona 1..* 1
João
José
Maria
Matemática
Física
quim
História
Multiplicidade: exercício
João
José
Maria
FIAT AXY8704
FUSCA BHY9910
CORCEL ATT1020
Qual a representação em UML para o caso seguinte?
Pessoa Carro
Multiplicidade: exemplo
Qual a representação em UML para o caso seguinte?Faça um exemplo com instâncias que ilustre a representação.
Uma pessoa participa de no máximo 3 projetos, mas pode não participar.
Um projeto pode ter vários participantes e somente pode começa a existir quando o primeiro participante é designado.
Papéis
Empresa
Pessoa
Trabalha ou emprega ?
Qual a interpretação desejada?
pessoa trabalha para Empresa ouempresa trabalha (presta um serviço) para Pessoa;
Trabalha Emprega (contrata)
empresa emprega Pessoa oupessoa emprega (contrata) Empresa
Papéis
Empresa
Pessoa
empregador empregado
Papel de empresa Papel de
pessoa
Uso de papéis pode suprimir ambigüidades
Levantamento das associações
�Examinar�Regras do negócio, �Modelo do domínio�Requisitos funcionais�Casos de uso�Diagramas de interação
Associação reflexiva: exemplo 1
Pessoas
Pessoa
0..*
filho
pai 0..1
Mário
José
Maria
Carlos
Filho(a) pai
Mário é pai de Maria
Quem é o pai de Mário?
Associação reflexiva: exemplo 2
João
Maria
José
Mário
Gerente
subordinado João é gerente de Maria e José
Empregado 0..*
gerente
subordinado
1
José é gerente de Mário
Quem é gerente de João?
Classes associativas
Quando uma relação associativa possui atributos próprios pode ser transformada em classe.
Classes associativas: características
�Frequentes em relações de multiplicidade *:*
�Não é nomeada: somente a classe associativa
�Classes associativas podem estar relacionadas a outras classes.
Classes associativas: exercício
� Uma companhia aérea oferece vôos�Número do vôo�Data e horário de partida�Duração
� Passageiros tem programa de fidelidade�Número do cartão de fidelidade�Nome�Sobrenome
� Passageiros recebem milhas por vôo função da duração
Levantamento de associações
�Exemplo: �regras do negócio de uma biblioteca�“um aluno pode emprestar no máximo quatro
obras”
Aluno
Livro
Empresta 0..4 0..1
Levantamento das associaçõessd análise casos de uso
:meteorologista:IUConv ersao :CtrlConv ersao :Historico :Conv ersaoCF
solicitar valor Celsius
valor Celsius?
c
c
converter valor c
guardar conversao
valor Fahrenheitmostrar valor convertido
valor Fahrenheit
Classes de análise e associaçõesclass Classes de análise (associações)
ConversaoCFCtrlConversao
Historico
IUConversao
:IUHistorico CtrlHistorico
0..10pertence
1
1 111
1 11 1
AGREGAÇÃO
� Composição/pertinência�associação
� Parte� Todo� Propagação
class Classe
Janela
Botão ComboBox ScrollBar
3
1
1
1
0..1
1
Exercício: desenhe uma instância possível da classe janela
Tipos de agregação
�Composição
�Associação
class Classe
Janela
Botão ComboBox ScrollBar
3
1
1
1
0..1
1
class Classe
Time Jogador
**
Agregação por composição
�Relação forte�Destruição do todo se propaga para as partes�Tempo de vida do todo = das partes
Exemplo: agregação por composição
class Aluno {public String nome;private Endereco endereço = new Endereco(“R. JP”,518, “APTO 14”, “Curitiba”);
}
Levantamento de agregações
� Decomposição� dividir classe complexa
� Composição� Coleção de objetos reunidos� barra de rolagem + menu + text area = janela
� Partes comuns� classes com subconjunto de atributos
semelhantes
Classes de análise e relações class Classes de análise (associações)
ConversaoCFCtrlConversao
Historico
IUConversao
:IUHistorico CtrlHistorico
0..10
1
1 111
1 11 1
GENERALIZAÇÃO
� Classes compartilham atributos e comportamentos
� É um tipo de
� Herda atributos e métodos
Relação de generalização
Qualidade de uma hierarquia
�Estável: critérios de classificação não mudam ao longo do tempo.
�Extensível: é fácil incluir novas classes derivadas na hierarquia
�Dica: respeitar o princípio da substituição
Princípio da substituição
Qualquer instância de uma classe derivada pode ser tratada como se fosse uma instância de uma classe base sem alterar a semânticade um programa escrito para a classe base.
Exemplo: taxonomia mal feita
Livro
LivroEmprestado LivroDisponível
�Não construir hierarquias em função de estados das classes
Top Related