Neviem si dať rady s jednou časťou programu. Takže:
- mám triedy Ziak, Kontakty, Adresa, DatumNarodenia a Zoznam
- pri vytváraní inštancie triedy Ziak treba vytvoriť inštanciu triedy Kontakty
- pri vytváraní inštancie triedy Kontakty treba vytvoriť inštanciu triedy Adresa a DatumNarodenia
- mám triedu Zoznam obsahujúcu ArrayList typu Ziak
- v tejto triede chcem mať metódu, ktorá vypíše cez príkaz for each údaje všetkých žiakov. A tu nastáva problém!
Z nasledujúcich zdrojákov som naschvál vyhodil settery.
Trieda Ziak:
Kód: Vybrať všetko
public class Ziak
{
public static String meno;
public static String priezvisko;
public static Kontakty kontakty;
public Ziak(String meno,String priezvisko,Kontakty kontakty)
{
this.meno=meno;
this.priezvisko=priezvisko;
this.kontakty=kontakty;
}
public String getMenoZiaka()
{
return meno;
}
public String getPriezviskoZiaka()
{
return priezvisko;
}
public Kontakty getKontakty()
{
return kontakty;
}
public void printVytlac()
{
System.out.println("********Osobne udaje ziaka********");
System.out.println("Meno: "+meno);
System.out.println("Priezvisko: "+priezvisko);
System.out.println("Narodeny/a: "+DatumNarodenia.den+"."+DatumNarodenia.mesiac+"."+DatumNarodenia.rok);
System.out.println("Ulica: "+Adresa.ulica);
System.out.println("Cislo domu/bytu: "+Adresa.cisloDomu);
System.out.println("PSC: "+Adresa.PSC);
System.out.println("Mesto: "+Adresa.mesto);
}
}
Kód: Vybrať všetko
public class Kontakty
{
public static String telefon;
public static DatumNarodenia datumNarodenia;
public static Adresa adresa;
public Kontakty(String telefon,Adresa adresa,DatumNarodenia datumNarodenia)
{
this.telefon=telefon;
this.adresa=adresa;
this.datumNarodenia=datumNarodenia;
}
public String getTelefon()
{
return telefon;
}
public Adresa getAdresa()
{
return adresa;
}
public DatumNarodenia getDatumNarodenia()
{
return datumNarodenia;
}
}
Kód: Vybrať všetko
public class Adresa
{
public static String ulica;
public static int cisloDomu;
public static String mesto;
public static String PSC;
public Adresa(String ulica,int cisloDomu,String mesto,String PSC)
{
this.ulica=ulica;
this.cisloDomu=cisloDomu;
this.PSC=PSC;
this.mesto=mesto;
}
public String getNazovUlice()
{
return ulica;
}
public int getCisloDomu()
{
return cisloDomu;
}
public String getPSC()
{
return PSC;
}
public String getMesto()
{
return mesto;
}
public String toString()
{
return this.ulica+" "+this.cisloDomu+" "+this.PSC+" "+this.mesto;
}
}
Kód: Vybrať všetko
public class DatumNarodenia
{
public static int den;
public static int mesiac;
public static int rok;
public DatumNarodenia(int den,int mesiac,int rok)
{
this.den=den;
this.mesiac=mesiac;
this.rok=rok;
}
public int getDenNarodenia()
{
return den;
}
public int getMesiacNarodenia()
{
return mesiac;
}
public int getRokNarodenia()
{
return rok;
}
public String toString()
{
return this.den+"."+this.mesiac+"."+this.rok;
}
}
Kód: Vybrať všetko
import java.util.*;
class Zoznam
{
private ArrayList<Ziak> ziak = new ArrayList<Ziak>();
public void pridajZiaka(Ziak z)
{
ziak.add(z);
}
public void vytlacVsetkych()
{
for(Ziak z : ziak)
System.out.println("***********************");
System.out.println(""+Ziak.meno+" "+Ziak.priezvisko);
System.out.println(""+DatumNarodenia.den+"."+DatumNarodenia.mesiac+"."+DatumNarodenia.rok);
System.out.println(""+Adresa.ulica+" "+Adresa.cisloDomu+" "+Adresa.PSC+" "+Adresa.mesto);
System.out.println("***********************");
}
}
- meno a priezvisko
- dátum narodenia
- adresa
Napr.
jozko mrkvicka
11.11.2000
podmostova 4 90999 bratislava
Problém je ale v tom, že keď vytvorím novú inštanciu triedy Ziak, a potom použijem metódu pridajZiaka triedy Zoznam, tak potom keď dám vytlačiť všetkých žiakov (pomocou metódy vytlacVsetych()) tak mi vypíše iba poslednú vytvorenú inštanciu. A keď vytvorím zas ďalšiu inštanciu triedy Ziak a pridám ju do Zoznam-u, tak Zoznam vypíše opäť len posledného pridaného žiaka. Dúfam že ste pochopili pointu môjho problému.
Takže čo s tým?