Last active
October 17, 2019 18:36
-
-
Save gustavopinto/b52294f0063833cf8d07d38a13de343b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package polimorfismo; | |
public class BMW implements Carro { | |
public double velocidadeMaxima (){ | |
return 200; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package polimorfismo; | |
public interface Carro { | |
public double velocidadeMaxima(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package polimorfismo; | |
public abstract class Cliente implements Pessoa { | |
private Corrida corrida; | |
private String nome; | |
private boolean emCorrida; | |
public Cliente(String nome) { | |
this.nome = nome; | |
this.emCorrida = false; | |
} | |
public void pedirCorrida(int de, int para) { | |
this.corrida = new Corrida(de, para); | |
this.emCorrida = true; | |
} | |
public double pagarCorrida() { | |
this.emCorrida = false; | |
return corrida.total(); | |
} | |
public String getNome () { | |
return nome; | |
} | |
public boolean emCorrida(){ | |
return emCorrida; | |
} | |
public Corrida getCorrida(){ | |
return corrida; | |
} | |
public abstract void avaliarCorrida(int estrelas); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package polimorfismo; | |
public class ClientePessoaFisica extends Cliente { | |
public ClientePessoaFisica(String nome) { | |
super(nome); | |
} | |
@Override | |
public void avaliarCorrida(int estrelas) { | |
getCorrida().avaliar(estrelas); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package polimorfismo; | |
public class ClientePessoaJuridica extends Cliente { | |
private Corrida corrida; | |
public ClientePessoaJuridica(String nome) { | |
super(nome); | |
} | |
@Override | |
public void pedirCorrida(int de, int para) { | |
this.corrida = new Corrida(de, para); | |
} | |
@Override | |
public double pagarCorrida() { | |
return corrida.total() * 0.8; | |
} | |
@Override | |
public void avaliarCorrida(int estrelas) { | |
this.corrida.avaliar(estrelas); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package polimorfismo; | |
public class Corrida { | |
private int de, para, estrelas; | |
private Motorista motora; | |
public Corrida (int de, int para) { | |
this.de = de; | |
this.para = para; | |
this.estrelas = 0; | |
} | |
public int total() { | |
return de * para; | |
} | |
public void avaliar(int estrelas) { | |
this.estrelas = estrelas; | |
} | |
public int getAvaliacao(){ | |
return estrelas; | |
} | |
public void associarMotorista(Motorista motora) { | |
this.motora = motora; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package polimorfismo; | |
public class Motorista implements Pessoa { | |
private boolean dirigindo; | |
private String nome; | |
private Carro carro; | |
private Corrida corrida; | |
public Motorista(String nome, Carro carro) { | |
this.dirigindo = false; | |
this.carro = carro; | |
} | |
public boolean aceitarCorrida(Corrida corrida) { | |
if(!dirigindo) { | |
dirigindo = true; | |
} | |
this.corrida = corrida; | |
return true; | |
} | |
public void encerrarCorrida() { | |
corrida.associarMotorista(null); | |
} | |
public boolean emCorrida() { | |
return dirigindo; | |
} | |
@Override | |
public String getNome() { | |
return nome; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package polimorfismo; | |
public interface Pessoa { | |
public abstract String getNome(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment