DIAGRAMAS DE
             CASOS DE USO
             Profs: Edgar Gemo
                    Zeferino Saugene




UML




                 Casos de uso
      • Os Uses Cases ou ”casos de utilização”
        constituem em UML uma técnica para
        representar o levantamento de requisitos do
        sistema (Nunes, 2001)

      • Desde sempre que o correcto levantamento
        de requisitos no desenvolvimento de sistemas
        de informação tenta garantir que o sistema
        será útil para o utilizador final, estando de
        acordo com as suas necessidades (Nunes,
        2001:13)
UML




                                                        1
Diagramas Classes

        • Profs:    Edgar Gemo
        •           Zeferino Saugene



UML




                 Introdução
      Aspectos tratados pelos Diagramas de
      Classe: Dados e Funções




UML




                                             2
Introdução

      • Um Diagrama de Classes:
        – Dá uma visão estática do sistema;
        – Exibe um conjunto de classes,
          interfaces e seus relacionamentos;
        – As classes especificam tanto a
          estrutura como o comportamento
          dos objectos (que são instâncias de
          classes);

UML




                 Introdução
      • Ao completar os diagramas de
        interação, podemos completar o
        diagrama de classes:
        – Normalmente criamos os diagramas
          de classe em paralelo aos de
          interação
          • No final, precisamos apenas incluir os
            detalhes que faltam (métodos, atributos
            ou associações)

UML




                                                      3
Introdução
                • Informações tipicamente
                  encontradas num Diagrama de
                  Classes:
                      – Classes, associações e atributos
                      – Interfaces, incluindo métodos e
                        constantes
                      – Métodos
                      – Informação de tipo de atributos
                      – Navegabilidade
                      – Dependências
UML




                  Exemplo de Diagrama de
                          Classes
Nome da Classe
                                             Atributo

              Estudante                                                                       Disciplina
      CodEstudante : string                                                         CodDisciplina : String
      Nome : String                                    Inscrição                    Nome : String
      Apelido : String                          CodEstudante : String               Descrição : String
      BI/DIR : String                           CodDisciplina : String              Nível(Ano) : Integer
      Endereço : String                         DataInscrição : date                Semestre : String
      Sexo : char                                                                   RegimeTemporal : Integer
      dataNascimento : date      1    1..*      efectuarInscricao()      1..*   1   CargaSemanal : integer
      Naturalidade : string                     alterarIncricao()                   Bibliografia : String
                                                removerInscricao()
      registarEstudante()                       listarInscritos()                   registarDisciplina()
      alterarDadosestudante()                                                       alterarDisciplina()
      removerEstudante()                                                            removerDisciplina()




       Operação               Associação                     Multiplicidade
UML




                                                                                                               4
Construindo um
             Diagrama de Classes
       • Identificar todas as classes que
         participam no sistema
       • Adicionar as classes ao diagrama
       • Identificar os atributos para cada
         classe
       • Adicionar os métodos respectivos
         a cada classe

UML




               Construindo um
             Diagrama de Classes
      • Escolher os tipos dos atributos e dos
        parâmetros dos métodos
      • Incluir as associações necessárias para
        dar visibilidade de atributos
      • Adicionar setas às associações para
        indicar a direção da visibilidade de
        atributos (opcional)
      • Introduzir linhas de relações de
        dependência para indicar a visibilidade
UML     que não seja de atributo




                                                  5
Atributos
       • Um atributo representa alguma
         propriedade que é compartilhada por
         todos os objectos de uma classe
       • Descrevem os dados contidos nas
         instâncias de uma classe
       • Servem para manter o estado dos
         objectos.
          – Cada objecto possui valores
            independentes para os mesmos
            atributos
UML




            Sintaxe de Atributos
      • Sintaxe
         – [visibilidade] nome [[multiplicidade]] [:tipo]
           [= valor inicial] [{propriedades}]
         – Atributos de classe são sublinhados
      • Exemplos
         – CPF: Integer
         – Nome: String = “Alberto”
         – Endereço [0..20] : String
         – gerenciadorDeJanelas: GerenciadorDeJanelas


UML




                                                            6
