SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca




           Introdu¸˜o ` Programa¸˜o Orientada a Objetos
                  ca a           ca
                            usando Java

                         Helio Henrique L. C. Monte-Alto
          Disciplina: Paradigma de Programa¸˜o Imperativa e Orientada
                                             ca
                                    a Objetos


                                                           2012
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca




T´picos
 o

       1 Introdu¸˜o
                ca

       2 Classes e objetos

       3 Atributos e M´todos
                      e

       4 Encapsulamento

       5 Relacionamentos
               Associa¸˜es
                      co
               Agrega¸˜o e composi¸˜o
                      ca          ca

       6 Heran¸a e polimorfismo
              c

       7 Interfaces
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Introdu¸˜o
         ca




Introdu¸˜o
       ca


               Orienta¸˜o a objetos (OO) ´ uma aplica¸˜o de tipos abstratos
                      ca                 e           ca
               de dados
               O programa ´ estruturado de forma a representar os objetos e
                            e
               as rela¸˜es entre eles no mundo real
                      co
               Exemplos de linguagens: Java, C++, Python, Ruby,
               Smalltalk, Javascript, C#, Scala, etc.

      Discuss˜o
             a
      Orienta¸˜o a objetos ´ um paradigma de programa¸˜o? Ou seria
             ca            e                         ca
      apenas um estilo de programa¸˜o?
                                  ca
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Classes e objetos




Classes e objetos

      Classe
           Conjunto de indiv´ıduos (objetos) com atributos e
           comportamentos (m´todos) em comum
                                e
           Ex: classe dos animais mam´ ıferos
                      Comportamentos: respirar, amamentar, locomover-se, etc.
                      Atributos: tempo de vida, tamanho, etc.
              Al´m disso, em LP, uma classe define um tipo de dados, assim
                e
              como sua interface (opera¸˜es / m´todos)
                                       co      e

      Objeto
              Um objeto ´ uma instˆncia (ou concretiza¸˜o) de uma classe
                        e         a                   ca
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Classes e objetos




Classes e objetos - Exemplos

              A defini¸˜o de uma classe pode ser vista como uma receita de
                     ca
              bolo
              Os bolos criados a partir dessa receita s˜o instˆncias dessa
                                                       a      a
              classe
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Atributos e M´todos
               e




Atributos e M´todos
             e


      Atributos
           Valores dos atributos constituem o estado de um objeto
              Estado diferencia objetos da mesma classe

      M´todos
       e
          M´todos p´blicos constituem a interface (ou protocolo) de
            e       u
          mensagens dos objetos de uma classe
              Diferen¸as na interface (m´todos a mais) e na implementa¸˜o
                     c                  e                                ca
              (polimorfismo) diferenciam objetos de classes pais, filhas e
              irm˜s
                 a
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Atributos e M´todos
               e




Exemplo Lampada 1

       c l a s s Lampada {

              // E s t a d o
              p r i v a t e boolean acesa = f a l s e ;

              // I n t e r f a c e
              public void acender () {
                     acesa = true ;
              }

              p u b l i c void apagar () {
                      acesa = f a l s e ;
              }

       }


      Quest˜o
           a
      Quantos objetos distintos pertencem ` classe Lampada?
                                          a
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Atributos e M´todos
               e




Exemplo 1.3




      Figura : Atributos (estado): o que objeto conhece. M´todos: o que o
                                                          e
      objeto faz (Sierra e Bates, 2005)
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Encapsulamento




Modificadores de acesso / visibilidade

      Em Java
          private
              public
              package
              protected
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Encapsulamento




Encapsulamento


      Encapsulamento
          Consiste em esconder os membros da classe;
              Utiliza¸˜o do objeto deve ser feita apenas por meio de sua
                     ca
              interface;
              Exemplos:
                      Carro: volante e pedais (interface); motor, rodas
                      (implementa¸˜o)
                                    ca
                      Estrutura de pilha: empilhar, desempilhar e ver o topo
                      (interface); lista est´tica, lista ligada dinˆmica
                                            a                      a
                      (implementa¸˜o)
                                    ca
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Encapsulamento




