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

2,429 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,429
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
59
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 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. 2. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a caT´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. 3. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Introdu¸˜o caIntrodu¸˜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. 4. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Classes e objetosClasses 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. 5. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Classes e objetosClasses 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. 6. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Atributos e M´todos eAtributos 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. 7. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Atributos e M´todos eExemplo 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. 8. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Atributos e M´todos eExemplo 1.3 Figura : Atributos (estado): o que objeto conhece. M´todos: o que o e objeto faz (Sierra e Bates, 2005)
  9. 9. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca EncapsulamentoModificadores de acesso / visibilidade Em Java private public package protected
  10. 10. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca EncapsulamentoEncapsulamento 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. 11. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca EncapsulamentoM´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. 12. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca EncapsulamentoConstrutores 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. 13. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca EncapsulamentoMembros 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. 14. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca RelacionamentosTrocas 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. 15. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Relacionamentos Associa¸˜es coAssocia¸oes c˜ Definem liga¸˜es entre objetos de diferentes classes co
  16. 16. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Relacionamentos Associa¸˜es coAgrega¸˜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. 17. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Relacionamentos Agrega¸˜o e composi¸˜o ca caAgrega¸˜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. 18. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Relacionamentos Agrega¸˜o e composi¸˜o ca caAgrega¸˜o - Exemplo ca
  19. 19. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cHeran¸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. 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. 21. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cExemplo 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. 22. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cModificador 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. 23. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cPolimorfismo 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. 24. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cClasses 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. 25. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cExemplo Forma Geom´trica e
  26. 26. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 27. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 28. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 29. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 30. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 31. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 32. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 33. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 34. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 35. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 36. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca Heran¸a e polimorfismo cSer´ 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. 37. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca InterfacesInterfaces 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. 38. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca InterfacesExemplo Funcion´rios a
  39. 39. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca InterfacesExemplo Funcion´rios a Quero que alguns funcion´rios (Diretor e Gerente) consigam se a autenticar no sistema interno.
  40. 40. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca InterfacesExemplo 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. 41. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca InterfacesExemplo 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. 42. Introdu¸˜o ` Programa¸˜o Orientada a Objetos usando Java ca a ca InterfacesReferˆ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

×