ANÁLISE PROJETO E
PROGRAMAÇÃO PARA WEB



CLASSES ABSTRATAS
Profª. Maria Alice Jovinski
ABSTRAÇÃO

   “Consiste em enfocar nos aspectos
       essenciais de uma entidade e
    ignorar suas propriedades internas.
   Significa enfocar no que um objeto é
      e faz, antes de decidir como ele
          dever ser implementado”
                [Rumbaugh]
ABSTRAÇÃO

 A   abstração se preocupa com a
   visão superficial de um objeto, por
   isso   serve     para  separar    o
   comportamento de um objeto de sua
   implementação.
ABSTRAÇÃO

    É independente de uma linguagem, mas linguagens
     OO dão mais poder.
        Ex.: Os atributos de um Carro dependem de seu ponto de
         vista.
          Ponto de vista de um vendedor:
             Modelo, Preço, Cor.

          Ponto de vista de um mecânico;

             Tipo de motor, tipo de transmissão.
ABSTRAÇÃO EM JAVA

   Através da definição de classes abstratas.
   São classes definidas exclusivamente para servirem
    de classe base.
   Não podem gerar objetos.

   Para se definir uma classe abstrata usa-se a palavra
    reservada – abstract.
CLASSES ABSTRATAS

     São classes que se comportam como um esqueleto
      (não podem ser instanciadas)‫‏‬
         As classes filhas de uma classe abstrata apenas herdam o
          que está definido
     Define a estrutura sem fornecer a implementação
      completa de cada método.
CLASSES ABSTRATAS

     Uma classe abstrata pode conter métodos abstratos
      ou não.
         Operações que têm seu protocolo definido na classe
          abstrata e são implementadas nas classes derivadas.
          Desejando-se utilizar os métodos abstratos, estes devem
          ser implementados nas classes derivadas.
     Sempre que for definido um método abstrato a classe
      deve ser abstrata.
CLASSE ABSTRATA FORMAGRAFICA

                          Gráfica
EXEMPLO CLASSE ABSTRATA
FORMAGRAFICA
abstract class FormaGrafica {
 protected float x,y;
    ....
    public void move(float dx,float dy) {
         this.x+=dx; this.y+=dy;
    }
    ....
    abstract public void mostra(); //método abstrato
}
EXEMPLO CLASSE PONTO

class Ponto extends FormaGrafica {

    public Ponto(float ax,float ay) {
        this.x=ax; this.y=ay;
    }
    public void mostra() {
        System.out.println("("+this.x+","+this.y+")");
    }
}
MAIS UM EXEMPLO: CÍRCULO

  class Circulo extends FormaGrafica {
    protected float raio;
    public Circulo(float ax,float ay, float raio) {
        this.x=ax; this.y=ay; this.raio=raio;
    }
    public void mostra() {
        System.out.println("("+this.x+","+this.y+")");
        System.out.println(“Raio‫‏+“‏:‏‬this.raio);
    }
  }
EXEMPLO CLASSE RETANGULO
  class Retangulo extends FormaGrafica {
     protected float dx,dy; //canto superior x,y

       public Retangulo(float ax,float ay,float dx,float dy) {
             this.x=ax; this.y=ay;
             this.dx=dx; this.dy=dy;
       }
       public void move(float x, float y, float dx, float dy) {
             super.move(x,y);
             this.dx+=dx;
             this.dy+=dy;
      }
       public void mostra() {
             System.out.println("("+this.x+","+this.y+")("+dx+","+dy+")");
       }
  }
TESTANDO AS FORMAS GRÁFICAS
 public class Main {
   public static void main(String[] args) {
      Ponto pt = new Ponto(15,1);
      Circulo circ = new Circulo(1,10,50);
      Retangulo ret = new Retangulo(1,1,15,20);

         System.out.println("Ponto");
         pt.mostra();
         System.out.println("Circulo");
         circ.mostra();
         System.out.println("Retangulo");
         ret.mostra();
     }
 }
CLASSES DE ANÁLISE
 Representam um modelo conceitual primário para
  elementos que têm responsabilidades e
  comportamento no sistema.
 São mantidas em um alto nível, numa visão
  puramente conceitual.
CLASSES E OBJETOS
 Objeto é simplesmente alguma coisa que faz
  sentido no contexto da aplicação.
 Não deve ter nomes vagos
       Ex.: Dados, Informação.
