domingo, 13 de janeiro de 2013

Programando em Java - parte 13

Polimorfismo

Polimorfismo, é uma palavra de origem grega que siginifica "muitas formas". Em POO polimorfismo é a capacidade de objetos de classes diferentes responderem a mesma mensagem de diferentes maneiras.

Vejamos o seguinte exemplo:
Uma empresa de tecnologia resolveu desenvolver um controle universal que poderá controlar qualquer tipo de aparelho eletrônico, cada aparelho atende os comandos especificos definidos por ele. 

Segundo Jun Matsumoto (gerente da empresa) o controle remoto teria vários botões, sendo que todos eles seriam úteis para todos os aparelhos. Assim quando o usuáiro clicasse no botão ligar, todos os aparelhos que estivesse em um raio de 1,5m ligariam. 

Jun ainda acrescenta que cada aparelho se comportará de acordo com a sua função, ou seja, quando solicitamos via controle que os aparelhos liguem cada um ligara de acordo com as suas caracteríscas já que a geladeira liga de uma forma, o forno microondas de outra e assim em diante.
Repare que os aparelhos respondem ao mesmo sinal de formas diferentes, temos aqui um caso de POLIMORFISMO.


Tipos de polimorfismo

O polimorfismo pode ser classificado de 3 maneiras:
  1. Sobrecarga ( se você ainda não leu de uma paradinha e aproveite para esclarecer suas dúvidas)
  2. Sobreposição ( leia a seção Reecrita de Métodos, aproveite esse momento caso você não tenha lido )
  3. Inclusão
Vamos implementar o código e em seguida explicaremos o conceito de inclusão.

public class Aparelho { public void ligar () { System.out.println ("Ligar aparelho"); } }
public class TV extends Aparelho { public void ligar () { System.out.println ("Ascender tela"); } }
public void Torradeira extends Aparelho { public void ligar () { System.out.println ("Ascender luz on"); } }
public void Microondas extends Aparelho { public void ligar () { System.out.println ("Piscar luz de ativo"); } }
public class Controle { private Aparelho aparelho; public Controle (Aparelho aparelho) { this.aparelho = aparelho; } public void ligar () { aparelho.ligar (); } }
public class Principal { public static void main (String[] args) { Tv tv = new Tv ()/ Controle controle = new Controle (tv); controle.ligar (); } }

Polimorfismo de inclusão usa a capacidade de substituição da Herança, de uma classe mãe por qualquer classe descendente, para permitir um comportamento polimórfico nos métodos que usam a classe mãe.
No exemplo visto a cima,veja a classe Principal,  onde criamos um objeto do tipo TV e outro do tipo Controle, nós utilizamos o comportamento polimórfico do polimorfismo de inclusão. Fizemos isso quando substituímos a classe Aparelho (mãe) pela classe TV (filha) dentro da classe Controle. Assim, o atributo interno do tipo Aparelho da classe Controle pode receber qualquer objeto que seja de uma classe filha de Aparelho.

Nenhum comentário:

Postar um comentário

Novidade!!! Agora vamos ter canal no Youtube =D

Fala pessoal tudo beleza, estou sumido a correria está forte por aqui. Estou querendo dar um start em um projeto antigo que vem desde o temp...