Operações
      • Uma operação é a implementação de um
        serviço que pode ser requisitado a
        qualquer objecto ou classe, possivelmente
        afectando o seu estado
        – A execução de uma operação pode resultar na
          alteração do valor de seus atributos
        – Operações de instância
           • Actuam sobre uma instância (objecto) de uma classe
        – Operações de classe
           • Actuam sobre a classe, criando e/ou modificando
             atributos de classe

UML




           Sintaxe para Operações
       • Sintaxe
          – [visibilidade] nome [(lista-de-
            parâmetros)]
            [:tipo-de-retorno] [{propriedades}]
          – Operações de classe são sublinhadas
       • Exemplos
          – LerTemperatura () : Number
          – Área (Lado : Integer) : Integer
          – ValorPadrão () : Integer {query}
UML




                                                                  7
Relacionamentos
      • Poucas classes têm sentido sozinhas
      • Os relacionamentos ligam
        classes/objectos entre si criando relações
        lógicas entre eles
      • Os relacionamentos podem ser dos
        seguintes tipos:
         – Associação,
         – Agregação e Composição ,
         – Generalização e Herança.

UML




               Notação para
              Relacionamentos
        Associação               Herança


        Agregação              Dependência



        Realização              Composição



UML




                                                     8
Associação
      • Surge da necessidade de obter
        mais informação de uma
        associação.
      • Normalmente, as classes
        associativas surgem nas relações
        de “Muitos para Muitos”
                                                 rótulo da associação


                           emprega
       Companhia                             Funcionário
UML




           Classe Associativa
      • É introduzida quando uma
        associação tem propriedades
        associadas

                       *           1..*
           Companhia                      Empregado



                           Trabalho
                           descrição
                           salário

UML




                                                                        9
Associação Unária
      • Quando há um relacionamento de
        uma classe para ela mesma

         Funcionário 1..*

            1                      rótulo da associação

                gerencia



UML




            Associação Binária
      • Quando há duas classe envolvidas
        na forma direta de uma para a
        outra

      Cliente         faz             Pedido
                1           0..*




UML




                                                          10
Associação N-ária
       • As linhas das associações são
         conectadas por um losango




UML




        Agregação e Composição
      • A Agregação pretende demonstrar que
        um “Todo” é composto por “Partes”
      • A Composição é uma forma mais forte
        de Agregação
        – Há uma coincidência da vidas das partes
        – Uma vez criada a parte, ela irá viver e morrer
          com o todo
        – O “Todo” é responsável pelo gerenciamento
          da criação e destruição das partes


UML




                                                           11
Agregação e Composição

      • Exemplo de uma Agregação

                                 Mesa
        Restaurante
                                 Num_Mesa
       Nome           1   1..*
       Morada




UML




                Exemplo de uma
                  Composição

                                 Item Encomenda
        Encomenda
                                  numItem
        numE
                      1   1..*    quantidade
        data
        tipoE




UML




                                                  12
Generalização e Herança
      • Generalização (Herança)
          – Relacionamento entre um elemento
            mais geral e um mais específico

          – O Conceito Herança está presente,
            pois as subclasses (filhos) herdam
            da superclasse (pai) a estrutura em
            termos de atributos e operações.


UML




      Exemplo de Generalização
                                   Forma
                                 origem

                                 mover()
                                 exibir()




                  Retângulo        Círculo             Polígono
                 ponto : Ponto   raio : float   pontos : ListaDePontos

                                                exibir()
      Quadrado




UML




                                                                         13
Multiplicidade
      • É a cardinalidade de uma associação
                                  (também usa-se 0..*)




UML




              Navegabilidade
      • Em geral a navegação entre as
        classes de uma associação é bi-
        direcional.
      • Porém, podemos limitá-la a
        apenas uma direção

                      tem
          Usuário               Senha



UML




                                                         14
Exemplos de Diagramas de Classes
      Classes que se
      relacionam
      duplamente:




      Informação que
      surge a partir da
      associação de
      duas outras
      classes:

UML




      Exemplos de Diagramas de Classes
      Agregação:




UML




                                         15
Exemplos de Diagramas de Classes
      Composição:
      •    A remoção do todo
        implica na remoção das
        partes;
      • O acesso às partes é
        restrito ao todo.




