Ir para o conteúdo
Tim§id€

Polimorfismo

Mensagens Recomendadas

Tim§id€

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


...º(>_<)º...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AJBM

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tim§id€

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


...º(>_<)º...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrotuga

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.

Editado por pedrotuga
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tim§id€

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! :D:thumbsup:


...º(>_<)º...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.