Engenharia de Software

        Aula 7 – Diagrama de Classes
              Profa. Dra. Judith Pavón
    Universidade Salvador – UNIFACS
                                  2012
Objetivo da aula
O objetivo desta aula é apresentar os
conceitos de diagrama de classes.




                                        2
Conteúdo
•   Introdução
•   Classe
•   Atributos
•   Métodos
•   Ligação e Associação
•   Papel do objeto
•   Multiplicidade
•   Agregação/Composição
•   Generalização/Especialização

                                   3
Introdução
   Geralmente é utilizada a linguagem UML,
    especificamente o diagrama de classes.
   Notação que permite descrever:
    •   classes
    •   atributos e métodos
    •   relacionamentos
    •   detalhes de implementação (código)
   Pode ser usada em vários níveis de abstração
    (conceitual, lógico e físico).

                                               4
Classe
   Classe: descrição de uma coleção de objetos
    que possuem propriedades semelhantes
    (atributos, métodos, associações).

                    Produto
               códigoProduto
               descrição
               CalcularPreço( )
               CalcularImpostos( )

                                                  5
Atributo
   Informação associada a um objeto. Cada objeto da
    classe possui um valor em cada atributo definido pela
    classe.
   Na prática, somente aparecem no diagrama os atributos
    mais relevantes, pois a lista completa dos atributos e
    seus domínios estão no dicionário de dados (DD)
    separado.
         Produto
    códigoProduto:            Atributos
    Integer
    descrição: String
    CalcularPreço( )
    CalcularImpostos( )                                 6
Métodos
   São as operações que podem ser executadas sobre um
    objeto. Definida para cada objeto da classe.
   Representar no diagrama somente os métodos importantes
    para a compreensão.

DIFERENÇAS ENTRE MÉTODO DO OBJETO E MÉTODO DAS
   CLASSES

    Método do objeto (instância): atua sobre um objeto
    Método da classe: atua sobre a classe (o conjunto de
    objetos)
    •   Ex.: métodos que procuram determinados objetos na classe.

                                                                    7
Método da classe – Diagrama de classe

                         Funcionario                              Projeto
                                             1..*    1
                 nome: Integer               trabalha    Descrição: Integer
                 cargo: String                           inicio: String
                                        1     0..1
                 Salario:real           gerencia         fim:real
                 obterCargo( )                           Custo: real
Métodos          $CalcularMediaSalario( )                CalcularValorProjeto( )
                                                 Método da classe (indicado pelo
                                                 prefixo $)




   FuncionarioContratado                FuncionarioTerceirizado
  carteiraProfissional:string          inicioContrato:date
  dataAdmissão:date                    terminoContrato:date
                                       taxaAdministração


                                                                                   8
Ligação e Associação
   Uma ligação é um relacionamento entre objetos,
    que se deseja conhecer no sistema.
    •   Ex.: a ligação entre o objeto Projeto e o objeto
        FuncionarioTerceirizado.
   Uma associação é a descrição de uma coleção de
    ligações que, para fins de projeto , possuem
    propriedades semelhantes (classes envolvidas,
    atributos, métodos).
    •   Ex.: a associação entre a classe Funcionario e a classe
        Projeto.
                                                            9
Papel do objeto

    Um objeto cumpre um papel dentro de uma associação.


                                     esposa   - Ser marido ou esposa é
casamento                                     o papel exercido por um
                                    Pessoa    objeto Pessoa dentro de
                      marido      código      uma associação
                                  nome        casamento.
                                  sexo
 nome do associação               endereço
                          papel

                                                                  10
Multiplicidade
   Existem situações em que é necessário restringir o
    número de objetos associados através de uma
    associação a um objeto determinado (restringir a
    cardinalidade).
    •   Ex.: um homem não deve possuir mais de uma esposa.

   As multiplicidades são classificadas de acordo a sua
    cardinalidade máxima:
       0..1 (valor opcional)
       1.. 1 ou 1 (exatamente um)
       0..* ou * (qualquer valor inteiro não-negativo)
       1..* (qualquer valor inteiro positivo)


                                                             11
Associação 1:1


       esposa   0.. 1
                                 casamento
            Pessoa
          código        0.. 1
          nome
          sexo          marido
          endereço



                                             12
Atributos de Associações
    Uma associação pode ser tratada como uma classe,
     que possui atributos, relacionamentos e métodos. Neste
     caso é denominada classe associativa .
      •   Ex.: como toda venda não é financiada, então os atributos e
          métodos da financiamento devem aparecer no relacionamento.


                  0..1                        0..*    Venda
Financeira
                                                     número
    código                                           data
    nome                  Financiamento              ItemdeVenda
                         dataAprovação
                         autoriza( )
                                                                  13
