Diagrama de classe

706 visualizações

Publicada em

Diagrama de Classe

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
706
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
42
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Diagrama de classe

  1. 1. Diagramas de Classe Professor     Wagner  Gadêa  Lorenz   wagnerglorenz@gmail.com     Disciplina:  Engenharia  de  So>ware  II   Curso  de  Sistemas  de  Informação Cachoeira do Sul, 01 de Abril de 2015.
  2. 2. Introdução O Diagrama de Classe é um dos mais importantes e mais utilizados na 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 se relacionam, complementam e transmitem informações entre si. Engenharia de Software II 2 Prof. Wagner Gadêa Lorenz
  3. 3. Introdução Esse diagrama apresenta uma visão estática de como as classes estão organizadas, preocupando-se como definir a estrutura lógica das mesmas. Engenharia de Software II 3 Prof. Wagner Gadêa Lorenz
  4. 4. Introdução O Diagrama de Classes é composto por suas classes e pelas associações existentes entre elas, ou seja, os relacionamentos entre as classes. Engenharia de Software II 4 Prof. Wagner Gadêa Lorenz
  5. 5. Diagrama de Classes Objetivo Descrever os vários tipos de objetos no sistema e o relacionamento entre eles. Perspectivas Um diagrama de classes pode oferecer três perspectivas, cada uma para um tipo de observador diferente. Engenharia de Software II 5 Prof. Wagner Gadêa Lorenz
  6. 6. Diagrama de Classes - Perspectivas • Conceitual (exemplo) • Representa os conceitos do domínio em estudo. • Perspectiva destinada ao cliente. • Especificação (exemplo) • Tem foco nas principais interfaces da arquitetura, nos principais métodos, e não como eles irão ser implementados. • Perspectiva destinada as pessoas que não precisam saber detalhes de desenvolvimento, tais como gerentes de projeto. • Implementação - a mais utilizada de todas (exemplo) • Aborda vários detalhes de implementação, tais como navegabilidade, tipo dos atributos, etc. • Perspectiva destinada ao time de desenvolvimento. Engenharia de Software II 6 Prof. Wagner Gadêa Lorenz
  7. 7. Diagrama de Classes - Perspectivas • Conceitual • Representa os conceitos do domínio em estudo. • Perspectiva destinada ao cliente. Engenharia de Software II 7 Prof. Wagner Gadêa Lorenz
  8. 8. Diagrama de Classes - Perspectivas Engenharia de Software II 8 Prof. Wagner Gadêa Lorenz
  9. 9. Diagrama de Classes - Perspectivas • Especificação • Tem foco nas principais interfaces da arquitetura, nos principais métodos, e não como eles irão ser implementados. • Perspectiva destinada as pessoas que não precisam saber detalhes de desenvolvimento, tais como gerentes de projeto. Engenharia de Software II 9 Prof. Wagner Gadêa Lorenz
  10. 10. Diagrama de Classes - Perspectivas Engenharia de Software II 10 Prof. Wagner Gadêa Lorenz
  11. 11. Diagrama de Classes - Perspectivas • Implementação - a mais utilizada de todas • Aborda vários detalhes de implementação, tais como navegabilidade, tipo dos atributos, etc. • Perspectiva destinada ao time de desenvolvimento. Engenharia de Software II 11 Prof. Wagner Gadêa Lorenz
  12. 12. Diagrama de Classes - Perspectivas Engenharia de Software II 12 Prof. Wagner Gadêa Lorenz
  13. 13. Um Diagrama de Classes contém: • Entidades • Relacionamentos Engenharia de Software II 13 Prof. Wagner Gadêa Lorenz
  14. 14. Entidades • Classe • Representação gráfica Engenharia de Software II 14 Prof. Wagner Gadêa Lorenz • Classe Concreta • Uma classe é representada na forma de um retângulo, contendo duas linhas que separam 3 partes. A primeira contém no nome da classe, a segunda os atributos da classe e a última os métodos da mesma. • Classe Abtrata • Única diferença é o estilo da fonte do nome da classe que fica em itálico.
  15. 15. Entidades • Interface • Representação gráfica Engenharia de Software II 15 Prof. Wagner Gadêa Lorenz • Representação Icon
  16. 16. Entidades • Perspectivas • Conceitual • Apenas classes são utilizadas. Neste tipo de perspectiva, uma classe é interpretada como um conceito. Apenas atributos são utilizados. • Especificação • Tanto classes como interfaces são utilizados neste tipo de perspectiva. O foco consiste em mostrar as principais interfaces e classes juntamente com seus métodos. • Não é necessário mostrar todos os métodos, pois o objetivo deste diagrama nesta perspectiva é prover uma maior entendimento da arquitetura do software a nível de interfaces. • Implementação • Nesta perspectiva, vários detalhes de implementação podem ser abordados, tais como: • visibilidade de atributos e métodos; • parâmetros de cada método, inclusive o tipo de cada um; • tipos dos atributos e dos valores de retorno de cada método. Engenharia de Software II 16 Prof. Wagner Gadêa Lorenz
  17. 17. Relacionamentos • Papel • Descreve o relacionamento Engenharia de Software II 17 Prof. Wagner Gadêa Lorenz
  18. 18. Relacionamentos • Multiplicidade (utilizado em todas as perspectivas de forma uniforme) • Notações possíveis: • Exemplo: Engenharia de Software II 18 Prof. Wagner Gadêa Lorenz Tipos Significa 0..1 Zero ou uma instância. A notação n..m indica n para m instâncias. 0..* ou * Não existe limite para o número de instâncias. 1 Exatamente uma instância. 1..* Ao menos uma instância.
  19. 19. Relacionamentos • Associação (utilizado em todas as perspectivas) • Representação Gráfica Associação • Perspectiva: • Conceitual • Define um relacionamento entre duas entidades conceituais do sistema. • Especificação • Define responsabilidades entre duas classes. Implica que existem métodos que tratam desta responsabilidade. Engenharia de Software II 19 Prof. Wagner Gadêa Lorenz
  20. 20. Relacionamentos • Perspectiva: • Implementação • Permite saber quem está apontando para quem, através da representação gráfica da navegabilidade. Além disto, é possível compreender melhor de que lado está a responsabilidade. Engenharia de Software II 20 Prof. Wagner Gadêa Lorenz public class A { private B b; public A( ){ } public void setB( B b ){ this.b = b; } public B getB( ) { return b; } } public class B { public B( ){ } }
  21. 21. Relacionamentos • Herança ou Generalização (utilizado em todas as perspectivas) • Representação Gráfica • Perspectiva: • Seja B uma generalização (extensão) de A. • Conceitual • Considera que B é um subtipo ou um tipo especial de A. O que é válido para A, também é válido para B. • Especificação • Ocorre uma herança de interface. • Implementação • Ocorre uma herança de implementação. Engenharia de Software II 21 Prof. Wagner Gadêa Lorenz
  22. 22. Relacionamentos • Herança ou Generalização (utilizado em todas as perspectivas) • Exemplo de uma herança de implementação: • Navegabilidade (utilizado apenas na perspectiva de implementação) • Um relacionamento sem navegabilidade implica que ele pode ser lido de duas formas, isto é, em suas duas direções. Ex.: • Uma empresa possui um trabalhador, como também um trabalhador trabalha em uma empresa. Engenharia de Software II 22 Prof. Wagner Gadêa Lorenz
  23. 23. Relacionamentos • Herança ou Generalização (utilizado em todas as perspectivas) • Navegabilidade (utilizado apenas na perspectiva de implementação) • Utilizando a propriedade de navegabilidade, podemos restringir a forma de ler um relacionamento. Isto é, em vez de termos duas direções, teremos apenas uma direção (de acordo com a direção da navegação). Ex.: • Uma empresa possui um trabalhador. Engenharia de Software II 23 Prof. Wagner Gadêa Lorenz
  24. 24. Relacionamentos • Agregação (utilizado apenas na perspectiva de implementação) • Definição • Agregação é uma associação em que um objeto é parte de outro, de tal forma que a parte pode existir sem o todo. • Em mais baixo nível, uma agregação consiste de um objeto contendo referências para outros objetos, de tal forma que o primeiro seja o todo, e que os objetos referenciados sejam as partes do todo. • A diferença entre os relacionamentos de associação e agregação ainda é algo de bastante discussão entre os gurus. De forma geral, utiliza-se agregação para enfatizar detalhes de uma futura implementação (perspectiva de implementação). • Representação gráfica • Agregação com navegabilidade Engenharia de Software II 24 Prof. Wagner Gadêa Lorenz public class A { private B b; public A( ){ } public void setB( B b ){ this.b = b; } public B getB( ) { return b; } } public class B { public B( ){ } }
  25. 25. Relacionamentos • Composição (utilizado apenas na perspectiva de implementação) • Definição • Em mais baixo nível, em termos de passagem por parâmetro, seria uma passagem por valor. Enquanto que agregação seria uma passagem por referência. • O todo contém as partes (e não referências para as partes). Quando o todo desaparece, todas as partes também desaparecem. • Representação Gráfica Engenharia de Software II 25 Prof. Wagner Gadêa Lorenz public class A { private B b; public A( ){ b = new B(); } } public class B { public B( ){ } }
  26. 26. Relacionamentos • Implementação (utilizado apenas na perspectiva de implementação) • Em Inglês: realization • Definição • Utilizado para indicar que uma classe implementa uma interface • Representação Gráfica • Exemplo Engenharia de Software II 26 Prof. Wagner Gadêa Lorenz Implementação de uma interface representada por um círculo Implementação de uma interface representada por um retângulo
  27. 27. Exemplo contendo as notações Engenharia de Software II 27 Prof. Wagner Gadêa Lorenz
  28. 28. Próxima Aula •Exercícios de fixação sobre Diagramas de Classe. Engenharia de Software II 28 Prof. Wagner Gadêa Lorenz
  29. 29. Dúvidas • Conteúdo • Moodle • (http://wagnerglorenz.com.br/moodle/) • Dúvidas • wagnerglorenz@gmail.com Engenharia de Software II 29 Prof. Wagner Gadêa Lorenz
  30. 30. Referências Bibliográficas • GUEDES, Gilleanes T. A.. UML: uma abordagem prática. São Paulo: Novatec, 2004. • Software Architecture and the UML, Grady Booch (http:// www.engr.uconn.edu/~steve/Cse298300/umlbooch.ppt) • Material Prof. Dr. Jacques Philippe Sauvé. Universidade Federal de Campina Grande. Engenharia de Software II 30 Prof. Wagner Gadêa Lorenz

×