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

Diagrama de classes1.1

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