Exemplo de Classe
   Associativa

  Produto        0..*                  0..*    Venda

 código                                       número
 nome                                         data
CalcPreço( )            ItemVenda
CalcImposto( )          quantidade
                        CalcTotal( )




                                                       14
Transformação de Classes
   Associativas

  Produto        1   0..*                  1..*   1     Venda
                            ItemVenda
 código                     quantidade                número
 nome                       CalcTotal( )              data
CalcPreço( )
CalcImposto( )

                            Ainda falta refinar este diagrama!!



                                                                15
Associação ternária
 Cidade                                          Distribuidor
                     Distribuição
código    1                                  1
                                                  número
nome          0..*                  0..*
                                                  nome
                           0..*

                           1
                     TipoProduto
                                           Distribuição é um
                     codprod               relacionamento que
                     nome                  associa estas três
                                           classes.


                                                           16
Agregação
   A agregação corresponde a um caso particular de
    associação, utilizada para expressar um relacionamento
    “todo-parte”.
   A agregação representa uma propriedade fraca, pois
    uma classe “parte” pode estar contida em várias classes
    “todo”.


PaginaWeb                      Imagem               Diretorio
                        0..*             1..*



     “todo”                    “parte”             “todo”
                                                            17
Composição
   A composição é uma variação da agregação simples. A
    diferença com a agregação simples, consiste no fato de que
    a classe parte pertence somente à classe todo.
        Exemplo: uma venda é composta de vários detalhes (itens),
         quando a venda é criada os itens de venda também o são, e
         quando a venda é eliminada também serão eliminados os itens.

    Produto                        ItemVenda                 Venda
                   1        0..*                  1..*
códigoProduto                      quantidade                número
descrição                          CalcTotal( )              data
CalcPreço( )                       CalcImp( )
CalcImp( )
                                                                    18
Generalização/Especialização
   Pessoa física/jurídica são especializações de cliente.
    Cliente é uma generalização de pessoa física/pessoa
    jurídica.
                        Cliente
                                  1       0..*   Venda
                        código
                        nome




    PessoaFísica                           PessoaJurídica
    documentoId                            CGC
    datanasc                               nomeInstituição


                                                             19
Herança e Agregação
   Herança e agregação são conceitos diversos.
   Herança é um relacionamento chamado de “é-um”
     • pessoa física é um cliente

   Agregação é chamada de “é-parte-de”
     • item de venda é parte de uma venda

   Herança não é seletiva
     • Todas as propriedades da classe genérica são

       herdadas




                                                 20
Combinando generalização e
     agregação
   Um documento pode ser composto de vários componentes.
   Um componente é uma figura, uma tabela ou texto.

                      Componente
                                   1..*                  Documento




    Texto                                       Tabela
                         Figura




                                                                21
Dúvidas




          22