CLASSES E OBJETOS
   A Classe descreve um grupo de objetos com
    propriedades similares (atributos), comportamento
    comum (operações), relacionamento com outros
    objetos e semântica comum
       Ex.: Pessoa, empresa, janela
   Agrupando Objetos em Classes nós estamos
    abstraindo o problema.
DIAGRAMA DE ESTRUTURA ESTÁTICA
   Diagrama de Classes
     É um esquema, padrão, ou molde, para descrever,
      várias possíveis instâncias de dados.
     Descreve as Classes
CLASSES E OBJETOS

    Diagrama de Classes


                       Pessoa

    Diagrama de Objetos/Instâncias



      João:Pessoa     Maria:Pessoa    Ana
ATRIBUTOS

  Um    atributo é uma propriedade de um objeto
      Ex.: Nome, idade (atributos de pessoa)
  Cada  atributo tem um valor para cada
   instância
      A idade de João é 26
  Devem     ser valores de dados puros, e não
   objetos
  Um atributo pode ter um valor default
ATRIBUTOS

   Visibilidade:

       + {público}: o elemento pode ser utilizado pelo objeto no
        qual ele pertence e por qualquer objeto cliente.

       # {protegido}: o elemento pode ser utilizado somente pelo
        próprio objeto no qual ele pertence, ou se existirem, pelas
        suas subclasses.

       - {privado}: o elemento pode ser utilizado somente pelo
        objeto ao qual ele pertence.

       ~{package}: visível a classes do mesmo package.
ATRIBUTOS

      Diagrama de Classes/Objetos

                      Pessoa             Represente a
                     Nome: String         visibilidade
                                            desses
                     Idade: Inteiro        atributos.




        :Pessoa                       :Pessoa
       Nome=João                       Maria
       Idade= 28                        25
OPERAÇÕES E MÉTODOS
   Uma operação é uma função, ou transformação,
    que pode ser aplicada para ou por objetos em uma
    classe
       Contratar, PagarSalários são operações da Classe
        Empresa
   Um método é uma implementação específica de
    uma Operação
OPERAÇÕES E MÉTODOS
   Operações podem ser polimórficas
       Imprimir arquivos binários, textos, figuras.
   Operações podem receber parâmetros
       Mover um polígono 10 pixels
   Todas as instâncias de uma classe compartilham
    as mesmas operações.
OPERAÇÕES E MÉTODOS
   Diagrama de Classes

                                            Supondo que o
                          Pessoa        obterIdade() seja usado
                                        somente por um objeto
                      -Nome: String     desta classe, qual deve
                      -Idade: Inteiro      ser o símbolo de
                                         visibilidade para este
                                                método?
                      mudarNome()
                      obterIdade()
RELACIONAMENTOS
 Associação
 Agregação

 Composição

 Generalização

 Especialização
ASSOCIAÇÕES
 É uma relação que descreve um conjunto de
  vínculos entre elementos de modelo
 Podem ser reflexivas, binárias, ternárias, etc.
ASSOCIAÇÕES
   Diagrama de Classes


             País                       Cidade
                          Tem-capital
             Nome                        Nome



   Diagrama de Objetos

             :País                      :Cidade
                          Tem-capital
             Brasil                      Brasília
ASSOCIAÇÕES BINÁRIAS
   Quando há duas classes envolvidas na associação
    de forma direta de uma para a outra (mutualismo)




            Empregado                     Empresa
                          Trabalha-para
MULTIPLICIDADE DE ASSOCIAÇÃO
 Especifica quantas instâncias de uma
  classe pode se relacionar com cada
  instância de outra classe.
 Limita o número na relação entre os
  objetos.
 Geralmente‫‏‬é‫“‏‬um”‫‏‬ou‫“‏‬muitos”,‫‏‬mas‫‏‬pode‫‏‬
  ser um conjunto finito.
               Carro                       Roda
                       se-move-sobre
                                       4
MULTIPLICIDADE DE ASSOCIAÇÃO
   Mais exemplos....


           Empregado                           Empresa
                            Trabalha-para

                         0..*


           Workstation                 0..1    Janela


                                     console
MULTIPLICIDADE - UML


              Exatamente 1
    0..*
             Muitos (zero ou mais)

    0..1
             Opcional (zero ou um)
    1..*
              Um ou mais
     4
             Numericamente Especificado (exatamente 4)

   2,4..7
             Numericamente Especificado (2,4,5,6 ou 7)
PAPÉIS DA ASSOCIAÇÃO

   É o nome que identifica um lado da Associação.
   Também chamado de Papel Executado (ou Nomes de
    Papel, Role Names);




         Pessoa   Empregado       Empregador   Empresa

                        Trabalha-para
                        (associação)
