Estou com dúvida em como fazer a iteração de um conjunto!

Estou aprendendo Java e estou com duvida na iteração, a minha situação é a seguinte:

Tenho uma classe abstrata CorpoCeleste e ela contém um método descrever, além dela eu tenho classes especificas como Cometa e Estrela que também tem o método herdado com mais informações.

Depois de encapsular e ter feito os métodos para cada um o meu programa principal deve “instanciar um conjunto de corpos celestes de todos os tipos especializados e fazer uma iteração neste conjunto (array ou coleção) para imprimir as características de cada instância de corpo celeste.”

Na minha classe Main eu mostrei as características usando o nome com o “.descrever()”, mas queria uma luz de como fazer isso da maneira certa usando a iteração e array, alguém pode me dar uma dica?

Código main:

public class Main {

    public static void main(String[] args) {
        CorpoCeleste Astro1 = new Cometa();
        Astro1.descrever();
        CorpoCeleste Astro2 = new Estrela();
        Astro2.descrever();
        CorpoCeleste Astro3 = new Planeta();
        Astro3.descrever();
    }
}

Casse abstrata:

public abstract class CorpoCeleste{
    protected String Nome;
    protected CorpoCeleste(){
        Nome = "Sem nome ainda";
    }
    protected CorpoCeleste(String nome){
        Nome = nome;
    }
    public String getNome(){
        return Nome;
    }
    public void descrever(){
        System.out.println("Astro: " + Nome);
    }
}

Classe especifica do Cometa:

public class Cometa extends CorpoCeleste{
    public int Massa;
    public int Vel;
    public Cometa(){
        super();
    }
    public Cometa(String Nome){
        super(Nome);
    }
    public int getMassa(){
        return Massa;
    }
    public void setMassa(int Massa){
        this.Massa = Massa;
    }
    public int getVel(){
        return Vel;
    }
    public void setVel(int Vel) {
        this.Vel = Vel;
    }
    @Override
    public void descrever() {
        super.descrever();
        System.out.println("Tipo: Cometa");
        System.out.println("Massa: " + Massa);
        System.out.println("Velocidade: " + Vel);
    }
}

Usando array:

CorpoCeleste[] array = new CorpoCeleste[3]; // tamanho fixo
array[0] = new Cometa();
array[1] = new Estrela();
array[2] = new Planeta();

for (CorpoCeleste corpo : array) {
	corpo.descrever();
}

Usando lista:

List<CorpoCeleste> lista = new ArrayList<>(); // tamanho dinâmico
lista.add(new Cometa());
lista.add(new Estrela());
lista.add(new Planeta());

for (CorpoCeleste corpo : lista) {
	corpo.descrever();
}
1 curtida

Sensacional cara!!! Valeuzão pelos exemplos, tirou todas a minhas dúvidas a respeito de quando usar listas e arrays. :smiley:

1 curtida