M´todos de acesso: getters e setters
 e
              Servem para recuperar os dados privados e fazer atribui¸˜o de
                                                                     ca
              maneira confi´vel, por meio de m´todos
                          a                   e
       p u b l i c c l a s s Conta {
               p r i v a t e double s a l d o ;
              // . . . o u t r o s a t r i b u t o s o m i t i d o s

              p u b l i c double getSaldo () {
                      return this . saldo ;
              }
              p u b l i c void s e t S a l d o ( double s a l d o ) {
                      this . saldo = saldo ;
              }
              // . . . o u t r o s metodos o m i t i d o s
       }

      Quest˜o
           a
      ´ uma boa pr´tica fazer getters e setters para todos os atributos?
      E           a
      Por quˆ?
            e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Encapsulamento




Construtores

              Servem para inicializar objetos de uma classe
       p u b l i c c l a s s Conta {
               p r i v a t e i n t numero ;
               private Cliente t i t u l a r ;
               p r i v a t e double s a l d o ;

              p u b l i c Conta ( i n t numero , C l i e n t e   titular ) {
                      t h i s . numero = numero ;
                      this . saldo = 0;
                      this . titular = titular ;
              }
              p u b l i c Conta ( i n t numero , C l i e n t e   t i t u l a r , double
                      saldoinicial ) {
                      t h i s . numero = numero ;
                      this . titular = titular ;
                      this . saldo = s a l d o i n i c i a l ;
              }
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Encapsulamento




Membros de classe


              S˜o atributos e m´todos que n˜o pertencem `s instˆncias,
               a               e           a            a      a
              mas `s classes
                  a
              Tamb´m chamados de membros est´ticos
                  e                         a
       c l a s s Conta {
               private s t a t i c int totalDeContas ;
               // . . .
               p u b l i c Conta ( ) {         // c o n s t r u t o r
                      Conta . t o t a l D e C o n t a s += 1 ;
               }
               p u b l i c s t a t i c i n t getTotalDeContas () {
                       r e t u r n Conta . t o t a l D e C o n t a s ;
               }
       }
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Relacionamentos




Trocas de mensagens


              Em OO, enviar uma mensagem s´   ıncrona a um objeto
              corresponde a chamar um m´todo p´blico desse objeto
                                         e       u
              (lembre-se que os m´todos p´blicos constituem o protocolo da
                                 e       u
              classe)
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Relacionamentos
     Associa¸˜es
            co


Associa¸oes
       c˜



              Definem liga¸˜es entre objetos de diferentes classes
                         co
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Relacionamentos
     Associa¸˜es
            co


Agrega¸˜o e composi¸˜o (associa¸oes do tipo parte-de)
      ca           ca          c˜
      Agrega¸˜o
            ca
          Agrega¸˜o: rela¸˜o ”parte-de”fraca entre objetos.
                ca       ca
              Ex: um computador e seus perif´ricos. Os perif´ricos PODEM
                                             e              e
              existir sem o computador (ligados a outro computador, por
              exemplo).
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Relacionamentos
     Agrega¸˜o e composi¸˜o
           ca           ca


Agrega¸˜o e composi¸˜o (associa¸oes do tipo parte-de)
      ca           ca          c˜

      Composi¸˜o
             ca
         Composi¸˜o: rela¸˜o forte entre objetos. Ex: um mouse e
                 ca       ca
                 o           o    ˜
         seus bot˜es. Os bot˜es NAO PODEM existir independentes
         do mouse para o qual foram fabricados.
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Relacionamentos
     Agrega¸˜o e composi¸˜o
           ca           ca


Agrega¸˜o - Exemplo
      ca
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Heran¸a - Introdu¸˜o
     c           ca

      Motiva¸˜o
            ca
          Tipos abstratos de dados facilitam o reuso
          Problemas:
                      Ao criar uma nova aplica¸˜o, em quase todos os casos s˜o
                                              ca                            a
                      requeridas modifica¸˜es nos TAD j´ existentes
                                        co             a
                      Tipos sem forma alguma de hierarquia n˜o condizem com a
                                                             a
                      modelagem de muitos espa¸os de problema
                                                c
              Solu¸˜o: heran¸a (especializa¸˜o / generaliza¸˜o)
                  ca        c              ca              ca

      Heran¸a
            c
      Permite que novas classes herdem atributos e m´todos de outra
                                                    e
      classe, podendo modificar alguns desses membros e adicionar
      novos membros espec´ ıficos da nova classe.
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c



      Conceitos
              Uma classe Child que herda / estende uma classe Parent ´ uma especializa¸˜o
                                                                       e                ca
              de Parent, e ´ chamada classe derivada, classe filha ou subclasse de Parent;
                           e
              Uma classe Parent pode ser estendida por uma classe Child e ´ uma
                                                                          e
              generaliza¸˜o de Child, sendo chamada classe m˜e ou superclasse de Child.
                        ca                                   a
              Uma subclasse pode ou n˜o ser subtipo de sua superclasse
                                     a
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Exemplo Lampada 2
       c l a s s P i s c a P i s c a e x t e n d s Lampada {

              // E s t a d o
              p r i v a t e boolean piscando = f a l s e ;

              // I n t e r f a c e
              public void a t i v a r P i s c a () {
                     acender () ;
                     piscando = true ;
              }

              public void d e s a t i v a r P i s c a () {
                  piscando = f a l s e ;
              }

       }

      Quest˜o
            a
      E agora? Quantos objetos distintos pertencem ` classe Lampada?
                                                   a
      E ` classe PiscaPisca?
        a
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Modificador de acesso Protected




              Um membro protegido ´ vis´ nas classes filhas
                                  e ıvel
              Em Java, a cl´usula protected tamb´m implica que o
                           a                     e
              membro ´ vis´ a todas as classes do mesmo pacote
                      e ıvel
              (package)
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Polimorfismo


              M´todos p´blicos e protegidos da classe m˜e podem ser
                e        u                             a
              sobrescritos pelas classe filha
              A vincula¸˜o dos objetos com os m´todos ´ feita
                       ca                      e      e
              dinamicamente, em tempo de execu¸˜o
                                                ca

      Vantagem
      Permite que outras partes do programa referenciem os objetos
      pertencentes a uma hierarquia de classes de maneira mais
      transparente, facilitando o reuso.
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Classes abstratas


              S˜o classes que n˜o podem ser instanciadas diretamente
               a               a
              As classes filhas implementam os m´todos abstratos da
                                               e
              classe m˜e
                      a

      Exemplos
          Classe abstrata: Forma geom´trica; Classes concretas:
                                     e
          Retˆngulo, Circulo, etc
             a
              Classe abstrata: Funcion´rio; Classes concretas: Gerente,
                                      a
              Secret´rio, etc
                    a
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Exemplo Forma Geom´trica
                  e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica?
                               e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica? SIM!
                               e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica? SIM!
                               e
                      Lobo ´ um Animal?
                           e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica? SIM!
                               e
                      Lobo ´ um Animal? SIM!
                           e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica? SIM!
                                e
                      Lobo ´ um Animal? SIM!
                           e
                      Banheira ´ um Banheiro?
                               e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica? SIM!
                                e
                      Lobo ´ um Animal? SIM!
                           e
                                               ˜
                      Banheira ´ um Banheiro? NAO!
                               e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica? SIM!
                                e
                      Lobo ´ um Animal? SIM!
                           e
                                                 ˜
                      Banheira ´ um Banheiro? NAO! Banheiro TEM-UMA
                               e
                      Banheira (use agrega¸˜o / composi¸˜o)
                                          ca           ca
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica? SIM!
                                e
                      Lobo ´ um Animal? SIM!
                            e
                                                 ˜
                      Banheira ´ um Banheiro? NAO! Banheiro TEM-UMA
                               e
                      Banheira (use agrega¸˜o / composi¸˜o)
                                          ca           ca
                      Pilha ´ uma Lista?
                            e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica? SIM!
                                e
                      Lobo ´ um Animal? SIM!
                            e
                                                 ˜
                      Banheira ´ um Banheiro? NAO! Banheiro TEM-UMA
                               e
                      Banheira (use agrega¸˜o / composi¸˜o)
                                          ca           ca
                                           ˜
                      Pilha ´ uma Lista? NAO!
                            e
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Heran¸a e polimorfismo
       c




Ser´ que ´ heran¸a mesmo?
   a     e      c

              O uso de heran¸a aumenta o acoplamento entre as classes
                            c
              Usar apenas quando necess´rio, procurando alternativas como
                                       a
              composi¸˜o e Interfaces
                      ca

      Regra b´sica
             a
                                                        ´
              Se uma classe B estende A, ent˜o classe B E-UMA classe A;
                                            a
              Exemplos:
                      Quadrado ´ uma Forma Geometrica? SIM!
                                e
                      Lobo ´ um Animal? SIM!
                            e
                                                 ˜
                      Banheira ´ um Banheiro? NAO! Banheiro TEM-UMA
                               e
                      Banheira (use agrega¸˜o / composi¸˜o)
                                          ca           ca
                            e              ˜
                      Pilha ´ uma Lista? NAO! Pilha n˜o tem m´todos add() nem
                                                     a       e
                      remove() (use composi¸˜o)
                                             ca
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Interfaces




Interfaces

               Uma interface em Java define uma cole¸˜o de m´todos
                                                    ca     e
               p´blicos, sem definir a implementa¸˜o
                u                               ca
               Apenas exp˜e o que o objeto deve fazer, e n˜o como ele
                          o                               a
               faz ou o que ele tem

      Exemplo
          Em Java, para ordenar uma lista usando
          Collection.sort(lista), ´ necess´rio que os membros da
                                       e     a
          lista implementem a interface Comparable.
       p u b l i c i n t e r f a c e Comparable<T> {
               i n t compareTo (T o u t r o ) ;
       }
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Interfaces




Exemplo Funcion´rios
               a
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Interfaces




Exemplo Funcion´rios
               a
      Quero que alguns funcion´rios (Diretor e Gerente) consigam se
                                a
      autenticar no sistema interno.
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Interfaces




Exemplo Funcion´rios
               a
      Depois de um tempo, descobri que preciso que o cliente tamb´me
      possa se autenticar no sistema interno, ent˜o fiz a caca abaixo:
                                                 a
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Interfaces




Exemplo Funcion´rios
               a
      Depois de refatorar meu sistema usando interfaces, eliminei as
      gambiarras e deixei o sistema menos acoplado e mais manuten´   ıvel.
      (Um prot´tipo do c´digo estar´ nos exemplos.)
              o           o         a
Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java
       ca a          ca
  Interfaces




Referˆncias Bibliogr´ficas
     e              a



               Arlow J., Neustadt I. UML and the Unified Process - Practical
               Object-Oriented Analysis and Design. Pearson. 2002
               Caelum. Java e Orienta¸˜o a Objetos. Dispon´ em <
                                     ca                   ıvel
               http://www.caelum.com.br/curso/fj-11-java-orientacao-
               objetos>
               Sierra K., Bates B. Use a Cabe¸a! - Java. 2a Edi¸˜o. O’Reilly
                                             c                 ca
               Media. 2005

Mais conteúdo relacionado

Mais procurados

Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0Thiago Dieb
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaCristiano Almeida
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetosNécio de Lima Veras
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – IIGabriel Faustino
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 
Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)guest18b3c00
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – IIIGabriel Faustino
 

