Orientação a Objetos       Desmistificando!
@hannelita (hanneli tavante)
@hannelita (hanneli tavante)Desenvolvedora @CaelumFanática por caféOpen SourceViciada em códigos
Você no LAB        Like a Boss
Você no LAB
Você no LABpublic class MeuPrograma {	 public static void main(String[] args) {	 		 		 		 }}
Você no LABpublic class MeuPrograma {	 public static void main(String[] args) {      // faz coisas	 		 		 		 }}
Você no LABpublic class MeuPrograma {	 public static void main(String[] args) {      // faz coisas	 		 	 // faz mais coisa...
Você no LABpublic class MeuPrograma {	 public static void main(String[] args) {      // faz coisas	 		 	 // faz mais coisa...
Você no LAB
Você no LAB
Você no LAB
Você no LAB
Você no LAB
Você no LABSEU CÓDIGO
Você no LAB
Na vida real
Na vida real   #todosChora
A solução
Estilos...
Clique Aqui para adicionar um             título
Estilos...
Orientação a Objetos    (Vulgo ‘OO’)
Definições
DefiniçõesSim, ele trabalha   na Caelum
O que vocês ouviram
O que vocês ouviramOrientação a Objetos... bla bla blabla bla blabla bla....bla bla bla bla bla
O QUE O CÉREBRO DE VOCÊS PENSOU
O QUE O CÉREBRO DE VOCÊS PENSOU
O QUE O CÉREBRO DE VOCÊS PENSOUP0**@ está muito chato
O QUE O CÉREBRO DE VOCÊS PENSOUP0**@ está muito chatoQuero dormir
O QUE O CÉREBRO DE VOCÊS PENSOUP0**@ está muito chatoQuero dormirO que estou fazendo aqui?
O QUE O CÉREBRO DE VOCÊS PENSOUP0**@ está muito chatoQuero dormirO que estou fazendo aqui?O que essa mina tá falando?
O que vocês lembram     (efetivamente)
Ideias
Ideias
App de provas
Um problemapublic class LembradorDeProvas {	 public static void main(String[] args) {	 		    }}
Evil
Prova!
Classes
Objeto              ObjetoObjetos          Classes Objeto                Objeto
prova
provapublic class     {	}
provapublic class   Prova {	}
provapublic class   Prova {	    String nomeDoAluno;}
provapublic class     Prova {	     String nomeDoAluno;    	 double nota;}
provapublic class     Prova {	     String nomeDoAluno;    	 double nota;    	 Calendar data;}
provapublic class     Prova {	     String nomeDoAluno;    	 double nota;    	 Calendar data;}
provapublic class     Prova {	     String nomeDoAluno;    	 double nota;    	 Calendar data;}
provapublic class     Prova {	     String nomeDoAluno;   Atributos    	 double nota;    	 Calendar data;}
provapublic class       Prova {	      String nomeDoAluno;          Atributos    	 double nota;    	 Calendar data;    publ...
provapublic class       Prova {	      String nomeDoAluno;          Atributos    	 double nota;    	 Calendar data;    publ...
provapublic class       Prova {	      String nomeDoAluno;          Atributos    	 double nota;    	 Calendar data;    publ...
provapublic class       Prova {	      String nomeDoAluno;          Atributos    	 double nota;    	 Calendar data;    publ...
provapublic class       Prova {	      String nomeDoAluno;          Atributos    	 double nota;    	 Calendar data;    publ...
provapublic class       Prova {	      String nomeDoAluno;          Atributos    	 double nota;    	 Calendar data;    publ...
provapublic class       Prova {	      String nomeDoAluno;          Atributos    	 double nota;    	 Calendar data;    publ...
Lembretes
Lembretes
LembretesAtributos
LembretesAtributos   ==
Lembretes  Atributos      ==Coisas que o objeto  deve conhecer
Lembretes  Atributos      ==Coisas que o objeto  deve conhecer
Lembretes  Atributos           Métodos      ==Coisas que o objeto  deve conhecer
Lembretes  Atributos           Métodos      ==                ==Coisas que o objeto  deve conhecer
Lembretes  Atributos                Métodos      ==                      ==Coisas que o objeto   Coisas que o objeto  deve...
ProvasProva prova = new Prova();prova.nomeDoAluno = "Hanneli";prova.nota = 10.0;
ProvasProva prova = new Prova();prova.nomeDoAluno = "Hanneli";prova.nota = 10.0;
Provas              Seu objeto do tipo ProvaProva prova = new Prova();prova.nomeDoAluno = "Hanneli";prova.nota = 10.0;
notas
notasprova.nota = -7.0;
notasprova.nota = -7.0;prova.nota = 321.0;
#Fail
#comofaz
#comofazprova.nota = -7.0;
#comofazprova.nota = -7.0;
#comofazprova.nota = -7.0;
#comofazprova.nota = -7.0;
private
visibilidade
visibilidadepublic class Prova {	        String nomeDoAluno;	        double nota;	        Calendar data;}
visibilidadepublic class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;}
E agora?
E agora?prova.nota = -7.0;
E agora?prova.nota = -7.0;
E agora?prova.nota = -7.0;  Não compila mais!
E agora?    prova.nota = -7.0;       Não compila mais!System.out.println( );
E agora?    prova.nota = -7.0;       Não compila mais!System.out.println(        );
E agora?    prova.nota = -7.0;        Não compila mais!System.out.println(?????????);
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;}
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public         ...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double  ...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
E agora?public class Prova {	 private String nomeDoAluno;	 private double nota;	 private Calendar data;    public double g...
Novas ideias
trabalhos extraspublic class ProvaExtra {	   private   String nomeDoAluno;	   private   double nota;	   private   Calendar...
Reutilizar?
Hmmm...public class ProvaExtra {		 private String nomeDaDupla;	 // getters e Setters}
Hmmm...public class ProvaExtra         {		 private String nomeDaDupla;	 // getters e Setters}
Hmmm...public class ProvaExtra extends   {		 private String nomeDaDupla;	 // getters e Setters}
Hmmm...public class ProvaExtra extends Prova   {		 private String nomeDaDupla;	 // getters e Setters}
Hmmm...public class ProvaExtra extends Prova   {		 private String nomeDaDupla;	 // getters e Setters}
Hmmm...public class ProvaExtra extends Prova   {	                    Herança	 private String nomeDaDupla;	 // getters e Se...
Bacana!ProvaExtra extra = new ProvaExtra();extra.setNota(10.0);
Bacana!ProvaExtra extra = new ProvaExtra();extra.setNota(10.0);
public boolean estaDeRecuperacao(Prova extra){	 	 //faz as contas}
public boolean estaDeRecuperacao(Prova extra){	 	 //faz as contas}public boolean estaDeRecuperacao(ProvaExtra extra){	 	 /...
public boolean estaDeRecuperacao(Prova extra){	 	 //faz as contas}
public boolean estaDeRecuperacao(Prova extra){	 	 //faz as contas}
public boolean estaDeRecuperacao(Prova extra){	 	 //faz as contas}              Polimorfismo
Funciona!aluno.estaDeRecuperacao(prova);aluno.estaDeRecuperacao(extra);
Funciona!aluno.estaDeRecuperacao(prova);aluno.estaDeRecuperacao(extra);
Funciona!aluno.estaDeRecuperacao(prova);aluno.estaDeRecuperacao(extra);
Alunospublic class AlunoDeGraduacao{				}
Alunospublic class AlunoDeGraduacao{		 public void fazProvas(){   	 	 //faz provas de um jeito   }		}
Alunospublic class AlunoDeGraduacao{		 public void fazProvas(){   	 	 //faz provas de um jeito   }	 public void entregaTra...
Alunospublic class AlunoDePosGraduacao{				}
Alunospublic class AlunoDePosGraduacao{		 public void fazProvas(){   	 	 //faz provas de outro jeito   }		}
Alunospublic class AlunoDePosGraduacao{		 public void fazProvas(){   	 	 //faz provas de outro jeito   }	 public void entr...
contrato
garantir comportamentopublic                        {		 public void fazProvas();	 public void entregaTrabalhos();}
garantir comportamentopublic             Estudante {		 public void fazProvas();	 public void entregaTrabalhos();}
garantir comportamentopublic interface Estudante {		 public void fazProvas();	 public void entregaTrabalhos();}
interface!public class AlunoDeGraduacao                                {		}
interface!public class AlunoDeGraduacao                     implements Estudante {		}
interface!public class AlunoDeGraduacao                      implements Estudante {	   public void fazProvas(){	   	 	 //f...
interface!public class AlunoDeGraduacao                      implements Estudante {	   public void fazProvas(){	   	 	 //f...
interface!public class AlunoDePosGraduacao                                   {		}
interface!public class AlunoDePosGraduacao                     implements Estudante {		}
interface!public class AlunoDePosGraduacao                      implements Estudante {	   public void fazProvas(){	   	 	 ...
interface!public class AlunoDePosGraduacao                      implements Estudante {	   public void fazProvas(){	   	 	 ...
mágica!
mágica!
mágica!public void avalia(Estudante estudante){}
mágica!public void avalia(Estudante estudante){}
funciona!
funciona!professor.avalia(alunoDaGraduacao);
funciona!professor.avalia(alunoDaGraduacao);
funciona!professor.avalia(alunoDaGraduacao);professor.avalia(alunoDaPosGraduacao);
funciona!professor.avalia(alunoDaGraduacao);professor.avalia(alunoDaPosGraduacao);
mais problemas
mais problemaspublic class Aluno{	 private String nome;	 private int registro;	}
mais problemaspublic class Aluno{       public class Professor{	 private String nome;    	 private String nome;	 private i...
mais problemaspublic class Aluno{       public class Professor{	 private String nome;    	 private String nome;	 private i...
mais problemaspublic class Aluno{       public class Professor{	 private String nome;    	 private String nome;	 private i...
public class Aluno extends Professor
public class Aluno extends Professorpublic class Professor extends Aluno
Não!
herança
herança É um!
#comofaz?
#comofaz?public class DadosPessoais{	 private String nome;	 private int registro;	}
solução
soluçãopublic class Aluno{	 private DadosPessoais dados;	}
soluçãopublic class Aluno{	 private DadosPessoais dados;	}public class Professor{	 private DadosPessoais dados;	}
soluçãopublic class Aluno{	 private DadosPessoais dados;	}public class Professor{	 private DadosPessoais dados;	}
soluçãopublic class Aluno{	 private DadosPessoais dados;	}public class Professor{	 private DadosPessoais dados;	}
soluçãopublic class Aluno{ TEM	 private DadosPessoais dados;	}public class Professor{	 private DadosPessoais dados;	}
solução
solução
soluçãoComposição!
boas práticas
perguntas?         Obrigada!hanneli.tavante@caelum.com.br     Twitter: @hannelita    http://caelum.com.br
Orientação a Objetos - Desmistificando
Orientação a Objetos - Desmistificando
Orientação a Objetos - Desmistificando
Orientação a Objetos - Desmistificando
Orientação a Objetos - Desmistificando
Upcoming SlideShare
Loading in...5
×

Orientação a Objetos - Desmistificando

1,073

Published on

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

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

No Downloads
Views
Total Views
1,073
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
64
Comments
0
Likes
3
Embeds 0
No embeds

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
  • Orientação a Objetos - Desmistificando

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

      Clipping is a handy way to collect important slides you want to go back to later.

    ×