ASSOCIAÇÃO
   Diagrama de Classes


          Empregado            Trabalha-para   Empresa
             Nome                              Nome
             Cargo      1..*

   Diagrama de Instâncias (Objetos)

          :Empregado           Trabalha-para   :Empresa
              Lucas
                                                IBM
             Analista   1..*
AGREGAÇÃO
 É‫‏‬a‫‏‬relação‫“‏‬parte-todo”‫‏‬ou‫“‏‬uma-parte-de”.
 É uma forma especial de associação.

 É‫‏‬uma‫‏‬relação‫‏‬do‫‏‬tipo‫“‏‬todo/parte”‫‏‬ou‫“‏‬possui‫‏‬um”‫‏‬
  na qual uma classe representa uma coisa grande
  que é composta de coisas menores.
AGREGAÇÃO
   Ex: Diagrama de Classes


                       Microcomputador
                              Tipo




         Placa-Mãe        Processador       RAM
           Marca          Velocidade     Capacidade
AGREGAÇÃO
   Ex: Diagrama de Instâncias (Objetos)


                            :Micro
                             P-IV




       :Placa-Mãe           :CPU           :RAM
          ASUS            1.4 Ghz          128 MB
AGREGAÇÃO


               Instituto




            Departamento
GENERALIZAÇÃO

 Generalização é o relacionamento que organiza
  Classes baseado em suas similaridades e diferenças.
 É a capacidade de se criar supertipos que encapsulam
  a estrutura e o comportamento comum a vários
  subtipos. Os procedimentos para se obter
  generalização são:
       Identificar similaridades de estrutura/comportamento entre
        várias classes.
       Criar o supertipo para encapsular a estrutura e o
        comportamento comum a mais de uma classe.
       Os objetos originais passam a ser subtipos do novo supertipo
        criado.
ESPECIALIZAÇÃO


   É  a capacidade de se criar subtipos que
     representam refinamentos nos quais a
     estrutura e/ou comportamento do supertipo
     são adicionados ou modificados.
    Os procedimentos são:
      Perceber que algumas classes apresentam
       estrutura e/ou comportamento especializado.
      Criar subtipos de acordo com a especialização.
GENERALIZAÇÃO/ESPECIALIZAÇÃO
   Ex.:
                           Pessoa
                             matrícula
                              nome
                              idade

                         mudarNome()
                         obterIdade()




           Funcionário                   Professor



           promover()                    contratar()
ATENÇÃO

        Pode confundir em virtude da notação




                    G                    A



      Generalização = é-um
      Agregação = tem-um, é-parte-de