UML




          Exemplos de Diagramas de Classes
      Generalização/Especificação – A Classe Abstracta
          •Não permite a criação de objectos;
          •Existe apenas para gerar novas sub-classes.




UML




                                                         16
Diagramas de Classes - Restrições

         • Descrevem situações que NÃO podem ocorrer no
           modelo
         • Pode ser usado para:
               Que o programador siga a orientação,
               Transformação formal de modelos (MDA).




UML




        Diagramas de Classes - Restrições
      Restrição {ou}
      implica na
      selecção exclusiva
      entre duas ou mais
      associações
      existentes em uma
      classe.




      Observação:
      possível
      mapeamento para
      uso de restrição
      {ou} com
      multiplicidade
UML   máxima 1.




                                                          17
Diagramas de Classes - Restrições
      Observar que para associações OU do tipo 1..* não
      possível mapear directamente para herança.




UML




      Diagramas de Classes - Restrições




UML




                                                          18
Diagramas de Classes - Discussão
      Dado o modelo de controle académico:
      • O aluno pode exercer o papel de monitor durante um período
      • Permitir que uma pessoa exerça simultaneamente o papel de
        Professor e Aluno da Universidade


      Qual é o Problema?




UML




       Diagramas de Classes - Discussão

      Qual é o Problema?

      • Acomodação inábil de objectos que mudam de classes,
      • Transmutação.




UML




                                                                     19
Diagramas de Classes - Discussão

      A Solução Óptima:

      • Combinar herança e associação.




UML




      Diagramas de Classes - Erros Comuns
      1. Usar classes ou associações para representar
         consultas ou operações do sistema que não devem ser
         registradas.




      2. Identificar métodos nas classes sem ter feito a
         modelação temporal



                                  O que é sintonizar?
                                  -Quem usa?
UML                               -Quais os parâmetros?




                                                               20
Diagramas de Classes - Erros Comuns
      3. Inserir atributos quando o ideal é criar uma classe.




UML




      Diagramas de Classes - Erros Comuns
      4. Usar herança quando a quantidade de tipos é grande
         ou dinâmica.




UML




                                                                21
Diagramas de Classes - Erros Comuns
      5. Inserir chaves-estrangeiras no diagrama de classes:
               •     As associações são suficientes.




UML




                        Diagramas de Classes -
                                    Exercícios
      1. Em uma Universidade, o plano de carreira para
         professores é dividido em quatro etapas: Auxiliar,
         Assistente, Adjunto e Titular.
           •       Construa um modelo de classes que preserve o histórico de um
                   professor durante a sua vida profissional. Em particular, é
                   importante manter o registro do início e término do
                   desempenho em uma das etapas.
      2.       Considerando um sistema de gestão duma cadeia de Hoteis e os
               seus serviços, desenhar um diagrama de classes mostrando
               relacionamentos entre as seguintes classes de objectos (Incluir
               associações, agregações, generalizações e atributos):
           •       Hotel, quarto, hóspede, funcionário, sauna, boate, restaurante,
                   bar, piscina, reserva e outras classes relacionadas.


UML




                                                                                     22
Diagramas de Classes - Exercícios
      3.    Considere o diagrama de classes UML abaixo e marque a
            alternativa correcta:
           a)   Considerando um objecto e qualquer de Empresa, pode-se afirmar
                que a quantidade de objectos de Funcionário que participam da
                associação a com e é sempre inferior à quantidade de objectos que
                participam de b (também com e);
           b)   Não existem objectos de Funcionário que participam
                simultaneamente da associação a e b com um objecto de Empresa;
           c)   Pode existir um objecto de Empresa que não esteja associado a
                qualquer objecto de Funcionário, seja pela associação a ou b;
           d)   Um objecto de Funcionário pode estar associado com mais de um
                objecto de Empresa;
           e)   A associação de subordinação garante que um supervisor está
                associado com subordinados que estão na mesma Empresa.




