Tim§id€ Posted March 29, 2013 at 01:25 AM Report #500772 Posted March 29, 2013 at 01:25 AM Boas pessoal, Ø Crie um método distanciaMaxima que quando for executado num objecto da classe Avião devolva o raio de acção e caso seja utilizado num objecto da classe Carro devolva a distância máxima que pode percorrer tendo em conta a capacidade do deposito e o consumo. Eu tenho 3 Classes: -Veiculo (atributos Marca,Lugares,Consumo) -Carro-extends Veiculo (atributio capacidadeDeposito) -Avião-extends Veiculo no main tenho Veiculo veic2=new Carro("Carro1", 2, 7.5, 50);(onde os atributos são Marca,Lugares,Consumo e o ultimo e da class Carro que é capacidadeDeposito) aqui esta o codigo para distanciaMaxima public double distanciaMaxima(Veiculo tipoDeVeiculo) { if (tipoDeVeiculo.getClass()==Aviao.class) {//sei que é aviao } else//é pq e carro { //Carro devolva a distância máxima que pode percorrer tendo em conta a capacidade do deposito e o consumo. return ( 100*aqui tinha que por tipoDeVeiculo.getCapacidadeDeposto) /tipoDeVeiculo.getConsumoCombustivel() ); } } só que não consigo, será que tenho que fazer de outra maneira? Obrigado ...º(>_<)º...
AJBM Posted March 29, 2013 at 12:50 PM Report #500794 Posted March 29, 2013 at 12:50 PM Boas! tu não tens definido o método getCapacidadeDeposito no veiculo pois não? pelo que percebi está no carro,tenta isto ((Carro)tipoVeiculo).getCapacidadeDeposito
Tim§id€ Posted March 29, 2013 at 03:36 PM Author Report #500828 Posted March 29, 2013 at 03:36 PM Boas! tu não tens definido o método getCapacidadeDeposito no veiculo pois não? pelo que percebi está no carro,tenta isto ((Carro)tipoVeiculo).getCapacidadeDeposito Boas, não, tenho o getCapacidadeDeposito na Class Carro, o atributo da capacidadeDeposito é da Class Carro ...º(>_<)º...
pedrotuga Posted March 29, 2013 at 09:38 PM Report #500872 Posted March 29, 2013 at 09:38 PM (edited) Um problema frequente é não ter bem definido o que se quer fazer antes de nos atirarmos de cabeça ao código. A pergunta, sem dúvida que sugere código como o que tu tens. Se for esse o objectivo, desde já te posso dizer que ele não te vai ensinar a usar o object model em condições. O que fizeste é a solução óbvia que qualquer principiante se lembraria. Um if para ver qual é o tipo. Polimorfismo é, por definição, não precisar de fazer isso. A soluçã para este tipo de problemas está na forma como se utilizam os objectos e não tanto na sua implementação. O que se faz nesta situação é o seguinte: * uma interface 'Veiculo' com um cabeçalo int distanciaMaxima() * implementa essa interface nas classes carro e avião, isto consiste em usar a keyword implements na definição da classe e a implementar todos os métodos declarados na interface, neste caso: distanciaMaxima() class Carro implements Veiculo{ int distanciaMaxima(); } depois instancia-as da seguinte forma: Veiculo meyCarro = new Carro(); Veiculo meyAviao = new Aviao(); depois quando quiseres chamar o método, a implementação correspondente é utilizada. Tão simples quanto isso. Edited March 29, 2013 at 09:39 PM by pedrotuga 1 Report
Tim§id€ Posted March 31, 2013 at 12:42 PM Author Report #500998 Posted March 31, 2013 at 12:42 PM Um problema frequente é não ter bem definido o que se quer fazer antes de nos atirarmos de cabeça ao código. A pergunta, sem dúvida que sugere código como o que tu tens. Se for esse o objectivo, desde já te posso dizer que ele não te vai ensinar a usar o object model em condições. O que fizeste é a solução óbvia que qualquer principiante se lembraria. Um if para ver qual é o tipo. Polimorfismo é, por definição, não precisar de fazer isso. A soluçã para este tipo de problemas está na forma como se utilizam os objectos e não tanto na sua implementação. O que se faz nesta situação é o seguinte: * uma interface 'Veiculo' com um cabeçalo int distanciaMaxima() * implementa essa interface nas classes carro e avião, isto consiste em usar a keyword implements na definição da classe e a implementar todos os métodos declarados na interface, neste caso: distanciaMaxima() class Carro implements Veiculo{ int distanciaMaxima(); } depois instancia-as da seguinte forma: Veiculo meyCarro = new Carro(); Veiculo meyAviao = new Aviao(); depois quando quiseres chamar o método, a implementação correspondente é utilizada. Tão simples quanto isso. Boas, pedrotuga Obrigado pela ajuda! 😄👍 ...º(>_<)º...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now