import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class Isik extends Isikukood{ String eesnimi; String perekonnanimi; //List lapsed=new ArrayList(); Set lapsed=new HashSet(); public Isik(String eesnimi, String perekonnanimi, String isikukood){ super(isikukood); //esimene konstruktori käsklus, kutsub välja ülemklassi konstruktori this.eesnimi=eesnimi; this.perekonnanimi=perekonnanimi; } public String toString(){ return eesnimi+" "+perekonnanimi+", "+super.toString(); } public void lisaLaps(Isikukood laps){ if(kasJareltulija(laps)){throw new RuntimeException("Juba järeltulijana kirjas");} if(laps instanceof Isik && ((Isik)laps).kasJareltulija(this)){ throw new RuntimeException(laps + " juba eellane");} lapsed.add(laps); } public int lasteArv(){ return lapsed.size(); } public int jareltulijateArv(){ int summa=lasteArv(); for(Isikukood ik: lapsed){ if(ik instanceof Isik){ Isik laps=(Isik)ik; summa+=laps.jareltulijateArv(); } } return summa; } public boolean kasLaps(Isikukood ik){ return lapsed.contains(ik); } public boolean kasJareltulija(Isikukood ik){ if(kasLaps(ik)){return true;} for(Isikukood uuritav:lapsed){ if(uuritav instanceof Isik){ Isik uuritavIsik=(Isik)uuritav; if(uuritavIsik.kasJareltulija(ik)){return true;} } } return false; //Katsetage, kas töötab õigesti } }