Aula classes abstratas 3º periodo uniao

  • 1.
    ANÁLISE PROJETO E PROGRAMAÇÃOPARA WEB CLASSES ABSTRATAS Profª. Maria Alice Jovinski
  • 2.
    ABSTRAÇÃO “Consiste em enfocar nos aspectos essenciais de uma entidade e ignorar suas propriedades internas. Significa enfocar no que um objeto é e faz, antes de decidir como ele dever ser implementado” [Rumbaugh]
  • 3.
    ABSTRAÇÃO A abstração se preocupa com a visão superficial de um objeto, por isso serve para separar o comportamento de um objeto de sua implementação.
  • 4.
    ABSTRAÇÃO  É independente de uma linguagem, mas linguagens OO dão mais poder.  Ex.: Os atributos de um Carro dependem de seu ponto de vista.  Ponto de vista de um vendedor:  Modelo, Preço, Cor.  Ponto de vista de um mecânico;  Tipo de motor, tipo de transmissão.
  • 5.
    ABSTRAÇÃO EM JAVA  Através da definição de classes abstratas.  São classes definidas exclusivamente para servirem de classe base.  Não podem gerar objetos.  Para se definir uma classe abstrata usa-se a palavra reservada – abstract.
  • 6.
    CLASSES ABSTRATAS  São classes que se comportam como um esqueleto (não podem ser instanciadas)‫‏‬  As classes filhas de uma classe abstrata apenas herdam o que está definido  Define a estrutura sem fornecer a implementação completa de cada método.
  • 7.
    CLASSES ABSTRATAS  Uma classe abstrata pode conter métodos abstratos ou não.  Operações que têm seu protocolo definido na classe abstrata e são implementadas nas classes derivadas. Desejando-se utilizar os métodos abstratos, estes devem ser implementados nas classes derivadas.  Sempre que for definido um método abstrato a classe deve ser abstrata.
  • 8.
  • 9.
    EXEMPLO CLASSE ABSTRATA FORMAGRAFICA abstractclass FormaGrafica { protected float x,y; .... public void move(float dx,float dy) { this.x+=dx; this.y+=dy; } .... abstract public void mostra(); //método abstrato }
  • 10.
    EXEMPLO CLASSE PONTO classPonto extends FormaGrafica { public Ponto(float ax,float ay) { this.x=ax; this.y=ay; } public void mostra() { System.out.println("("+this.x+","+this.y+")"); } }
  • 11.
    MAIS UM EXEMPLO:CÍRCULO class Circulo extends FormaGrafica { protected float raio; public Circulo(float ax,float ay, float raio) { this.x=ax; this.y=ay; this.raio=raio; } public void mostra() { System.out.println("("+this.x+","+this.y+")"); System.out.println(“Raio‫‏+“‏:‏‬this.raio); } }
  • 12.
    EXEMPLO CLASSE RETANGULO class Retangulo extends FormaGrafica { protected float dx,dy; //canto superior x,y public Retangulo(float ax,float ay,float dx,float dy) { this.x=ax; this.y=ay; this.dx=dx; this.dy=dy; } public void move(float x, float y, float dx, float dy) { super.move(x,y); this.dx+=dx; this.dy+=dy; } public void mostra() { System.out.println("("+this.x+","+this.y+")("+dx+","+dy+")"); } }
  • 13.
    TESTANDO AS FORMASGRÁFICAS public class Main { public static void main(String[] args) { Ponto pt = new Ponto(15,1); Circulo circ = new Circulo(1,10,50); Retangulo ret = new Retangulo(1,1,15,20); System.out.println("Ponto"); pt.mostra(); System.out.println("Circulo"); circ.mostra(); System.out.println("Retangulo"); ret.mostra(); } }
  • 14.
    CLASSES DE ANÁLISE Representam um modelo conceitual primário para elementos que têm responsabilidades e comportamento no sistema.  São mantidas em um alto nível, numa visão puramente conceitual.
  • 15.
    CLASSES E OBJETOS Objeto é simplesmente alguma coisa que faz sentido no contexto da aplicação.  Não deve ter nomes vagos  Ex.: Dados, Informação.
  • 16.
    CLASSES E OBJETOS  A Classe descreve um grupo de objetos com propriedades similares (atributos), comportamento comum (operações), relacionamento com outros objetos e semântica comum  Ex.: Pessoa, empresa, janela  Agrupando Objetos em Classes nós estamos abstraindo o problema.
  • 17.
    DIAGRAMA DE ESTRUTURAESTÁTICA  Diagrama de Classes  É um esquema, padrão, ou molde, para descrever, várias possíveis instâncias de dados.  Descreve as Classes
  • 18.
    CLASSES E OBJETOS  Diagrama de Classes Pessoa  Diagrama de Objetos/Instâncias João:Pessoa Maria:Pessoa Ana
  • 19.
    ATRIBUTOS  Um atributo é uma propriedade de um objeto  Ex.: Nome, idade (atributos de pessoa)  Cada atributo tem um valor para cada instância  A idade de João é 26  Devem ser valores de dados puros, e não objetos  Um atributo pode ter um valor default
  • 20.
    ATRIBUTOS  Visibilidade:  + {público}: o elemento pode ser utilizado pelo objeto no qual ele pertence e por qualquer objeto cliente.  # {protegido}: o elemento pode ser utilizado somente pelo próprio objeto no qual ele pertence, ou se existirem, pelas suas subclasses.  - {privado}: o elemento pode ser utilizado somente pelo objeto ao qual ele pertence.  ~{package}: visível a classes do mesmo package.
  • 21.
    ATRIBUTOS  Diagrama de Classes/Objetos Pessoa Represente a Nome: String visibilidade desses Idade: Inteiro atributos. :Pessoa :Pessoa Nome=João Maria Idade= 28 25
  • 22.
    OPERAÇÕES E MÉTODOS  Uma operação é uma função, ou transformação, que pode ser aplicada para ou por objetos em uma classe  Contratar, PagarSalários são operações da Classe Empresa  Um método é uma implementação específica de uma Operação
  • 23.
    OPERAÇÕES E MÉTODOS  Operações podem ser polimórficas  Imprimir arquivos binários, textos, figuras.  Operações podem receber parâmetros  Mover um polígono 10 pixels  Todas as instâncias de uma classe compartilham as mesmas operações.
  • 24.
    OPERAÇÕES E MÉTODOS  Diagrama de Classes Supondo que o Pessoa obterIdade() seja usado somente por um objeto -Nome: String desta classe, qual deve -Idade: Inteiro ser o símbolo de visibilidade para este método? mudarNome() obterIdade()
  • 25.
    RELACIONAMENTOS  Associação  Agregação Composição  Generalização  Especialização
  • 26.
    ASSOCIAÇÕES  É umarelação que descreve um conjunto de vínculos entre elementos de modelo  Podem ser reflexivas, binárias, ternárias, etc.
  • 27.
    ASSOCIAÇÕES  Diagrama de Classes País Cidade Tem-capital Nome Nome  Diagrama de Objetos :País :Cidade Tem-capital Brasil Brasília
  • 28.
    ASSOCIAÇÕES BINÁRIAS  Quando há duas classes envolvidas na associação de forma direta de uma para a outra (mutualismo) Empregado Empresa Trabalha-para
  • 29.
    MULTIPLICIDADE DE ASSOCIAÇÃO Especifica quantas instâncias de uma classe pode se relacionar com cada instância de outra classe.  Limita o número na relação entre os objetos.  Geralmente‫‏‬é‫“‏‬um”‫‏‬ou‫“‏‬muitos”,‫‏‬mas‫‏‬pode‫‏‬ ser um conjunto finito. Carro Roda se-move-sobre 4
  • 30.
    MULTIPLICIDADE DE ASSOCIAÇÃO  Mais exemplos.... Empregado Empresa Trabalha-para 0..* Workstation 0..1 Janela console
  • 31.
    MULTIPLICIDADE - UML Exatamente 1 0..* Muitos (zero ou mais) 0..1 Opcional (zero ou um) 1..* Um ou mais 4 Numericamente Especificado (exatamente 4) 2,4..7 Numericamente Especificado (2,4,5,6 ou 7)
  • 32.
    PAPÉIS DA ASSOCIAÇÃO  É o nome que identifica um lado da Associação.  Também chamado de Papel Executado (ou Nomes de Papel, Role Names); Pessoa Empregado Empregador Empresa Trabalha-para (associação)
  • 33.
    ASSOCIAÇÃO  Diagrama de Classes Empregado Trabalha-para Empresa Nome Nome Cargo 1..*  Diagrama de Instâncias (Objetos) :Empregado Trabalha-para :Empresa Lucas IBM Analista 1..*
  • 34.
    AGREGAÇÃO  É‫‏‬a‫‏‬relação‫“‏‬parte-todo”‫‏‬ou‫“‏‬uma-parte-de”.  Éuma forma especial de associação.  É‫‏‬uma‫‏‬relação‫‏‬do‫‏‬tipo‫“‏‬todo/parte”‫‏‬ou‫“‏‬possui‫‏‬um”‫‏‬ na qual uma classe representa uma coisa grande que é composta de coisas menores.
  • 35.
    AGREGAÇÃO  Ex: Diagrama de Classes Microcomputador Tipo Placa-Mãe Processador RAM Marca Velocidade Capacidade
  • 36.
    AGREGAÇÃO  Ex: Diagrama de Instâncias (Objetos) :Micro P-IV :Placa-Mãe :CPU :RAM ASUS 1.4 Ghz 128 MB
  • 37.
    AGREGAÇÃO Instituto Departamento
  • 38.
    GENERALIZAÇÃO  Generalização éo relacionamento que organiza Classes baseado em suas similaridades e diferenças.  É a capacidade de se criar supertipos que encapsulam a estrutura e o comportamento comum a vários subtipos. Os procedimentos para se obter generalização são:  Identificar similaridades de estrutura/comportamento entre várias classes.  Criar o supertipo para encapsular a estrutura e o comportamento comum a mais de uma classe.  Os objetos originais passam a ser subtipos do novo supertipo criado.
  • 39.
    ESPECIALIZAÇÃO É a capacidade de se criar subtipos que representam refinamentos nos quais a estrutura e/ou comportamento do supertipo são adicionados ou modificados.  Os procedimentos são:  Perceber que algumas classes apresentam estrutura e/ou comportamento especializado.  Criar subtipos de acordo com a especialização.
  • 40.
    GENERALIZAÇÃO/ESPECIALIZAÇÃO  Ex.: Pessoa matrícula nome idade mudarNome() obterIdade() Funcionário Professor promover() contratar()
  • 41.
    ATENÇÃO  Pode confundir em virtude da notação G A  Generalização = é-um  Agregação = tem-um, é-parte-de