Diagrama de classes1.1

8,679 views
8,373 views

Published on

Published in: Education

Diagrama de classes1.1

  1. 1. Projeto de Software Diagrama de Classes Alunos: Maiky Nata, Douglas Pose, Igor Moreia
  2. 2. <ul><li>Diagrama de Classes </li></ul><ul><li>Demonstra a estrutura estática das </li></ul><ul><li>classes de um sistema, seus atributos e </li></ul><ul><li>operações </li></ul><ul><li>Mostra o relacionamento entre as </li></ul><ul><li>classes </li></ul>
  3. 3. Exemplo:
  4. 4. <ul><li>Perspectivas de um Diagrama </li></ul><ul><li>de Classes </li></ul><ul><li>Conceitual: forma abstrata de se </li></ul><ul><li>observar classes e objetos e </li></ul><ul><li>independente da linguagem de </li></ul><ul><li>programação (Modelo Conceitual) </li></ul><ul><li>De Implementação: pensa-se em </li></ul><ul><li>detalhes de implementação para definir </li></ul><ul><li>as classes e objetos. </li></ul>
  5. 5. <ul><li>Definição de Classes </li></ul><ul><li>Conceitual: são agrupamentos de objetos, </li></ul><ul><li>são abstrações de um coletivo de </li></ul><ul><li>entidades do mundo real </li></ul><ul><li>O modelo genérico desse coletivo contém </li></ul><ul><li>atributos e comportamentos comuns. </li></ul>
  6. 6. <ul><li>Definição de Classes </li></ul><ul><li>De implementação: corresponde a um tipo de uma linguagem de programação. </li></ul><ul><li>Um modelo genérico para criar variáveis </li></ul><ul><li>que armazenarão os objetos </li></ul><ul><li>correspondentes. </li></ul>
  7. 7. <ul><li>Notação UML para Atributos </li></ul><ul><li>A maioria é opcional, seu uso vai depender </li></ul><ul><li>do tipo de visão no qual estamos trabalhando </li></ul><ul><li>e podem ser abstratos ou utilizar a notação </li></ul><ul><li>de uma linguagem de programação. </li></ul><ul><li>[Visibili/d]Nome[Multiplici/d]:[Tipo]=[Valor][{Proprie/ds}] </li></ul>
  8. 8. <ul><li>Notação UML para Métodos </li></ul><ul><li> A notação e uso vai depender do tipo de </li></ul><ul><li>visão no qual estamos trabalhando e podem </li></ul><ul><li>ser abstratos ou utilizar a notação de uma </li></ul><ul><li>linguagem de programação. </li></ul><ul><li>[Visibili/d]Nome(Parâmetros)]:[Retorno][{Proprie/ds}] </li></ul>
  9. 9. Exemplo de Uma Classe <ul><li>Aluno </li></ul><ul><li>----------------------------------nome:TipoNome </li></ul><ul><li>RA: TipoCódigo </li></ul><ul><li>---------------------------------- </li></ul><ul><li>calculaMédia():TipoNota </li></ul><ul><li><<entidade>> </li></ul><ul><li>Aluno </li></ul><ul><li>DePacoteCadastro </li></ul><ul><li>------------------------------------- </li></ul><ul><li>-nome[30]:char </li></ul><ul><li>+RA: int {valorconstante} </li></ul><ul><li>------------------------------------- </li></ul><ul><li>+calculaMédia():Double </li></ul>
  10. 10. Entidades de Especificação ou Descrição <ul><li>A especificação ou descrição de um </li></ul><ul><li>objeto deve ser representada como uma </li></ul><ul><li>entidade em separado </li></ul><ul><li>evita perda de informação quando o objeto é </li></ul><ul><li>deletado </li></ul><ul><li>reduz informações redundantes ou </li></ul><ul><li>duplicadas </li></ul><ul><li>Muito comum no domínio de produtos e </li></ul><ul><li>vendas </li></ul>
  11. 11. Melhor Ex.: Pior Item -------------------- Descrição Preço Número serial UPC Especificação Produto ----------------------------- Descrição Preço UPC Item ---------------------- Número serial Descreve
  12. 12. <ul><li>Identificação das Classes de </li></ul><ul><li>Controle </li></ul><ul><li>Definir pelo menos uma classe do tipo </li></ul><ul><li>controle para cada caso de uso de forma que </li></ul><ul><li>ela contenha a descrição e comando do </li></ul><ul><li>processo associado ao caso de uso. </li></ul><ul><li>Definir classes de controle auxiliares e m </li></ul><ul><li>certos casos de uso que devido aà </li></ul><ul><li>complexidade requeiram a divisão de seu </li></ul><ul><li>processo em subprocessos. As classes </li></ul><ul><li>auxiliares seriam controladas pela classe de </li></ul><ul><li>controle principal </li></ul>
  13. 13. <ul><li>Identificação das Classes de </li></ul><ul><li>Controle </li></ul><ul><li>Suas principais características são: Cria, ativa e anula objetos controlados; </li></ul><ul><li>Controla a operação de objetos controlados; </li></ul><ul><li>Controla a concorrência de pedidos de objetos controlados; </li></ul><ul><li>Em muitos casos corresponde a implementação de </li></ul><ul><li>um objeto intangível; </li></ul><ul><li>Gerente de Registro para o Caso de Uso </li></ul><ul><li>Registrar Alunos </li></ul>
  14. 14. <ul><li>Identificação das Classes de </li></ul><ul><li>Fronteira </li></ul><ul><li>Definir uma classe do tipo fronteira para </li></ul><ul><li>cada ator que participe do caso de uso, </li></ul><ul><li>pois cada ator que pode exigir um </li></ul><ul><li>protocolo próprio para comunicação. </li></ul><ul><li>Uma classe para interface com o </li></ul><ul><li>usuário, uma classe para interface com </li></ul><ul><li>a impressora, uma classe para interface </li></ul><ul><li>com a porta serial, etc. </li></ul>
  15. 15. <ul><li>Identificação das Classes de </li></ul><ul><li>Fronteira </li></ul><ul><li>Exemplos: Interface tipo Janela, </li></ul><ul><li>Protocolo de Comunicação, Interface de </li></ul><ul><li>Impressão, Sensores, etc. </li></ul><ul><li>Classes: Formulário em Branco e </li></ul><ul><li>Sistema de Cobrança </li></ul>
  16. 16. <ul><li>Relacionamentos </li></ul><ul><li>Os relacionamentos entre as classes </li></ul><ul><li>representam a interação entre seus </li></ul><ul><li>objetos </li></ul><ul><li>Tipos: </li></ul><ul><li>Associação </li></ul><ul><li>Agregação </li></ul><ul><li>Generalização </li></ul><ul><li>Dependência e Refinamentos </li></ul>
  17. 17. <ul><li>Associações </li></ul><ul><li>Conexão entre classes/objetos </li></ul><ul><li>Relacionamento que descreve uma série </li></ul><ul><li>de ligações entre duplas de classes/ </li></ul><ul><li>objetos </li></ul><ul><li>Uma ligação significa por exemplo que: </li></ul><ul><li>elas &quot;conhecem uma a outra“ </li></ul><ul><li>&quot;estão conectadas com“ </li></ul><ul><li>para cada X existe um Y </li></ul>
  18. 18. <ul><li>Associações Simples </li></ul><ul><li>O mais comum, com apenas uma </li></ul><ul><li>conexão, representada por uma linha </li></ul><ul><li>sólida e um nome (geralmente verbo) </li></ul>Caixa Venda Registra
  19. 19. <ul><li>Associações </li></ul><ul><li>Pode possuir dois nomes, significando </li></ul><ul><li>um nome para cada sentido da </li></ul><ul><li>associação e os papéis de cada classe </li></ul>Cliente Conta Corrente Possui -> ← É possuído
  20. 20. <ul><li>Associações – Cardinalidade </li></ul><ul><li>(Multiplicidade) </li></ul><ul><li>Especifica o número de objetos de cada </li></ul><ul><li>classe envolvidos com a associação </li></ul><ul><li>A leitura da cardinalidade é diferente </li></ul><ul><li>para os diferentes sentidos da </li></ul><ul><li>associação </li></ul>Caixa Venda Registra 1 0..*
  21. 21. <ul><li>Associações - Navegabilidade </li></ul><ul><li>Mostra a direção de navegação, ou seja </li></ul><ul><li>do canal de comunicação entre os </li></ul><ul><li>objetos e classes. </li></ul><ul><li>Uma associação é navegável da classe </li></ul><ul><li>A para a classe B, se, dado um objeto </li></ul><ul><li>de A, consegue-se obter de forma </li></ul><ul><li>direta os objetos relacionados da classe </li></ul><ul><li>B. </li></ul>
  22. 22. Associações - Navegabilidade Dada uma mercadoria pode-se identificar diretamente a empresa fornecedora,mas a volta não é verdadeira Empresa Mercadoria Fornece 0...* 0...*
  23. 23. <ul><li>Associação Recursiva ou </li></ul><ul><li>Reflexiva </li></ul><ul><li>Os objetos conectados são da mesma </li></ul><ul><li>classe </li></ul>Pessoa Esposa Marido É casado com
  24. 24. <ul><li>Associação Qualificada </li></ul><ul><li> Usadas com multiplicidades 1..* ou *. </li></ul><ul><li>O qualificador (chave) identifica um </li></ul><ul><li>Objeto. </li></ul>Cliente Cód_Conta Corrente Conta corrente
  25. 25. <ul><li>Associação Exclusiva </li></ul><ul><li>Restrição em duas ou mais associações, </li></ul><ul><li>especificando que objetos de uma classe </li></ul><ul><li>podem participar de no máximo uma das </li></ul><ul><li>associações ao mesmo tempo </li></ul>Contrato {OU} ----------------------------------------- 0...* 0...* 0...* 0...* 1...* 1...*
  26. 26. <ul><li>Associação Ordenada </li></ul><ul><li>Especifica uma ordem entre os objetos </li></ul><ul><li>da associação. Ex: janelas de um </li></ul><ul><li>sistema têm que ser ordenadas na tela </li></ul><ul><li>(uma está no topo, uma está no fundo e </li></ul><ul><li>assim por diante). </li></ul>Janela Top Janela Bottom {Ordenada}
  27. 27. <ul><li>Associações de Classe </li></ul><ul><li>Serve para adicionar informações </li></ul><ul><li>extras a uma associação existente, </li></ul><ul><li>quando essa possuir operações e </li></ul><ul><li>métodos (ela é uma classe) </li></ul>Cliente Fila Processo
  28. 28. <ul><li>Associação Ternária </li></ul><ul><li>Envolve três classes (inclusive uma </li></ul><ul><li>classe de associação) </li></ul>Contrato Cliente Regras Contratuais 1...* 1...* 0...*
  29. 29. <ul><li>Agregação </li></ul><ul><li>A agregação é um caso particular de </li></ul><ul><li>associação </li></ul><ul><li>Uma das classes é uma parte ou está </li></ul><ul><li>contida em outra. </li></ul><ul><li>Palavras chaves: consiste em, contém, </li></ul><ul><li>é parte de. </li></ul><ul><li>Dois casos: composição e </li></ul><ul><li>compartilhamento. </li></ul>
  30. 30. <ul><li>Agregação de </li></ul><ul><li>Compartilhamento </li></ul><ul><li>Uma classe pode fazer parte de mais de </li></ul><ul><li>um composto e/ou estar contida nele </li></ul><ul><li>várias vezes. </li></ul>Time Pessoa Membros
  31. 31. <ul><li>Generalização </li></ul><ul><li>Relacionamento entre uma classe geral </li></ul><ul><li>e outra mais específica (herança). A </li></ul><ul><li>classe mais específica pode ser usada </li></ul><ul><li>no lugar da mais geral. </li></ul><ul><li>Generalização normal </li></ul><ul><li>Generalização restrita: sobreposição, </li></ul><ul><li>disjuntiva, completa e incompleta </li></ul>
  32. 32. <ul><li>Generalização Normal </li></ul><ul><li>A classe mais específica (sub-classe) herda </li></ul><ul><li>tudo da mais geral (super-classe) </li></ul>Conta Corrente Poupança
  33. 33. <ul><li>Dependências </li></ul><ul><li>Conexão entre dois elementos, </li></ul><ul><li>representando que uma mudança no </li></ul><ul><li>elemento independente afeta o </li></ul><ul><li>dependente. </li></ul>Classe A Classe B <<Amigo>>
  34. 34. <ul><li>Identificação dos </li></ul><ul><li>Relacionamentos </li></ul><ul><li>Na perspectiva conceitual representam-se </li></ul><ul><li>relacionamentos conceituais </li></ul><ul><li>As associações são estabelecidas </li></ul><ul><li>analisando-se os papéis. </li></ul><ul><li>A generalização representa a hierarquia </li></ul><ul><li>entre tipos e seus subtipos </li></ul><ul><li>A agregação entre um todo e suas </li></ul><ul><li>partes. </li></ul>
  35. 35. <ul><li>Identificação dos </li></ul><ul><li>Relacionamentos </li></ul><ul><li>Na perspectiva de implementação </li></ul><ul><li>representa um canal de comunicação </li></ul><ul><li>entre duas classes </li></ul><ul><li>A necessidade desse canal é dada pelos </li></ul><ul><li>diagramas de interação. Sempre que </li></ul><ul><li>existir uma mensagem trocada entre dois </li></ul><ul><li>objetos nesses diagramas existirá uma </li></ul><ul><li>associação entre eles, que representa as </li></ul><ul><li>responsabilidades das classes. </li></ul>
  36. 36. <ul><li>Identificando Generalizações </li></ul><ul><li>Quando particionar em Subclasses </li></ul><ul><li>a subclasse tem atributos adicionais de </li></ul><ul><li>interesse </li></ul><ul><li>a subclasse tem associações adicionais de </li></ul><ul><li>interesse </li></ul><ul><li>a subclasse será manipulada ou usada de </li></ul><ul><li>maneira diferente da superclasse ou das </li></ul><ul><li>outras subclasses </li></ul><ul><li>a subclasse se comporta diferente da superclasse </li></ul><ul><li>ou das outras subclasses </li></ul>
  37. 37. Identificando Generalizações
  38. 38. <ul><li>Identificando Agregações </li></ul><ul><li>Verificar se algumas classes podem ser </li></ul><ul><li>agrupadas em algum composto: </li></ul><ul><li>elas são geralmente criadas/destruídas no </li></ul><ul><li>mesmo instante. </li></ul><ul><li>possuem relacionamentos comuns </li></ul>
  39. 39. <ul><li>Identificando Agregações </li></ul><ul><li>Verificar se alguma classe pode ser subdividida </li></ul><ul><li>em partes. </li></ul><ul><li>as partes possuem tempo de vida limitado </li></ul><ul><li>ao tempo de vida do composto </li></ul><ul><li>possuem relacionamentos particulares e de </li></ul><ul><li>interesse </li></ul>
  40. 40. <ul><li>Identificando Atributos </li></ul><ul><li>Atributos devem preferencialmente </li></ul><ul><li>representar tipos primitivos de dados ou </li></ul><ul><li>de valores simples </li></ul><ul><li>Ex.: Data , Número , Texto , Hora , Endereço , </li></ul><ul><li>etc. </li></ul><ul><li> Atributos não devem ser usados para: </li></ul><ul><li>Representar um conceito complexo </li></ul><ul><li>Relacionar conceitos (atributo “chave estrangeira”) </li></ul>
  41. 41. <ul><li>Identificação dos Métodos </li></ul><ul><li>Os métodos são acrescentados na </li></ul><ul><li>perspectiva de implementação e são </li></ul><ul><li>derivados a partir dos diagramas de </li></ul><ul><li>interação: colaboração e sequências. </li></ul><ul><li>É útil distinguir operações de métodos. </li></ul><ul><li>Operações é algo que se evoca sobre um </li></ul><ul><li>objeto (a chamada do procedimento). Para </li></ul><ul><li>realizar uma operação a classe implementa </li></ul><ul><li>um método (o corpo do procedimento). </li></ul>
  42. 42. Quando utilizar diagrama de classes Iremos utilizar os diagramas de classes para a construção dos produtos que necessitam de orientação a objetos. Diagramas de classes são a base de quase todas as metodologias implementadas em orientação a objetos, portanto nós iremos utilizá-los o tempo todo.
  43. 43. Pontos fortes e fracos Diagramas de classes são muito ricos na descrição do sistema/software. Podem ser muito complexos de usar. Podemos ficar preso em detalhes de implementação.
  44. 44. Ferramentas que auxiliam na criação Astah UML UmbrelloUML Visual Paradigma
  45. 45. Bibliografia http://astah.change-vision.com/ www.inf.ufpr.br www.dsc.ufcg.edu.br/~jacques/cursos/apoo/html/.../proj8.htm

×