Orientação a Objetos - Desmistificando
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Orientação a Objetos - Desmistificando

  • 1,336 views
Uploaded on

Palestra sobre Orientação a Objetos ministrada na Semana da Comptação da USCS - 19/10/2011.

Palestra sobre Orientação a Objetos ministrada na Semana da Comptação da USCS - 19/10/2011.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,336
On Slideshare
1,329
From Embeds
7
Number of Embeds
4

Actions

Shares
Downloads
59
Comments
0
Likes
3

Embeds 7

http://www.linkedin.com 3
http://us-w1.rockmelt.com 2
http://a0.twimg.com 1
https://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Orientação a Objetos Desmistificando!
  • 2. @hannelita (hanneli tavante)
  • 3. @hannelita (hanneli tavante)Desenvolvedora @CaelumFanática por caféOpen SourceViciada em códigos
  • 4. Você no LAB Like a Boss
  • 5. Você no LAB
  • 6. Você no LABpublic class MeuPrograma { public static void main(String[] args) { }}
  • 7. Você no LABpublic class MeuPrograma { public static void main(String[] args) { // faz coisas }}
  • 8. Você no LABpublic class MeuPrograma { public static void main(String[] args) { // faz coisas // faz mais coisas }}
  • 9. Você no LABpublic class MeuPrograma { public static void main(String[] args) { // faz coisas // faz mais coisas // e mais coisas }}
  • 10. Você no LAB
  • 11. Você no LAB
  • 12. Você no LAB
  • 13. Você no LAB
  • 14. Você no LAB
  • 15. Você no LABSEU CÓDIGO
  • 16. Você no LAB
  • 17. Na vida real
  • 18. Na vida real #todosChora
  • 19. A solução
  • 20. Estilos...
  • 21. Clique Aqui para adicionar um título
  • 22. Estilos...
  • 23. Orientação a Objetos (Vulgo ‘OO’)
  • 24. Definições
  • 25. DefiniçõesSim, ele trabalha na Caelum
  • 26. O que vocês ouviram
  • 27. O que vocês ouviramOrientação a Objetos... bla bla blabla bla blabla bla....bla bla bla bla bla
  • 28. O QUE O CÉREBRO DE VOCÊS PENSOU
  • 29. O QUE O CÉREBRO DE VOCÊS PENSOU
  • 30. O QUE O CÉREBRO DE VOCÊS PENSOUP0**@ está muito chato
  • 31. O QUE O CÉREBRO DE VOCÊS PENSOUP0**@ está muito chatoQuero dormir
  • 32. O QUE O CÉREBRO DE VOCÊS PENSOUP0**@ está muito chatoQuero dormirO que estou fazendo aqui?
  • 33. O QUE O CÉREBRO DE VOCÊS PENSOUP0**@ está muito chatoQuero dormirO que estou fazendo aqui?O que essa mina tá falando?
  • 34. O que vocês lembram (efetivamente)
  • 35. Ideias
  • 36. Ideias
  • 37. App de provas
  • 38. Um problemapublic class LembradorDeProvas { public static void main(String[] args) { }}
  • 39. Evil
  • 40. Prova!
  • 41. Classes
  • 42. Objeto ObjetoObjetos Classes Objeto Objeto
  • 43. prova
  • 44. provapublic class { }
  • 45. provapublic class Prova { }
  • 46. provapublic class Prova { String nomeDoAluno;}
  • 47. provapublic class Prova { String nomeDoAluno; double nota;}
  • 48. provapublic class Prova { String nomeDoAluno; double nota; Calendar data;}
  • 49. provapublic class Prova { String nomeDoAluno; double nota; Calendar data;}
  • 50. provapublic class Prova { String nomeDoAluno; double nota; Calendar data;}
  • 51. provapublic class Prova { String nomeDoAluno; Atributos double nota; Calendar data;}
  • 52. provapublic class Prova { String nomeDoAluno; Atributos double nota; Calendar data; public void calculaPeso( ){ //calcula o peso da prova dado o bimestre }}
  • 53. provapublic class Prova { String nomeDoAluno; Atributos double nota; Calendar data; public void calculaPeso( ){ //calcula o peso da prova dado o bimestre }}
  • 54. provapublic class Prova { String nomeDoAluno; Atributos double nota; Calendar data; public void calculaPeso( ){ //calcula o peso da prova dado o bimestre }}
  • 55. provapublic class Prova { String nomeDoAluno; Atributos double nota; Calendar data; public void calculaPeso(int bimestre ){ //calcula o peso da prova dado o bimestre }}
  • 56. provapublic class Prova { String nomeDoAluno; Atributos double nota; Calendar data; public void calculaPeso(int bimestre ){ //calcula o peso da prova dado o bimestre }}
  • 57. provapublic class Prova { String nomeDoAluno; Atributos double nota; Calendar data; public void calculaPeso(int bimestre ){ //calcula o peso da prova dado o bimestre }}
  • 58. provapublic class Prova { String nomeDoAluno; Atributos double nota; Calendar data; public void calculaPeso(int bimestre ){ //calcula o peso da prova dado o bimestre }} Métodos
  • 59. Lembretes
  • 60. Lembretes
  • 61. LembretesAtributos
  • 62. LembretesAtributos ==
  • 63. Lembretes Atributos ==Coisas que o objeto deve conhecer
  • 64. Lembretes Atributos ==Coisas que o objeto deve conhecer
  • 65. Lembretes Atributos Métodos ==Coisas que o objeto deve conhecer
  • 66. Lembretes Atributos Métodos == ==Coisas que o objeto deve conhecer
  • 67. Lembretes Atributos Métodos == ==Coisas que o objeto Coisas que o objeto deve conhecer deve fazer
  • 68. ProvasProva prova = new Prova();prova.nomeDoAluno = "Hanneli";prova.nota = 10.0;
  • 69. ProvasProva prova = new Prova();prova.nomeDoAluno = "Hanneli";prova.nota = 10.0;
  • 70. Provas Seu objeto do tipo ProvaProva prova = new Prova();prova.nomeDoAluno = "Hanneli";prova.nota = 10.0;
  • 71. notas
  • 72. notasprova.nota = -7.0;
  • 73. notasprova.nota = -7.0;prova.nota = 321.0;
  • 74. #Fail
  • 75. #comofaz
  • 76. #comofazprova.nota = -7.0;
  • 77. #comofazprova.nota = -7.0;
  • 78. #comofazprova.nota = -7.0;
  • 79. #comofazprova.nota = -7.0;
  • 80. private
  • 81. visibilidade
  • 82. visibilidadepublic class Prova { String nomeDoAluno; double nota; Calendar data;}
  • 83. visibilidadepublic class Prova { private String nomeDoAluno; private double nota; private Calendar data;}
  • 84. E agora?
  • 85. E agora?prova.nota = -7.0;
  • 86. E agora?prova.nota = -7.0;
  • 87. E agora?prova.nota = -7.0; Não compila mais!
  • 88. E agora? prova.nota = -7.0; Não compila mais!System.out.println( );
  • 89. E agora? prova.nota = -7.0; Não compila mais!System.out.println( );
  • 90. E agora? prova.nota = -7.0; Não compila mais!System.out.println(?????????);
  • 91. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data;}
  • 92. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public { }}
  • 93. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double { }}
  • 94. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { }}
  • 95. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { return nota; }}
  • 96. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { return nota; } public { }}
  • 97. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { return nota; } public void { }}
  • 98. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { return nota; } public void setNota { }}
  • 99. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { return nota; } public void setNota ( { }}
  • 100. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { return nota; } public void setNota ( double nota) { }}
  • 101. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { return nota; } public void setNota ( double nota) { this.nota = nota; }}
  • 102. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { return nota; } public void setNota ( double nota) { this.nota = nota; }}
  • 103. E agora?public class Prova { private String nomeDoAluno; private double nota; private Calendar data; public double getNota() { return nota; } public void setNota ( double nota) { this.nota = nota; }}
  • 104. Novas ideias
  • 105. trabalhos extraspublic class ProvaExtra { private String nomeDoAluno; private double nota; private Calendar data; private String nomeDaDupla; // getters e Setters public void calculaPeso(int bimestre) { // calcula o peso da prova dado o bimestre }}
  • 106. Reutilizar?
  • 107. Hmmm...public class ProvaExtra { private String nomeDaDupla; // getters e Setters}
  • 108. Hmmm...public class ProvaExtra { private String nomeDaDupla; // getters e Setters}
  • 109. Hmmm...public class ProvaExtra extends { private String nomeDaDupla; // getters e Setters}
  • 110. Hmmm...public class ProvaExtra extends Prova { private String nomeDaDupla; // getters e Setters}
  • 111. Hmmm...public class ProvaExtra extends Prova { private String nomeDaDupla; // getters e Setters}
  • 112. Hmmm...public class ProvaExtra extends Prova { Herança private String nomeDaDupla; // getters e Setters}
  • 113. Bacana!ProvaExtra extra = new ProvaExtra();extra.setNota(10.0);
  • 114. Bacana!ProvaExtra extra = new ProvaExtra();extra.setNota(10.0);
  • 115. public boolean estaDeRecuperacao(Prova extra){ //faz as contas}
  • 116. public boolean estaDeRecuperacao(Prova extra){ //faz as contas}public boolean estaDeRecuperacao(ProvaExtra extra){ //faz as contas}
  • 117. public boolean estaDeRecuperacao(Prova extra){ //faz as contas}
  • 118. public boolean estaDeRecuperacao(Prova extra){ //faz as contas}
  • 119. public boolean estaDeRecuperacao(Prova extra){ //faz as contas} Polimorfismo
  • 120. Funciona!aluno.estaDeRecuperacao(prova);aluno.estaDeRecuperacao(extra);
  • 121. Funciona!aluno.estaDeRecuperacao(prova);aluno.estaDeRecuperacao(extra);
  • 122. Funciona!aluno.estaDeRecuperacao(prova);aluno.estaDeRecuperacao(extra);
  • 123. Alunospublic class AlunoDeGraduacao{ }
  • 124. Alunospublic class AlunoDeGraduacao{ public void fazProvas(){ //faz provas de um jeito } }
  • 125. Alunospublic class AlunoDeGraduacao{ public void fazProvas(){ //faz provas de um jeito } public void entregaTrabalhos(){ //entrega os trabalhos de um jeito }}
  • 126. Alunospublic class AlunoDePosGraduacao{ }
  • 127. Alunospublic class AlunoDePosGraduacao{ public void fazProvas(){ //faz provas de outro jeito } }
  • 128. Alunospublic class AlunoDePosGraduacao{ public void fazProvas(){ //faz provas de outro jeito } public void entregaTrabalhos(){ //entrega os trabalhos de outro jeito }}
  • 129. contrato
  • 130. garantir comportamentopublic { public void fazProvas(); public void entregaTrabalhos();}
  • 131. garantir comportamentopublic Estudante { public void fazProvas(); public void entregaTrabalhos();}
  • 132. garantir comportamentopublic interface Estudante { public void fazProvas(); public void entregaTrabalhos();}
  • 133. interface!public class AlunoDeGraduacao { }
  • 134. interface!public class AlunoDeGraduacao implements Estudante { }
  • 135. interface!public class AlunoDeGraduacao implements Estudante { public void fazProvas(){ //faz provas de um jeito }}
  • 136. interface!public class AlunoDeGraduacao implements Estudante { public void fazProvas(){ //faz provas de um jeito } public void entregaTrabalhos(){ //entrega os trabalhos de um jeito }}
  • 137. interface!public class AlunoDePosGraduacao { }
  • 138. interface!public class AlunoDePosGraduacao implements Estudante { }
  • 139. interface!public class AlunoDePosGraduacao implements Estudante { public void fazProvas(){ //faz provas de um jeito }}
  • 140. interface!public class AlunoDePosGraduacao implements Estudante { public void fazProvas(){ //faz provas de um jeito } public void entregaTrabalhos(){ //entrega os trabalhos de um jeito }}
  • 141. mágica!
  • 142. mágica!
  • 143. mágica!public void avalia(Estudante estudante){}
  • 144. mágica!public void avalia(Estudante estudante){}
  • 145. funciona!
  • 146. funciona!professor.avalia(alunoDaGraduacao);
  • 147. funciona!professor.avalia(alunoDaGraduacao);
  • 148. funciona!professor.avalia(alunoDaGraduacao);professor.avalia(alunoDaPosGraduacao);
  • 149. funciona!professor.avalia(alunoDaGraduacao);professor.avalia(alunoDaPosGraduacao);
  • 150. mais problemas
  • 151. mais problemaspublic class Aluno{ private String nome; private int registro; }
  • 152. mais problemaspublic class Aluno{ public class Professor{ private String nome; private String nome; private int registro; private int registro; } }
  • 153. mais problemaspublic class Aluno{ public class Professor{ private String nome; private String nome; private int registro; private int registro; } }
  • 154. mais problemaspublic class Aluno{ public class Professor{ private String nome; private String nome; private int registro; private int registro; } }
  • 155. public class Aluno extends Professor
  • 156. public class Aluno extends Professorpublic class Professor extends Aluno
  • 157. Não!
  • 158. herança
  • 159. herança É um!
  • 160. #comofaz?
  • 161. #comofaz?public class DadosPessoais{ private String nome; private int registro; }
  • 162. solução
  • 163. soluçãopublic class Aluno{ private DadosPessoais dados; }
  • 164. soluçãopublic class Aluno{ private DadosPessoais dados; }public class Professor{ private DadosPessoais dados; }
  • 165. soluçãopublic class Aluno{ private DadosPessoais dados; }public class Professor{ private DadosPessoais dados; }
  • 166. soluçãopublic class Aluno{ private DadosPessoais dados; }public class Professor{ private DadosPessoais dados; }
  • 167. soluçãopublic class Aluno{ TEM private DadosPessoais dados; }public class Professor{ private DadosPessoais dados; }
  • 168. solução
  • 169. solução
  • 170. soluçãoComposição!
  • 171. boas práticas
  • 172. perguntas? Obrigada!hanneli.tavante@caelum.com.br Twitter: @hannelita http://caelum.com.br