Ciao a tutti, riguardo questo esercizio java la cui traccia è:
Esclusi il secondo e l'ultimo punto che ho già svolto, ho alcune domande sui rimanenti 3 punti. Riguardo il primo per poter ordinare la lista rispetto al cognome dovrei implementare l'interfaccia Comparable tramite la classe Registrazione? Sovrascriverei il metodo compareTo(Registrazione r) in questo modo:
Premetto che la classe Registrazione è astratta e la estendono 2 classi: Studente e Professionista. Immagino che dovrei implementare l'interfaccia tramite la superclasse e in automatico le sottoclassi ereditano il metodo compareTo(?).
Riguardo il 3 e il 4 punto diciamo che sono un po la stessa cosa, riuscendo a fare il 3 farei automaticamente anche il 4. Il dubbio è il seguente: come faccio a capire da una lista di Registrazione quali appartengono a Studente e quali a Professionista? Ho tentato di risolvere comparando banalmente il nome della classe, ovvero:
(Il substring lo uso perche le classi si trovano in un package e quindi elimino la parte "package.NomeClasse").. Immagino sia sbagliato un procedimento del genere, almeno da un punto di vista di riusabilità del codice. Come potrei quindi fare? Grazie in anticipo
Esclusi il secondo e l'ultimo punto che ho già svolto, ho alcune domande sui rimanenti 3 punti. Riguardo il primo per poter ordinare la lista rispetto al cognome dovrei implementare l'interfaccia Comparable tramite la classe Registrazione? Sovrascriverei il metodo compareTo(Registrazione r) in questo modo:
Java:
public int compareTo(Registrazione r){
return this.cognome.compareTo(r.getCognome());
}
Riguardo il 3 e il 4 punto diciamo che sono un po la stessa cosa, riuscendo a fare il 3 farei automaticamente anche il 4. Il dubbio è il seguente: come faccio a capire da una lista di Registrazione quali appartengono a Studente e quali a Professionista? Ho tentato di risolvere comparando banalmente il nome della classe, ovvero:
Java:
public ArrayList<Registrazione> dammiRegistrazionePerTipoPartecipante(int x){
ArrayList<Registrazione> ritorno=new ArrayList<>();
if(x==0) {
for(Registrazione r:registrazioni) {
if(r.getClass().getName().substring(12).equals("Studente"))
ritorno.add(r);
}
}else if(x==1) {
for(Registrazione r:registrazioni) {
if(r.getClass().getName().substring(12).equals("Professionista"))
ritorno.add(r);
}
}else {
throw new InvalidParameterException();
}
return ritorno;
}