Diagrama de Classes (Análise de casos de uso) Prof. Cesar Augusto Tacla 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 Nome da associação Multiplicidade das relações Objetos de uma classe se associam a objetos de outra!! Multiplicidade: exemplo Multiplicidade: exercício.. Qual a representação em UML para o caso seguinte? Carro João Matemática João FIAT AXY8704 Física quim FUSCA BHY990 História CORCEL ATT020
Multiplicidade: exemplo Navegabilidade: unidirecional Qual a representação em UML para o caso seguinte? Faça um exemplo com instâncias que ilustre a representação. Nã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. Navegabilidade: bidirecional Navegabilidade: não especificada Não especificada Não especificada Direção de leitura Papéis Papéis Empresa Trabalha ou emprega? Empresa empregador empregado Qual a interpretação desejada? Trabalha pessoa trabalha para Empresa ou empresa trabalha (presta um serviço) para ; Emprega (contrata) empresa emprega ou pessoa emprega (contrata) Empresa Papel de empresa Uso de papéis pode suprimir ambigüidades Papel de pessoa 2
Levantamento das associações Examinar Regras do negócio, Modelo do domínio Requisitos funcionais Casos de uso Diagramas de interação Associações reflexiva Objetos de uma classe se relacionam com objetos da mesma classe Associação reflexiva: exemplo Associação reflexiva: exemplo 2 filho 0.. Empregado 0.. subordinado pai 0.. gerente s Mário Mário é pai de João Gerente Filho(a) pai Quem é o pai de Mário? subordinado João é gerente de e é gerente de Mário Carlos Mário Quem é gerente de João? Classes associativas Classes associativas: características Frequentes em relações de multiplicidade : Não é nomeada: somente a classe associativa Quando uma relação associativa possui atributos próprios pode ser transformada em classe. Classes associativas podem estar relacionadas a outras classes. 3
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 Levantamento de associações Exemplo: regras do negócio de uma biblioteca um aluno pode emprestar no máximo quatro obras Aluno 0.. Empresta 0..4 Livro Passageiros recebem milhas por vôo função da duração Levantamento das associações sd análise casos de uso Classes de análise e associações :meteorologista :IUConv ersao :CtrlConv ersao :Historico :Conv ersaocf s de análise (associações) solicitar valor Celsius valor Celsius? c IUConversao CtrlConversao ConversaoCF c pertence 0..0 converter valor c guardar conversao mostrar valor convertido valor Fahrenheit :IUHistorico CtrlHistorico Historico valor Fahrenheit AGREGAÇÃO Agregação: adornos Composição/pertinência associação Parte Todo Propagação Janela Time Jogador Exercício: desenhe uma instância possível da classe janela 3 0.. Botão ComboBox ScrollBar Qual a interpretação? 4
Tipos de agregação Agregação por composição Composição Janela 3 0.. Botão ComboBox ScrollBar Relação forte Destruição do todo se propaga para as partes Tempo de vida do todo = das partes Associação Time Jogador Exemplo: agregação por composição Agregação por associação Relação mais fraca que anterior Tempos de vida diferentes class Aluno { public String nome; private Endereco endereço = new Endereco( R. JP,58, APTO 4, Curitiba ); } Agregação: diferença 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 5
Agregação: partes comuns Classes de análise e relações s de análise (associações) IUConversao CtrlConversao ConversaoCF 0..0 :IUHistorico CtrlHistorico Historico GENERALIZAÇÃO GENERALIZAÇÃO Classes compartilham atributos e comportamentos É um tipo de Relação de generalização Sobreposição do método calcularipva Herda atributos e métodos Taxonomia: hierarquia de classes Atributos e operações comuns 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 Atributos e operações específicas 6
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ântica de um programa escrito para a classe base. Exemplo Círculo e polígonos podem ser tratados como FormaGeométrica Exemplo: taxonomia mal feita Herança múltipla Livro ObjetoVoador Animal LivroEmprestado LivroDisponível Avião Helicóptero Pássaro Não construir hierarquias em função de estados das classes 7