Exemplos práticos de Polimorfismo

Olá a todos.

Estava estudando OO, e o autor do livro que lia citou como exemplo de Polimorfismo uma sub-classe Conta Especial com um método Saque, redefinido para esta classe, uma vez que quem tem uma conta especial tem um limite, e pode sacar mesmo quando não tem saldo (vai nessa…).

Gostaria de pedir a cada um que me desse outros exemplos práticos de Polimorfismo, para enriquecer meus estudos.

Aquele abraço,

Paulo Cassiano.

Classe pai: Motor
Classes-filha: MotorGasolina, MotorEletrico

A classe Motor define o método ligar(). Porém a implementação de ligar() em cada um dos motores (gasolina e elétrico) é diferente.

Boa noite danieldestro…
Eu li o seu exemplo de polimorfismo e estou fazendo um trabalho de conclusão de curso desenvolvendo em linguagem Java…
o meu trabalho consiste em comunicar um motor elétrico com a linguagem Java…

Por exemplo: eu tenho um motor ligado a uma placa que está ligada a um computador. Este computador possui um software que tem um botão liga e um botão desliga. como faço para programar estes botões através do Java para ligar/desligar este motor?
Agradeço a sua atenção.

Abraço

Acho que aquilo só foi um exemplo de Polimorfismo, não algo prático mesmo.
Você pode buscar por alguma engine que já exista pra esse “tipo” de motor (tipo um framework ou algo do tipo) ou pesquisar sobre JNI e fazer a comunicação pelas portas paralelas.

Bom dia Andre…
Eu agradeço a sua dica vou tentar pesquisar algo do gênero…
Eu preciso de algumas referencias para poder começar meu trabalho e agradeço muito a sua ajuda!
Abraço

oi

tem um artigo que explica bem

uma vez eu discuti isso aqui no forum tb

se utilizar a busca vai encontrar mais topicos discutindo…

Bom dia André Agradeço sua ajuda!

Abraço

http://www.antiifcampaign.com/articles/the-simplest-anti-if-code.html

Boa tarde pessoal

estou tendo um problema com cast:

aluguel aluTemp = new aluguel();
qua = (quarto) aluTemp;

Obs: classe quarto extends aluguel

Alguem sabe?

O exemplo mais claro que ja vi até hoje para iniciantes.

Pizzaria Polimórfica

então, mas está dando erro não faço ideia o porque

E o que seria qua? poste o código completo.Aluguel aluTemp = new Aluguel(); Quarto quarto = (Quarto) aluTemp;Se Quarto extends Aluguel, isso deve funcionar.

verdade não especifiquei

  1. aluguel aluTemp = new aluguel();
  2. quarto qua = new quarto();
  3. qua = (quarto) aluTemp;

ele compila, mas da erro de cast na linha 3

Ah sim, todo Quarto é um Aluguel, mas nem todo Aluguel é um Quarto. Um cast desse não irá funcionar, apesar de compilar. se fosse:Aluguel aluTemp = new Quarto(); Quarto qua = new Quarto(); qua = (Quarto) aluTemp; aí sim funcionaria

nem assim esta funcionando, ve fica mais claro:

Obs: dentro do main

[code] private static aluguel recebeDados(){
aluguel alu = new aluguel();
alu.setNumeroQuarto(Integer.parseInt(JOptionPane.showInputDialog(null, “Número do quarto :\n1-25: Quartos com banheira\n26-50: Quartos sem banheira\n 51-60: Chalés”)));
if(alu.getNumeroQuarto() >= 1 && alu.getNumeroQuarto() <= 60){
alu.setLocatario(JOptionPane.showInputDialog(null, "Nome do locatario: "));
alu.setDiaEntrada(Integer.parseInt(JOptionPane.showInputDialog(null, "Dia de entrada: ")));
alu.setMesEntrada(Integer.parseInt(JOptionPane.showInputDialog(null, "Mes de entrada: ")));
alu.setAnoEntrada(Integer.parseInt(JOptionPane.showInputDialog(null, "Ano de entrada: ")));
alu.setHorarioEntrada(JOptionPane.showInputDialog(null, "Horario de entrada: "));
}else{
JOptionPane.showMessageDialog(null, “Digite um valor correto”);
}
return alu;
}

  aluguel aluTemp = new aluguel();
  aluTemp = recebeDados();
  qua = (quarto) aluTemp;[/code]

cara, você não pode fazer um cast de um objeto Aluguel para Quarto, sendo que ele não é um Quarto.

Na apostila fj11 da caelum tem um exemplo bem didático de uma classe abstrata Funcionário e as classes filhas, gerente, diretor, estagiário, etc…

[quote]Boa tarde pessoal

estou tendo um problema com cast:

aluguel aluTemp = new aluguel();
qua = (quarto) aluTemp;

Obs: classe quarto extends aluguel

Alguem sabe? [/quote]

Bom pra começar não faz sentido esse extends, já que o quarto não é um aluguel. (ele pode ter um aluguel, nesse caso do ter um
se usa composition).

Outro erro é ter a primeira letra da Classe em minúsculo.

O erro é que vc esta invertendo o extends, no seu caso só funcionária se quarto fosse classe mãe de aluguel.
(O que esta do lado direito de extends é superclasse (classe mãe) e que esta ao lado esquerdo subclasse/classe filha
Na verdade o que vc gostaria de fazer é:

[code]
package br.com.caelum.agenda.teste;

public class TestaConversao {
public static void main(String[] args) {
Animal animal=new Cachorro(); //afinal cachorro é um animal
/E nesse ponto vc diz ao compilador que sabe o que esta fazendo por isso é que o erro ocorre em tempo de execução apenas/
Cachorro c=(Cachorro)animal;

}

}[/code]