Mais procurados (20)

POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
05 poo-ii
05   poo-ii05   poo-ii
05 poo-ii
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
Java 02
Java 02Java 02
Java 02
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – II
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)
 
Introdução ao C#
Introdução ao C#Introdução ao C#
Introdução ao C#
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – III
 

Semelhante a Introdução à Programação Orientada a Objetos Usando Java

Semelhante a Introdução à Programação Orientada a Objetos Usando Java (20)

Poo slides01
Poo slides01Poo slides01
Poo slides01
 
POO Plano de Curso
POO Plano de CursoPOO Plano de Curso
POO Plano de Curso
 
POO.pdf
POO.pdfPOO.pdf
POO.pdf
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Poo padadigmas
Poo padadigmasPoo padadigmas
Poo padadigmas
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Java7
Java7Java7
Java7
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Oo presentation básica
Oo presentation básicaOo presentation básica
Oo presentation básica
 
Suporte à Programação Orientada a Objetos
Suporte à Programação Orientada a ObjetosSuporte à Programação Orientada a Objetos
Suporte à Programação Orientada a Objetos
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Reflections
ReflectionsReflections
Reflections
 
Php5 e a orientação a objetos
Php5 e a orientação a objetosPhp5 e a orientação a objetos
Php5 e a orientação a objetos
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Compweek
CompweekCompweek
Compweek
 

