Baixe o app para aproveitar ainda mais
Prévia do material em texto
Diagrama de Classe Livro: UML 2.0 – Uma abordagem prática Autor: Gilleanes T. A. Guedes Capítulo 4 Diagrama de Classes O diagrama de classes é um dos mais importantes e mais utilizados da UML. Seu principal enfoque está em permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos, bem como em demonstrar como as classes do diagrama de relacionam, complementam e transmitem informações entre si. Diagrama de Classes Esse diagrama apresenta uma visão estática de como as classes estão organizadas, preocupando-se em como definir a estrutura lógica das mesmas. O diagrama de classes serve ainda como base para a construção da maioria dos outros diagramas da linguagem UML. Basicamente, o diagrama de classes é composto por suas classes e pelas associações existente entre elas, ou seja, o relacionamentos entre as classes. Diagrama de Classes Alguns métodos de desenvolvimento de software recomendam que se utilize o diagrama de classes ainda durante a fase de análise, produzindo-se um modelo conceitual a respeito das informações necessárias ao software. Somente na fase de projeto torna-se o modelo conceitual do diagrama de classes e produz-se o modelo de domínio que já enfoca na solução do problema. Atributos e Métodos Os métodos são declarados no diagrama de classes, identificando os possíveis parâmetros que são por ele recebidos e os possíveis valores por ele retornados. Entretanto o diagrama de classes não se preocupa em definir as etapas que tais métodos deverão percorrer quando forem chamados, sendo esta uma função atribuída a outros diagramas. Atributos e Métodos Exemplo de diagrama de classe: Retângulo com três divisões; Visibilidade; Tipos de Retorno. Atributos e Métodos Exemplo de diagrama de classe: Parâmetros dos métodos. Diagrama de Classes Refletido em JAVA public class Conta_comum { protected long nro_conta; protected Date dt_abertura; protected Date dt_encerramento; protected int situacao; protected int senha; protected double saldo; public long abrirConta(int senha) { return 0; } public int consultarConta(long nro_conta) { return 0; } public int validarSenha(int senha) { return 0; } public double saldoConta() { return 0; } public int sacarValor(double valor) { return 0; } public int depositarValor(long nro_conta, double valor) { return 0; } public int encerrarConta() { return 0; } public String extratoConta() { return ""; } Características Extras Atributos que sofrem algum tipo de cálculo. Valores Iniciais Multiplicidade Relacionamento ou Associações As classes costumam ter relacionamentos entre si, chamados associações, que permitem que elas compartilhem informações entre si e colaborarem para a execução dos processos executados pelo sistema. As associações são representadas por linhas ligando as classes envolvidas. Essas linhas podem ter nomes ou títulos para auxiliar a compreensão do tipo de vínculo estabelecido entre os objetos das classes envolvidas nas associações. Associações Unárias ou Reflexivas Este tipo de associação ocorre quando existe um relacionamento de um objeto de uma classe com objetos da mesma classe. Multiplicidade Multiplicidade Significado 0..1 No mínimo zero (nenhum )e no máximo um. Indica que os objetos das classes associadas não precisam obrigatoriamente estar relacionados, mas se houver relacionamento indica que apenas uma instância da classe relaciona-se com as instância da outra classe (ou da outra extremidade da associação, se esta for unária. 1..1 Um e somente um. Indica que apenas um objeto da classe relaciona-se com os objetos da outra classe. 0..* No mínimo nenhum e no máximo muitos. Indica que pode ou não haver instâncias da classe participando do relacionamento * Muitos. Indica que muitos objetos da classe envolvida na associação. 1..* No mínimo um e no máximo muitos. Indica que há pelo menos um objeto envolvido no relacionamento, podendo haver muitos objetos envolvidos. 3..5 No mínimo três e no máximo cinco. Estabelece que existem pelo menos três instâncias envolvidas no relacionamento e que podem ser quatro ou cinco as instâncias envolvidas, mas não mais do que isso. Papéis Informações extras que podem ajudar a explicar a função de um objeto. O uso de papéis pode facilitar a compreensão da associação existente, mas nem sempre é necessário, e seu uso excessivo pode deixar os diagramas visualmente muito poluidos. Associação Binária Associações binárias ocorrem quando são identificados relacionamentos entre objetos de duas classes distintas. Navegabilidade A navegabilidade é representada por uma seta em uma das extremidades da associação, identificando o sentido em que as informações são transmitidas entre os objetos das classes envolvidas, ou seja, o sentido em que os métodos poderão ser disparados. Associação Ternária ou N-ária Associações ternárias ou n-árias são associações que conectam objetos de mais de duas classes. São representadas pelo losango para onde convergem todas as ligações da associação. Exercícios Estudo de caso: Sistema de Controle de Cinema Agregação Agregação é um tipo especial de associação onde se tenta demonstrar que as informações de um objeto (chamado objeto-todo) precisam ser complementadas pelas informações contidas em um mais objetos de outra classe (chamados objetos-parte). Agregação A associação de agregação pode, em muitos casos, ser substituída por uma associação binária simples, dependendo da visão de quem faz a modelagem. A função principal de uma associação do tipo agregação é identificar a obrigatoriedade de uma complementação das informações de um objeto-todo por seus objetos- parte, quando este for consultado. Já uma associação binária essa obrigatoriedade não está explícita. Composição Uma associação do tipo composição constitui-se uma variação da agregação, onde é apresentado um vínculo mais forte entre os objetos-todo e os objetos-parte, procurando demonstrar que os objetos-parte tem de estar associados a um único objeto-todo. Em uma composição os objetos-parte não podem ser destruídos por um objeto diferente do objeto-todo ao qual estão relacionados. Composição Quando usar composição ou agregação? Quem é composição e quem é agregação? Quando usar composição ou agregação? Na Agregação, a existência do Objeto-Parte faz sentido, mesmo não existindo o Objeto-Todo. Vejamos o exemplo Time-Atleta: Quando usar composição ou agregação? Já a Composição é uma agregação mais forte; nela, a existência do Objeto-Parte NÃO faz sentido se o Objeto- Todo não existir. Generalização/Especialização O objetivo dessa associação é representar a ocorrência de herança entre as classes, identificando as classes-mãe (ou superclasses), chamadas gerais, e classes-filhas (ou subclasses), chamadas especializadas, demonstrando a hierarquia entre as classes e possivelmente métodos polimórficos nas classes especializadas. A generalização/especialização ocorre quando existem duas ou mais classes com características semelhantes. Generalização/Especialização Para evitar ter de declarar atributos e/ou métodos idênticos e como uma forma de reaproveitar código, cria- se uma classe geral em que são declarados os atributos e métodos comuns a todas as classes envolvidas no processo e, então, declaram-se classes especializadas ligadas à classe geral, que herdam todas as suas características, podendo ter atributos e método próprios. Generalização/Especialização Além disso, métodos podem ser redeclarados em uma classe especializada com o mesmo nome, mas comportando-se de forma diferente, não sendo, portanto, necessáriomodificar o código-fonte do sistema em relação às chamadas de métodos das classes especializadas, pois o nome do método não mudou, somente foi redeclarado em uma classe especializada, e só se comporta de maneira diferente quando for chamado por objetos dessa classe. Generalização/Especialização Classe Associativa Classes associativas são aquelas produzidas quando da ocorrência de associações que tenham multiplicidade muitos (*) em todas as suas extremidades. As classes associativas são necessárias nos casos em que existem atributos relacionados à associação que não podem ser armazenados por nenhuma das classes envolvidas. Classe Associativa Classe Associativa No caso do exemplo anterior temos a seguinte situação: um ator atua em um filme e tem um único papel. E se um ator interpretasse mais de um papel em um mesmo filme? Exercícios Estudo de caso: Sistema de Controle Bancário Dependência Este relacionamento, como o próprio nome diz, identifica certo grau de dependência de uma classe em relação à outra. Realização Uma realização é um tipo de relacionamento especial que mistura características dos relacionamentos de generalização e dependência, sendo usada para identificar classes responsáveis por executar funções para outras classes. Interfaces Podemos definir como interface o contrato entre a classe e o mundo exterior. Quando uma classe implementa uma interface, se compromete a fornecer o comportamento publicado por esta interface. As interfaces podem ser de dois tipos: Interfaces fornecidas Interfaces requeridas Interfaces Requeridas Este tipo de interface descreve os serviços que outras classes devem fornecer a uma determinada classe, que não precisa ter conhecimento de quais classes implementam esses serviços. Interfaces Fornecidas Uma interface fornecida descreve um serviço implementado por uma classe. Ao implementar uma interface, uma classe suporta o conjunto de características contidas por esta e obedece às suas restrições. Interfaces É comum que uma interface fornecida em uma classe seja um interface requerida em outra, podendo facilmente ocorrer de ambas as interfaces surgirem juntas. Restrições Restrições constituem-se em informações extras que definem condições a serem validadas durante a implementação dos métodos de uma classe, das associações entre as classes ou mesmo de seus atributos. As restrições são representadas por textos limitados por chaves. Restrições podem ser usadas para detalhar requisitos não-funcionais, incluindo regras de negócio. Restrições Estereótipos do Diagrama de Classe Estereótipos são uma maneira de destacar determinados componentes do diagrama, tornando explícito que tais componentes executam alguma função um pouco diferente dos demais componentes apresentados no diagrama. Há três estereótipos mais utilizados no diagrama de classe: <<entity>> <<boundary>> <<control>> Estereótipo <<entity>> O estereótipo <<entity>> tem por objetivo tornar explícito que uma classe é uma entidade, ou seja, a classe contém informações recebidas e armazenada pelo sistema ou gerada por meio deste. Também fornecem a informação de que normalmente terão muitos objetos e que os mesmo possivelmente terão um período de vida longa, isto é, existe a possibilidade de que os objetos dessas classes precisem ser persistidos, ou seja preservados fisicamente de alguma maneira. Estereótipo <<entity>> Um problema de se utilizar esse estereótipo é que ele esconde os atributos e métodos da classe. Estereótipo <<boundary>> O estereótipo <<boundary>>, também conhecido como estereótipo de fronteira, identifica uma classe que serve de comunicação entre os atores externos e o sistema propriamente dito. Estereótipo <<control>> O estereótipo <<control>> identifica classes que servem de intermédio entre as classes <<boundary>> e as demais classes do sistema. Objetos <<control>> são responsáveis pro interpretar os eventos ocorridos sobre os objetos <<boundary>>, como movimento do mouse, pressionamento do botão. Exercícios Estudo de caso: Sistema de Controle de Clube Social Exercícios Estudo de caso: Sistema de Locação de Veículos
Compartilhar