UML




            Diagramas de Classes - Exercícios
      4.    Considere o diagrama de classes UML abaixo e marque a
            alternativa correcta:
           a)   Para cada objecto de Actividade existe somente um único valor de
                data-início;
           b)   Um objecto de Actor pode simultaneamente gerir vários projetos e
                actuar em várias actividades;
           c)   Um Objectivo pode ser atendido por vários objectos de Actividade;
           d)   Em um Projecto sua duração é determinada pela duração de suas
                actividades;
           e)   Os objectos de Actividade são ordenados pelo valor do atributo id.




UML




                                                                                     23
Bibliografia
      • Bennett, S. et all (2002) Object-Oriented
        Systems Analysis and Design using UML,
        U.S., Mc Graw-Hill Education
      • Bezerra, E. (2003), Princípios de Análise e
        Projecto de Sistemas com UML, Rio de
        Janeiro, Editora Campus Ltda
      • Neto, A.C. (2001), Análise e Projeto de
        Sistemas I, http://www.dcce.ufs.br/
      • Nunes, M. e O´Neill (2001), Fundamental
        de UML, Lisboa, FCA - Editora de
        Informática

UML




                                                      24

Aula 7 diagramas_classes2

  • 1.
    DIAGRAMAS DE CASOS DE USO Profs: Edgar Gemo Zeferino Saugene UML Casos de uso • Os Uses Cases ou ”casos de utilização” constituem em UML uma técnica para representar o levantamento de requisitos do sistema (Nunes, 2001) • Desde sempre que o correcto levantamento de requisitos no desenvolvimento de sistemas de informação tenta garantir que o sistema será útil para o utilizador final, estando de acordo com as suas necessidades (Nunes, 2001:13) UML 1
  • 2.
    Diagramas Classes • Profs: Edgar Gemo • Zeferino Saugene UML Introdução Aspectos tratados pelos Diagramas de Classe: Dados e Funções UML 2
  • 3.
    Introdução • Um Diagrama de Classes: – Dá uma visão estática do sistema; – Exibe um conjunto de classes, interfaces e seus relacionamentos; – As classes especificam tanto a estrutura como o comportamento dos objectos (que são instâncias de classes); UML Introdução • Ao completar os diagramas de interação, podemos completar o diagrama de classes: – Normalmente criamos os diagramas de classe em paralelo aos de interação • No final, precisamos apenas incluir os detalhes que faltam (métodos, atributos ou associações) UML 3
  • 4.
    Introdução • Informações tipicamente encontradas num Diagrama de Classes: – Classes, associações e atributos – Interfaces, incluindo métodos e constantes – Métodos – Informação de tipo de atributos – Navegabilidade – Dependências UML Exemplo de Diagrama de Classes Nome da Classe Atributo Estudante Disciplina CodEstudante : string CodDisciplina : String Nome : String Inscrição Nome : String Apelido : String CodEstudante : String Descrição : String BI/DIR : String CodDisciplina : String Nível(Ano) : Integer Endereço : String DataInscrição : date Semestre : String Sexo : char RegimeTemporal : Integer dataNascimento : date 1 1..* efectuarInscricao() 1..* 1 CargaSemanal : integer Naturalidade : string alterarIncricao() Bibliografia : String removerInscricao() registarEstudante() listarInscritos() registarDisciplina() alterarDadosestudante() alterarDisciplina() removerEstudante() removerDisciplina() Operação Associação Multiplicidade UML 4
  • 5.
    Construindo um Diagrama de Classes • Identificar todas as classes que participam no sistema • Adicionar as classes ao diagrama • Identificar os atributos para cada classe • Adicionar os métodos respectivos a cada classe UML Construindo um Diagrama de Classes • Escolher os tipos dos atributos e dos parâmetros dos métodos • Incluir as associações necessárias para dar visibilidade de atributos • Adicionar setas às associações para indicar a direção da visibilidade de atributos (opcional) • Introduzir linhas de relações de dependência para indicar a visibilidade UML que não seja de atributo 5
  • 6.
    Atributos • Um atributo representa alguma propriedade que é compartilhada por todos os objectos de uma classe • Descrevem os dados contidos nas instâncias de uma classe • Servem para manter o estado dos objectos. – Cada objecto possui valores independentes para os mesmos atributos UML Sintaxe de Atributos • Sintaxe – [visibilidade] nome [[multiplicidade]] [:tipo] [= valor inicial] [{propriedades}] – Atributos de classe são sublinhados • Exemplos – CPF: Integer – Nome: String = “Alberto” – Endereço [0..20] : String – gerenciadorDeJanelas: GerenciadorDeJanelas UML 6
  • 7.
    Operações • Uma operação é a implementação de um serviço que pode ser requisitado a qualquer objecto ou classe, possivelmente afectando o seu estado – A execução de uma operação pode resultar na alteração do valor de seus atributos – Operações de instância • Actuam sobre uma instância (objecto) de uma classe – Operações de classe • Actuam sobre a classe, criando e/ou modificando atributos de classe UML Sintaxe para Operações • Sintaxe – [visibilidade] nome [(lista-de- parâmetros)] [:tipo-de-retorno] [{propriedades}] – Operações de classe são sublinhadas • Exemplos – LerTemperatura () : Number – Área (Lado : Integer) : Integer – ValorPadrão () : Integer {query} UML 7
  • 8.
    Relacionamentos • Poucas classes têm sentido sozinhas • Os relacionamentos ligam classes/objectos entre si criando relações lógicas entre eles • Os relacionamentos podem ser dos seguintes tipos: – Associação, – Agregação e Composição , – Generalização e Herança. UML Notação para Relacionamentos Associação Herança Agregação Dependência Realização Composição UML 8
  • 9.
    Associação • Surge da necessidade de obter mais informação de uma associação. • Normalmente, as classes associativas surgem nas relações de “Muitos para Muitos” rótulo da associação emprega Companhia Funcionário UML Classe Associativa • É introduzida quando uma associação tem propriedades associadas * 1..* Companhia Empregado Trabalho descrição salário UML 9
  • 10.
    Associação Unária • Quando há um relacionamento de uma classe para ela mesma Funcionário 1..* 1 rótulo da associação gerencia UML Associação Binária • Quando há duas classe envolvidas na forma direta de uma para a outra Cliente faz Pedido 1 0..* UML 10
  • 11.
    Associação N-ária • As linhas das associações são conectadas por um losango UML Agregação e Composição • A Agregação pretende demonstrar que um “Todo” é composto por “Partes” • A Composição é uma forma mais forte de Agregação – Há uma coincidência da vidas das partes – Uma vez criada a parte, ela irá viver e morrer com o todo – O “Todo” é responsável pelo gerenciamento da criação e destruição das partes UML 11
  • 12.
    Agregação e Composição • Exemplo de uma Agregação Mesa Restaurante Num_Mesa Nome 1 1..* Morada UML Exemplo de uma Composição Item Encomenda Encomenda numItem numE 1 1..* quantidade data tipoE UML 12
  • 13.
    Generalização e Herança • Generalização (Herança) – Relacionamento entre um elemento mais geral e um mais específico – O Conceito Herança está presente, pois as subclasses (filhos) herdam da superclasse (pai) a estrutura em termos de atributos e operações. UML Exemplo de Generalização Forma origem mover() exibir() Retângulo Círculo Polígono ponto : Ponto raio : float pontos : ListaDePontos exibir() Quadrado UML 13
  • 14.
    Multiplicidade • É a cardinalidade de uma associação (também usa-se 0..*) UML Navegabilidade • Em geral a navegação entre as classes de uma associação é bi- direcional. • Porém, podemos limitá-la a apenas uma direção tem Usuário Senha UML 14
  • 15.
    Exemplos de Diagramasde Classes Classes que se relacionam duplamente: Informação que surge a partir da associação de duas outras classes: UML Exemplos de Diagramas de Classes Agregação: UML 15
  • 16.
    Exemplos de Diagramasde Classes Composição: • A remoção do todo implica na remoção das partes; • O acesso às partes é restrito ao todo. UML Exemplos de Diagramas de Classes Generalização/Especificação – A Classe Abstracta •Não permite a criação de objectos; •Existe apenas para gerar novas sub-classes. UML 16
  • 17.
    Diagramas de Classes- Restrições • Descrevem situações que NÃO podem ocorrer no modelo • Pode ser usado para: Que o programador siga a orientação, Transformação formal de modelos (MDA). UML Diagramas de Classes - Restrições Restrição {ou} implica na selecção exclusiva entre duas ou mais associações existentes em uma classe. Observação: possível mapeamento para uso de restrição {ou} com multiplicidade UML máxima 1. 17
  • 18.
    Diagramas de Classes- Restrições Observar que para associações OU do tipo 1..* não possível mapear directamente para herança. UML Diagramas de Classes - Restrições UML 18
  • 19.
    Diagramas de Classes- Discussão Dado o modelo de controle académico: • O aluno pode exercer o papel de monitor durante um período • Permitir que uma pessoa exerça simultaneamente o papel de Professor e Aluno da Universidade Qual é o Problema? UML Diagramas de Classes - Discussão Qual é o Problema? • Acomodação inábil de objectos que mudam de classes, • Transmutação. UML 19
  • 20.
    Diagramas de Classes- Discussão A Solução Óptima: • Combinar herança e associação. UML Diagramas de Classes - Erros Comuns 1. Usar classes ou associações para representar consultas ou operações do sistema que não devem ser registradas. 2. Identificar métodos nas classes sem ter feito a modelação temporal O que é sintonizar? -Quem usa? UML -Quais os parâmetros? 20
  • 21.
    Diagramas de Classes- Erros Comuns 3. Inserir atributos quando o ideal é criar uma classe. UML Diagramas de Classes - Erros Comuns 4. Usar herança quando a quantidade de tipos é grande ou dinâmica. UML 21
  • 22.
    Diagramas de Classes- Erros Comuns 5. Inserir chaves-estrangeiras no diagrama de classes: • As associações são suficientes. UML Diagramas de Classes - Exercícios 1. Em uma Universidade, o plano de carreira para professores é dividido em quatro etapas: Auxiliar, Assistente, Adjunto e Titular. • Construa um modelo de classes que preserve o histórico de um professor durante a sua vida profissional. Em particular, é importante manter o registro do início e término do desempenho em uma das etapas. 2. Considerando um sistema de gestão duma cadeia de Hoteis e os seus serviços, desenhar um diagrama de classes mostrando relacionamentos entre as seguintes classes de objectos (Incluir associações, agregações, generalizações e atributos): • Hotel, quarto, hóspede, funcionário, sauna, boate, restaurante, bar, piscina, reserva e outras classes relacionadas. UML 22
  • 23.
    Diagramas de Classes- Exercícios 3. Considere o diagrama de classes UML abaixo e marque a alternativa correcta: a) Considerando um objecto e qualquer de Empresa, pode-se afirmar que a quantidade de objectos de Funcionário que participam da associação a com e é sempre inferior à quantidade de objectos que participam de b (também com e); b) Não existem objectos de Funcionário que participam simultaneamente da associação a e b com um objecto de Empresa; c) Pode existir um objecto de Empresa que não esteja associado a qualquer objecto de Funcionário, seja pela associação a ou b; d) Um objecto de Funcionário pode estar associado com mais de um objecto de Empresa; e) A associação de subordinação garante que um supervisor está associado com subordinados que estão na mesma Empresa. UML Diagramas de Classes - Exercícios 4. Considere o diagrama de classes UML abaixo e marque a alternativa correcta: a) Para cada objecto de Actividade existe somente um único valor de data-início; b) Um objecto de Actor pode simultaneamente gerir vários projetos e actuar em várias actividades; c) Um Objectivo pode ser atendido por vários objectos de Actividade; d) Em um Projecto sua duração é determinada pela duração de suas actividades; e) Os objectos de Actividade são ordenados pelo valor do atributo id. UML 23
  • 24.
    Bibliografia • Bennett, S. et all (2002) Object-Oriented Systems Analysis and Design using UML, U.S., Mc Graw-Hill Education • Bezerra, E. (2003), Princípios de Análise e Projecto de Sistemas com UML, Rio de Janeiro, Editora Campus Ltda • Neto, A.C. (2001), Análise e Projeto de Sistemas I, http://www.dcce.ufs.br/ • Nunes, M. e O´Neill (2001), Fundamental de UML, Lisboa, FCA - Editora de Informática UML 24