Mais de Helio Henrique L. C. Monte-Alto

Context Awareness e Sistemas Multiagentes para o Suporte a Ambientes de Traba...
Context Awareness e Sistemas Multiagentes para o Suporte a Ambientes de Traba...Context Awareness e Sistemas Multiagentes para o Suporte a Ambientes de Traba...
Context Awareness e Sistemas Multiagentes para o Suporte a Ambientes de Traba...Helio Henrique L. C. Monte-Alto
 
Multi-agent applications in a context-aware global software development envir...
Multi-agent applications in a context-aware global software development envir...Multi-agent applications in a context-aware global software development envir...
Multi-agent applications in a context-aware global software development envir...Helio Henrique L. C. Monte-Alto
 
Estudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologiasEstudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologiasHelio Henrique L. C. Monte-Alto
 
Investigação de Recursos de Comunicação e Colaboração na Infraestrutura Seman...
Investigação de Recursos de Comunicação e Colaboração na Infraestrutura Seman...Investigação de Recursos de Comunicação e Colaboração na Infraestrutura Seman...
Investigação de Recursos de Comunicação e Colaboração na Infraestrutura Seman...Helio Henrique L. C. Monte-Alto
 
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao ContextoSistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao ContextoHelio Henrique L. C. Monte-Alto
 
