[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Retornando uma 'coisa' (sobre o EP).



Caros colegas, professor e monitor,
 
    Estou com uma dúvida que não sei se conseguirei ser claro. O problema é o seguinte: imaginem uma situação onde quero abrir uma porta. Estou em um 'lugar' onde 'porta' é uma das 'coisas' deste 'lugar'. A minha 'porta' é uma instância de uma classe Porta que extende a classe Coisa. Tenho um método definido para o 'lugar' onde estou, que me devolve esta 'coisa'. No caso, assim:
 
public Coisa pegaCoisa(String nomeCoisa) {
    return (Coisa)coisas.get(nomeCoisa);
}
 
No momento em que irei interpretar o comando do usuário onde ele quis 'abrir' a 'porta', vou procurar na classe 'porta' se ela possui tal método. Encontrando, executo-o. Isto é fácil quando sei que a 'coisa' é uma 'porta'. Porém se eu fizer uma verificação para cada tipo de coisa, o programa ficará enorme. Minha idéia era pegar a Coisa, com a função acima, e tendo ela, verificar se ela possui o método-ação que desejo executar, e se tiver, executá-lo. Aí acontece o grande problema. Para 'mecher' nesta coisa, usaria:
 
Coisa coisa = (Coisa)lugar.pegaCoisa(nomeCoisa);
if(coisa.acoes.containsKey(acao);
coisa.acao();
 
Porém, como esta acao pode estar somente definida para a classe Porta, que extende a classe Coisa, ele nunca vai achar!! =(
 
Como fazer para pegar uma 'Coisa' e 'mecher' nela sabendo que ela é uma 'Porta', por exemplo? Descobrir que Coisa é essa para então conseguir mecher nela corretamente?
 
Se não fui mto claro tento repitir a pergunta.
Desde já agradecido,
Tiago Motta Jorge.