Cursos / Jogos Digitais / Programação Orientada a Objetos / Aula
Considere que a classe Brinquedo (usada no exercício anterior) possui como descendentes as classes Carro, Avião e Barco, conforme ilustra a Figura 5.
Observe que as classes filhas sobrepõem o método mover() da classe Brinquedo. Vejamos então como ficam essas classes codificadas em Java na Listagem 6.
Listagem 6 - Implementação em Java da hierarquia da classe BrinquedoConsiderando o método mover() de cada classe filha, como poderíamos chamar o método mover() do brinquedo (classe) correto? Ou seja, como o ControleRemoto saberá que método mover ele deve chamar se ele tem disponível três tipos de mover diferentes (um para cada brinquedo)?
Vamos ver inicialmente como fica a implementação do Controle Remoto na Listagem 7.
Listagem 7 - Classe ControleRemotoVocê lembra que na primeira vez que apresentamos esse exemplo dissemos que a única restrição para um controle remoto tão versátil seria que “quando criado o controle remoto, ele receberia o tipo de brinquedo que iria acionar em um dado instante”? Pois é, é aí que está o segredo para o controle remoto saber qual deve ser o método mover() que ele deve chamar (CORRER, NAVEGAR ou VOAR). O método construtor da classe ControleRemoto exige que o controle para ser inicializado receba um parâmetro do tipoBrinquedo. E isso acontece quando o atributo brinquedo do ControleRemoto recebe “b” (um objeto do tipo Brinquedo).
Então, quando o método mover() da classe ControleRemoto for acionado (isso significa dizer que o botão mover foi apertado), esse faz com que seu atributo brinquedo chame o método mover()correto, dependendo do tipo de Brinquedo que recebeu quando foi instanciado.
A Listagem 8 mostra como fica a classe Principal que instancia um objeto controleRemoto e um objeto carro para ser controlado automaticamente.
Listagem 8 - Classe Principal com o método mainObserve que criamos um brinquedo do tipo Carro, e quando criamos o ControleRemoto, enviamos esse objeto carro para o objeto controleRemoto através da chamada ao seu construtor. Assim, quando acionado o comando controleRemoto.mover(), será chamado o método mover() do carro.
O resultado será a impressão da palavra:
CORRER
Versão 5.3 - Todos os Direitos reservados