ESTUDO DE MOBILIDADE DE AGENTES EM APLICAÇÕES SENSÍVEIS AO CONTEXTO
ESTUDO DE MOBILIDADE DE AGENTES EM  APLICAÇÕES SENSÍVEIS AO CONTEXTOESTUDO DE MOBILIDADE DE AGENTES EM  APLICAÇÕES SENSÍVEIS AO CONTEXTO
ESTUDO DE MOBILIDADE DE AGENTES EM APLICAÇÕES SENSÍVEIS AO CONTEXTOHelio Henrique L. C. Monte-Alto
 

Mais de Helio Henrique L. C. Monte-Alto (13)

Processo de Software
Processo de SoftwareProcesso de Software
Processo de Software
 
Desenvolvimento Ágil de Software
Desenvolvimento Ágil de SoftwareDesenvolvimento Ágil de Software
Desenvolvimento Ágil de Software
 
Context Awareness e Sistemas Multiagentes para o Suporte a Ambientes de Traba...
Context Awareness e Sistemas Multiagentes para o Suporte a Ambientes de Traba...Context Awareness e Sistemas Multiagentes para o Suporte a Ambientes de Traba...
Context Awareness e Sistemas Multiagentes para o Suporte a Ambientes de Traba...
 
Teoremas da Incompletude de Gödel
Teoremas da Incompletude de GödelTeoremas da Incompletude de Gödel
Teoremas da Incompletude de Gödel
 
Tipos Abstratos de Dados e Encapsulamento
Tipos Abstratos de Dados e EncapsulamentoTipos Abstratos de Dados e Encapsulamento
Tipos Abstratos de Dados e Encapsulamento
 
Multi-agent applications in a context-aware global software development envir...
Multi-agent applications in a context-aware global software development envir...Multi-agent applications in a context-aware global software development envir...
Multi-agent applications in a context-aware global software development envir...
 
Estudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologiasEstudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologias
 
Investigação de Recursos de Comunicação e Colaboração na Infraestrutura Seman...
Investigação de Recursos de Comunicação e Colaboração na Infraestrutura Seman...Investigação de Recursos de Comunicação e Colaboração na Infraestrutura Seman...
Investigação de Recursos de Comunicação e Colaboração na Infraestrutura Seman...
 
Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)Arquitetura orientada a serviços (SOA)
Arquitetura orientada a serviços (SOA)
 
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao ContextoSistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
 
Ferramentas Case - fase de análise e projeto
Ferramentas Case - fase de análise e projetoFerramentas Case - fase de análise e projeto
Ferramentas Case - fase de análise e projeto
 
Rmi (remote method invocation)
Rmi (remote method invocation)Rmi (remote method invocation)
Rmi (remote method invocation)
 
ESTUDO DE MOBILIDADE DE AGENTES EM APLICAÇÕES SENSÍVEIS AO CONTEXTO
ESTUDO DE MOBILIDADE DE AGENTES EM  APLICAÇÕES SENSÍVEIS AO CONTEXTOESTUDO DE MOBILIDADE DE AGENTES EM  APLICAÇÕES SENSÍVEIS AO CONTEXTO
ESTUDO DE MOBILIDADE DE AGENTES EM APLICAÇÕES SENSÍVEIS AO CONTEXTO
 