Aula7 diagrama classes

  • 1.
    Engenharia de Software Aula 7 – Diagrama de Classes Profa. Dra. Judith Pavón Universidade Salvador – UNIFACS 2012
  • 2.
    Objetivo da aula Oobjetivo desta aula é apresentar os conceitos de diagrama de classes. 2
  • 3.
    Conteúdo • Introdução • Classe • Atributos • Métodos • Ligação e Associação • Papel do objeto • Multiplicidade • Agregação/Composição • Generalização/Especialização 3
  • 4.
    Introdução  Geralmente é utilizada a linguagem UML, especificamente o diagrama de classes.  Notação que permite descrever: • classes • atributos e métodos • relacionamentos • detalhes de implementação (código)  Pode ser usada em vários níveis de abstração (conceitual, lógico e físico). 4
  • 5.
    Classe  Classe: descrição de uma coleção de objetos que possuem propriedades semelhantes (atributos, métodos, associações). Produto códigoProduto descrição CalcularPreço( ) CalcularImpostos( ) 5
  • 6.
    Atributo  Informação associada a um objeto. Cada objeto da classe possui um valor em cada atributo definido pela classe.  Na prática, somente aparecem no diagrama os atributos mais relevantes, pois a lista completa dos atributos e seus domínios estão no dicionário de dados (DD) separado. Produto códigoProduto: Atributos Integer descrição: String CalcularPreço( ) CalcularImpostos( ) 6
  • 7.
    Métodos  São as operações que podem ser executadas sobre um objeto. Definida para cada objeto da classe.  Representar no diagrama somente os métodos importantes para a compreensão. DIFERENÇAS ENTRE MÉTODO DO OBJETO E MÉTODO DAS CLASSES  Método do objeto (instância): atua sobre um objeto  Método da classe: atua sobre a classe (o conjunto de objetos) • Ex.: métodos que procuram determinados objetos na classe. 7
  • 8.
    Método da classe– Diagrama de classe Funcionario Projeto 1..* 1 nome: Integer trabalha Descrição: Integer cargo: String inicio: String 1 0..1 Salario:real gerencia fim:real obterCargo( ) Custo: real Métodos $CalcularMediaSalario( ) CalcularValorProjeto( ) Método da classe (indicado pelo prefixo $) FuncionarioContratado FuncionarioTerceirizado carteiraProfissional:string inicioContrato:date dataAdmissão:date terminoContrato:date taxaAdministração 8
  • 9.
    Ligação e Associação  Uma ligação é um relacionamento entre objetos, que se deseja conhecer no sistema. • Ex.: a ligação entre o objeto Projeto e o objeto FuncionarioTerceirizado.  Uma associação é a descrição de uma coleção de ligações que, para fins de projeto , possuem propriedades semelhantes (classes envolvidas, atributos, métodos). • Ex.: a associação entre a classe Funcionario e a classe Projeto. 9
  • 10.
    Papel do objeto Um objeto cumpre um papel dentro de uma associação. esposa - Ser marido ou esposa é casamento o papel exercido por um Pessoa objeto Pessoa dentro de marido código uma associação nome casamento. sexo nome do associação endereço papel 10
  • 11.
    Multiplicidade  Existem situações em que é necessário restringir o número de objetos associados através de uma associação a um objeto determinado (restringir a cardinalidade). • Ex.: um homem não deve possuir mais de uma esposa.  As multiplicidades são classificadas de acordo a sua cardinalidade máxima:  0..1 (valor opcional)  1.. 1 ou 1 (exatamente um)  0..* ou * (qualquer valor inteiro não-negativo)  1..* (qualquer valor inteiro positivo) 11
  • 12.
    Associação 1:1 esposa 0.. 1 casamento Pessoa código 0.. 1 nome sexo marido endereço 12
  • 13.
    Atributos de Associações  Uma associação pode ser tratada como uma classe, que possui atributos, relacionamentos e métodos. Neste caso é denominada classe associativa . • Ex.: como toda venda não é financiada, então os atributos e métodos da financiamento devem aparecer no relacionamento. 0..1 0..* Venda Financeira número código data nome Financiamento ItemdeVenda dataAprovação autoriza( ) 13
  • 14.
    Exemplo de Classe Associativa Produto 0..* 0..* Venda código número nome data CalcPreço( ) ItemVenda CalcImposto( ) quantidade CalcTotal( ) 14
  • 15.
    Transformação de Classes Associativas Produto 1 0..* 1..* 1 Venda ItemVenda código quantidade número nome CalcTotal( ) data CalcPreço( ) CalcImposto( ) Ainda falta refinar este diagrama!! 15
  • 16.
    Associação ternária Cidade Distribuidor Distribuição código 1 1 número nome 0..* 0..* nome 0..* 1 TipoProduto Distribuição é um codprod relacionamento que nome associa estas três classes. 16
  • 17.
    Agregação  A agregação corresponde a um caso particular de associação, utilizada para expressar um relacionamento “todo-parte”.  A agregação representa uma propriedade fraca, pois uma classe “parte” pode estar contida em várias classes “todo”. PaginaWeb Imagem Diretorio 0..* 1..* “todo” “parte” “todo” 17
  • 18.
    Composição  A composição é uma variação da agregação simples. A diferença com a agregação simples, consiste no fato de que a classe parte pertence somente à classe todo.  Exemplo: uma venda é composta de vários detalhes (itens), quando a venda é criada os itens de venda também o são, e quando a venda é eliminada também serão eliminados os itens. Produto ItemVenda Venda 1 0..* 1..* códigoProduto quantidade número descrição CalcTotal( ) data CalcPreço( ) CalcImp( ) CalcImp( ) 18
  • 19.
    Generalização/Especialização  Pessoa física/jurídica são especializações de cliente. Cliente é uma generalização de pessoa física/pessoa jurídica. Cliente 1 0..* Venda código nome PessoaFísica PessoaJurídica documentoId CGC datanasc nomeInstituição 19
  • 20.
    Herança e Agregação  Herança e agregação são conceitos diversos.  Herança é um relacionamento chamado de “é-um” • pessoa física é um cliente  Agregação é chamada de “é-parte-de” • item de venda é parte de uma venda  Herança não é seletiva • Todas as propriedades da classe genérica são herdadas 20
  • 21.
    Combinando generalização e agregação  Um documento pode ser composto de vários componentes.  Um componente é uma figura, uma tabela ou texto. Componente 1..* Documento Texto Tabela Figura 21
  • 22.