Não, ele esta criando um espaço onde cabem 10 animais, uma array serve para guardar animais, e o axericio pede para usar arrays…
[code]public class Zoologico {
private Animal[] jaulas = new Animal[10]; //aki são 10 jaulas ^^
public void setJaula(int jaulaNumero, Animal animal) {
jaulas[jaulaNumero-1] = animal; //aqui vc esta guardando o animal dentro da jaulaNumero
//arrays vão de 0 ate seu tamanho -1, por isso se vc referenciar as jaulas de 1 - 10, vc precisa...
//retirar 1, para referenciar a array, pois esta vai de 0 ate 9
}
}[/code]
era + ou - isso que o exercicio pedia… agora vc tem que arrumar 1 forma de fazer os animais emitirem som, e correrem se for possivel
sim é pra criar 10 jaulas, na verdade vc não precisa criar um classe para jaulas, pois estas não tem funcionalidade no seu modelo, portanto vc pode usar uma array (como o exercicio pede) ou uma coleção, para identificar as jaulas…
eu não falei pro método correr fazer parte da super classe ^^ … falei que para a segunda parte do seu exercicio, de fazer correr se possivel, vc vai precisar de Interfaces, que são "contratos" em uma interface vc identifica o comportamente de um objeto, e quando vc assina uma interface, vc esta comunicando a todos, que vc compartilha daquele comportamento…
existem certos comportamentos que independem de Herença, por exemplo, imagina as seguintes decendencias
Pessoa
-> Musico … e que musico tenha a capacidade de "tocar uma musica" playMusic()
Eletronico
-> AparelhoDeSom … e que o aparelho de som, tb possa "tocar uma musica" playMusic()
-> Celular … e que o celular tb possa tocar musica…
agora digamos que em uma sala eu tenha diveras pessoas, entre elas existam músicos, existam aparelhos de som, celulares, entre outras coisas…
Como listar todos os meus objetos ? e se possivel tocar uma musica ??? playMusic() ??
a forma de fazer isso é definindo comportamento, ou seja interface
public interface PlayMusic {
public void playMusic();
}
com isso eu estou falando que, todos que assinam PlayMusic, tem a capcidade de tocar musica, ou seja, impelmentam um método playMusic() …
portanto, como não posso fazer, um Musico, um Aparelho de som e um Celular, descender de um mesmo objeto com capacidade de tocar, eu faço cada um deles assinar a interface PlayMusic, desta forma ficaria assim…
[code]public class Musico extends Pessoa implements PlayMusic {
//… outras coisas que musico possa fazer
public void playMusic() { //<== este método é obrigatorio quando implemento PlayMusic
System.out.println(getName() + " toca seu instrumento"); //supondo que Pessoa tenha um método getName()
}
}[/code]
public class AparelhoDeSom extends Eletronico implements PlayMusic {
public void playMusic() { //<== este método é obrigatorio quando implemento PlayMusic
System.out.println("toca a faixa 1 do CD");
}
}
…
agora sabendo disso… e digamos que eu tenha uma sala com varios objetos e pessoas
Object[] sala = new Object[20];
sala[0] = new Musico();
sala[1] = new Cadeira();
sala[2] = new Bola();
sala[3] = new AparelhoDeSom();
sala[4] = new Celular();
sala[5] = new Advogado();
//... etc etc etc
depois de ter a sala completa eu posso verificar se cada um dos objetos da sala assinam PlayMusic, e se este for o caso, fazer o objeto tocar a musica
[code]for(Object obj : sala) { //leia esse linha como: “Para cada Object de sala, que eu estou chamando de ‘obj’ faça…”
if (obj instanceof PlayMusic) { //leia essa linha como: “Se ‘obj’ for um tocador de musica (PlayMusic) então…”
PlayMusic tocador = (PlayMusic)obj; //aqui, como sei que este objeto é um PlayMusic,
//eu posso convertelo com segurança para um playMusic, através de cast
tocador.playMusic(); //e posso usar esse método, pois PlayMusic tem esse método conforme explicado mais acima
}
}[/code]
…
como comentei, Interface são contratos, e quem assina uma interface, se obriga a implementar cada um dos seus métodos, ou seja, a se comportar como a interface…
Para seu exercicio existem comportamento, que independe do tipo de animal, e são intricicos a uns e não podem vim por herança, comportamentos como Cantar, Correr, Pular não pertecem a todos os objetos, mais podem ser passados via interface…
se ficar duvidas avisa…