Introdução à Programação Orientada a Objetos Usando Java

  • 1. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Introdu¸˜o ` Programa¸˜o Orientada a Objetos ca a ca usando Java Helio Henrique L. C. Monte-Alto Disciplina: Paradigma de Programa¸˜o Imperativa e Orientada ca a Objetos 2012
  • 2. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca T´picos o 1 Introdu¸˜o ca 2 Classes e objetos 3 Atributos e M´todos e 4 Encapsulamento 5 Relacionamentos Associa¸˜es co Agrega¸˜o e composi¸˜o ca ca 6 Heran¸a e polimorfismo c 7 Interfaces
  • 3. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Introdu¸˜o ca Introdu¸˜o ca Orienta¸˜o a objetos (OO) ´ uma aplica¸˜o de tipos abstratos ca e ca de dados O programa ´ estruturado de forma a representar os objetos e e as rela¸˜es entre eles no mundo real co Exemplos de linguagens: Java, C++, Python, Ruby, Smalltalk, Javascript, C#, Scala, etc. Discuss˜o a Orienta¸˜o a objetos ´ um paradigma de programa¸˜o? Ou seria ca e ca apenas um estilo de programa¸˜o? ca
  • 4. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Classes e objetos Classes e objetos Classe Conjunto de indiv´ıduos (objetos) com atributos e comportamentos (m´todos) em comum e Ex: classe dos animais mam´ ıferos Comportamentos: respirar, amamentar, locomover-se, etc. Atributos: tempo de vida, tamanho, etc. Al´m disso, em LP, uma classe define um tipo de dados, assim e como sua interface (opera¸˜es / m´todos) co e Objeto Um objeto ´ uma instˆncia (ou concretiza¸˜o) de uma classe e a ca
  • 5. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Classes e objetos Classes e objetos - Exemplos A defini¸˜o de uma classe pode ser vista como uma receita de ca bolo Os bolos criados a partir dessa receita s˜o instˆncias dessa a a classe
  • 6. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Atributos e M´todos e Atributos e M´todos e Atributos Valores dos atributos constituem o estado de um objeto Estado diferencia objetos da mesma classe M´todos e M´todos p´blicos constituem a interface (ou protocolo) de e u mensagens dos objetos de uma classe Diferen¸as na interface (m´todos a mais) e na implementa¸˜o c e ca (polimorfismo) diferenciam objetos de classes pais, filhas e irm˜s a
  • 7. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Atributos e M´todos e Exemplo Lampada 1 c l a s s Lampada { // E s t a d o p r i v a t e boolean acesa = f a l s e ; // I n t e r f a c e public void acender () { acesa = true ; } p u b l i c void apagar () { acesa = f a l s e ; } } Quest˜o a Quantos objetos distintos pertencem ` classe Lampada? a
  • 8. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Atributos e M´todos e Exemplo 1.3 Figura : Atributos (estado): o que objeto conhece. M´todos: o que o e objeto faz (Sierra e Bates, 2005)
  • 9. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Encapsulamento Modificadores de acesso / visibilidade Em Java private public package protected
  • 10. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Encapsulamento Encapsulamento Encapsulamento Consiste em esconder os membros da classe; Utiliza¸˜o do objeto deve ser feita apenas por meio de sua ca interface; Exemplos: Carro: volante e pedais (interface); motor, rodas (implementa¸˜o) ca Estrutura de pilha: empilhar, desempilhar e ver o topo (interface); lista est´tica, lista ligada dinˆmica a a (implementa¸˜o) ca
  • 11. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Encapsulamento M´todos de acesso: getters e setters e Servem para recuperar os dados privados e fazer atribui¸˜o de ca maneira confi´vel, por meio de m´todos a e p u b l i c c l a s s Conta { p r i v a t e double s a l d o ; // . . . o u t r o s a t r i b u t o s o m i t i d o s p u b l i c double getSaldo () { return this . saldo ; } p u b l i c void s e t S a l d o ( double s a l d o ) { this . saldo = saldo ; } // . . . o u t r o s metodos o m i t i d o s } Quest˜o a ´ uma boa pr´tica fazer getters e setters para todos os atributos? E a Por quˆ? e
  • 12. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Encapsulamento Construtores Servem para inicializar objetos de uma classe p u b l i c c l a s s Conta { p r i v a t e i n t numero ; private Cliente t i t u l a r ; p r i v a t e double s a l d o ; p u b l i c Conta ( i n t numero , C l i e n t e titular ) { t h i s . numero = numero ; this . saldo = 0; this . titular = titular ; } p u b l i c Conta ( i n t numero , C l i e n t e t i t u l a r , double saldoinicial ) { t h i s . numero = numero ; this . titular = titular ; this . saldo = s a l d o i n i c i a l ; }
  • 13. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Encapsulamento Membros de classe S˜o atributos e m´todos que n˜o pertencem `s instˆncias, a e a a a mas `s classes a Tamb´m chamados de membros est´ticos e a c l a s s Conta { private s t a t i c int totalDeContas ; // . . . p u b l i c Conta ( ) { // c o n s t r u t o r Conta . t o t a l D e C o n t a s += 1 ; } p u b l i c s t a t i c i n t getTotalDeContas () { r e t u r n Conta . t o t a l D e C o n t a s ; } }
  • 14. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Relacionamentos Trocas de mensagens Em OO, enviar uma mensagem s´ ıncrona a um objeto corresponde a chamar um m´todo p´blico desse objeto e u (lembre-se que os m´todos p´blicos constituem o protocolo da e u classe)
  • 15. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Relacionamentos Associa¸˜es co Associa¸oes c˜ Definem liga¸˜es entre objetos de diferentes classes co
  • 16. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Relacionamentos Associa¸˜es co Agrega¸˜o e composi¸˜o (associa¸oes do tipo parte-de) ca ca c˜ Agrega¸˜o ca Agrega¸˜o: rela¸˜o ”parte-de”fraca entre objetos. ca ca Ex: um computador e seus perif´ricos. Os perif´ricos PODEM e e existir sem o computador (ligados a outro computador, por exemplo).
  • 17. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Relacionamentos Agrega¸˜o e composi¸˜o ca ca Agrega¸˜o e composi¸˜o (associa¸oes do tipo parte-de) ca ca c˜ Composi¸˜o ca Composi¸˜o: rela¸˜o forte entre objetos. Ex: um mouse e ca ca o o ˜ seus bot˜es. Os bot˜es NAO PODEM existir independentes do mouse para o qual foram fabricados.
  • 18. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Relacionamentos Agrega¸˜o e composi¸˜o ca ca Agrega¸˜o - Exemplo ca
  • 19. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Heran¸a - Introdu¸˜o c ca Motiva¸˜o ca Tipos abstratos de dados facilitam o reuso Problemas: Ao criar uma nova aplica¸˜o, em quase todos os casos s˜o ca a requeridas modifica¸˜es nos TAD j´ existentes co a Tipos sem forma alguma de hierarquia n˜o condizem com a a modelagem de muitos espa¸os de problema c Solu¸˜o: heran¸a (especializa¸˜o / generaliza¸˜o) ca c ca ca Heran¸a c Permite que novas classes herdem atributos e m´todos de outra e classe, podendo modificar alguns desses membros e adicionar novos membros espec´ ıficos da nova classe.
  • 20. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Conceitos Uma classe Child que herda / estende uma classe Parent ´ uma especializa¸˜o e ca de Parent, e ´ chamada classe derivada, classe filha ou subclasse de Parent; e Uma classe Parent pode ser estendida por uma classe Child e ´ uma e generaliza¸˜o de Child, sendo chamada classe m˜e ou superclasse de Child. ca a Uma subclasse pode ou n˜o ser subtipo de sua superclasse a
  • 21. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Exemplo Lampada 2 c l a s s P i s c a P i s c a e x t e n d s Lampada { // E s t a d o p r i v a t e boolean piscando = f a l s e ; // I n t e r f a c e public void a t i v a r P i s c a () { acender () ; piscando = true ; } public void d e s a t i v a r P i s c a () { piscando = f a l s e ; } } Quest˜o a E agora? Quantos objetos distintos pertencem ` classe Lampada? a E ` classe PiscaPisca? a
  • 22. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Modificador de acesso Protected Um membro protegido ´ vis´ nas classes filhas e ıvel Em Java, a cl´usula protected tamb´m implica que o a e membro ´ vis´ a todas as classes do mesmo pacote e ıvel (package)
  • 23. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Polimorfismo M´todos p´blicos e protegidos da classe m˜e podem ser e u a sobrescritos pelas classe filha A vincula¸˜o dos objetos com os m´todos ´ feita ca e e dinamicamente, em tempo de execu¸˜o ca Vantagem Permite que outras partes do programa referenciem os objetos pertencentes a uma hierarquia de classes de maneira mais transparente, facilitando o reuso.
  • 24. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Classes abstratas S˜o classes que n˜o podem ser instanciadas diretamente a a As classes filhas implementam os m´todos abstratos da e classe m˜e a Exemplos Classe abstrata: Forma geom´trica; Classes concretas: e Retˆngulo, Circulo, etc a Classe abstrata: Funcion´rio; Classes concretas: Gerente, a Secret´rio, etc a
  • 25. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Exemplo Forma Geom´trica e
  • 26. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos:
  • 27. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? e
  • 28. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? SIM! e
  • 29. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? SIM! e Lobo ´ um Animal? e
  • 30. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? SIM! e Lobo ´ um Animal? SIM! e
  • 31. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? SIM! e Lobo ´ um Animal? SIM! e Banheira ´ um Banheiro? e
  • 32. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? SIM! e Lobo ´ um Animal? SIM! e ˜ Banheira ´ um Banheiro? NAO! e
  • 33. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? SIM! e Lobo ´ um Animal? SIM! e ˜ Banheira ´ um Banheiro? NAO! Banheiro TEM-UMA e Banheira (use agrega¸˜o / composi¸˜o) ca ca
  • 34. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? SIM! e Lobo ´ um Animal? SIM! e ˜ Banheira ´ um Banheiro? NAO! Banheiro TEM-UMA e Banheira (use agrega¸˜o / composi¸˜o) ca ca Pilha ´ uma Lista? e
  • 35. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? SIM! e Lobo ´ um Animal? SIM! e ˜ Banheira ´ um Banheiro? NAO! Banheiro TEM-UMA e Banheira (use agrega¸˜o / composi¸˜o) ca ca ˜ Pilha ´ uma Lista? NAO! e
  • 36. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo c Ser´ que ´ heran¸a mesmo? a e c O uso de heran¸a aumenta o acoplamento entre as classes c Usar apenas quando necess´rio, procurando alternativas como a composi¸˜o e Interfaces ca Regra b´sica a ´ Se uma classe B estende A, ent˜o classe B E-UMA classe A; a Exemplos: Quadrado ´ uma Forma Geometrica? SIM! e Lobo ´ um Animal? SIM! e ˜ Banheira ´ um Banheiro? NAO! Banheiro TEM-UMA e Banheira (use agrega¸˜o / composi¸˜o) ca ca e ˜ Pilha ´ uma Lista? NAO! Pilha n˜o tem m´todos add() nem a e remove() (use composi¸˜o) ca
  • 37. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Interfaces Interfaces Uma interface em Java define uma cole¸˜o de m´todos ca e p´blicos, sem definir a implementa¸˜o u ca Apenas exp˜e o que o objeto deve fazer, e n˜o como ele o a faz ou o que ele tem Exemplo Em Java, para ordenar uma lista usando Collection.sort(lista), ´ necess´rio que os membros da e a lista implementem a interface Comparable. p u b l i c i n t e r f a c e Comparable<T> { i n t compareTo (T o u t r o ) ; }
  • 38. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Interfaces Exemplo Funcion´rios a
  • 39. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Interfaces Exemplo Funcion´rios a Quero que alguns funcion´rios (Diretor e Gerente) consigam se a autenticar no sistema interno.
  • 40. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Interfaces Exemplo Funcion´rios a Depois de um tempo, descobri que preciso que o cliente tamb´me possa se autenticar no sistema interno, ent˜o fiz a caca abaixo: a
  • 41. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Interfaces Exemplo Funcion´rios a Depois de refatorar meu sistema usando interfaces, eliminei as gambiarras e deixei o sistema menos acoplado e mais manuten´ ıvel. (Um prot´tipo do c´digo estar´ nos exemplos.) o o a
  • 42. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Interfaces Referˆncias Bibliogr´ficas e a Arlow J., Neustadt I. UML and the Unified Process - Practical Object-Oriented Analysis and Design. Pearson. 2002 Caelum. Java e Orienta¸˜o a Objetos. Dispon´ em < ca ıvel http://www.caelum.com.br/curso/fj-11-java-orientacao- objetos> Sierra K., Bates B. Use a Cabe¸a! - Java. 2a Edi¸˜o. O’Reilly c ca Media. 2005