Quote Originariamente inviata da el92 Visualizza il messaggio
codice:
import java.util.*;
abstract class Persona1 implements Comparable<Persona1>{
    String nome;
    String cognome;
Se non ci sono motivazioni/necessità ben precise, tieni sempre i campi come 'private'.

Quote Originariamente inviata da el92 Visualizza il messaggio
codice:
Persona1(String nome,String cognome){
    this.nome=nome;
    this.cognome=cognome;
}
Ok

Quote Originariamente inviata da el92 Visualizza il messaggio
codice:
public boolean equals(Persona1 p){
    boolean b=false;
    if((this.nome).equals(p.nome)&&(this.cognome).equals(p.cognome)){
        b=true;
    }
    return b;
}
NO! Il metodo equals deve ricevere un Object .... non un Persona. Quello che hai fatto è un overload ... non un override. Nessuno lo userebbe a meno che sia tu a invocarlo esplicitamente e su un reference di tipo Persona1 (quindi contesto molto limitato).

All'inizio del equals generalmente si testa l'oggetto usando l'operatore instanceof. Se non è del tipo della tua classe, si può ritornare false.

Quote Originariamente inviata da el92 Visualizza il messaggio
codice:
public int compareTo(Persona1 p){
    int x=0;
    int result = this.cognome.compareTo(p.cognome);
    int result1 = this.nome.compareTo(p.nome);
    x=(result<0)?-1:result ==0?0:1;
 
   return x;
}
Non stai usando result1 e comunque è un po' "contorto" (si può scrivere diversamente e in modo più leggibile).


Quote Originariamente inviata da el92 Visualizza il messaggio
codice:
public String toString(){
    String s="il nome della persona è: "+nome+"\n"
    +"il cognome della persona è: "+cognome;
    return s;
}
Ok

Quote Originariamente inviata da el92 Visualizza il messaggio
Il compilatore mi dà un errore sulla classe Genitore di tipo:
at java.lang.StringBuilder.append(StringBuilder.java: 115)
at Genitore.toString(Genitore.java:46)
at java.lang.String.valueOf(String.java:2826)
Che riga è la tua 46? Comunque il toString di Genitore è dubbio, in teoria non dovrebbe nemmeno compilare ... ci sono 2 variabili locali 't'.

Quote Originariamente inviata da el92 Visualizza il messaggio
Secondo voi i metodi che ho scritto sopra sono almento concettualmente corretti?
Sì, perlomeno addFiglio, sortFigli e iterator sono corretti.

Quote Originariamente inviata da el92 Visualizza il messaggio
Poi l'interfaccia iterable, la posso utilizzare all'interno di una classe senza aver implementato l'interfaccia iterator?
Certo, perché stai sfruttando e restituendo il Iterator del ArrayList.