Lista luokan sisällä Luokan sisällä on lista Joukkue-luokka, joka sisältää listän joukkueen pelaajista Pelaaja Joukkueen metodit, jotka käyttävät listaa Ohjelmaluokka
Luokan sisällä on lista Tarkoitta sitä, että luokan attribuuttina on lista ja luokka lisää, poistaa ja muuttaa listan sisältöä Kun luokan olio luodaan, luokan muodostin luo myös listan Kun olio tuhoutuu, tuhoutuu myös lista Esim. Joukkue luokan sisällä on lista pelaajat, joka sisältää joukkueen Pelaaja-oliot Joukkue-luokan muodostin luo pelaajat lista-olion 2
Joukkue-luokka, joka sisältää listan joukkueen pelaajista public class Joukkue { private String nimi; private int perustamisvuosi; private List<Pelaaja> pelaajat; public Joukkue() { nimi = null; perustamisvuosi = 0; pelaajat = new ArrayList<Pelaaja>(); public Joukkue(String nimi, int vuosi){ this.nimi = nimi; perustamisvuosi = vuosi; pelaajat = new ArrayList<Pelaaja>(); 3
Pelaaja public class Pelaaja { private int numero; private String etunimi; private String sukunimi; private String puh; public Pelaaja() { numero = 0; etunimi= sukunimi = null; public Pelaaja(int numero, String etunimi, String sukunimi, String puh) { this.numero = numero; this.etunimi = etunimi; this.sukunimi = sukunimi; this.puh = puh; Pelaaja-luokalla on normaalit get- ja setattribuutti metodit sekä tostring()- metodi. 4
Joukkueen metodit, jotka käyttävät listaa //vaihtaa pelaajan kohdassa i public void setpelaaja ( int i, Pelaaja pelaaja) { if (pelaaja!= null && i >= 0 && i < pelaajat.size()) { pelaajat.set (i, pelaaja); // lisää Pelaajan listan loppuun public void addpelaaja(pelaaja pelaaja){ if (pelaaja!= null) pelaajat.add(pelaaja); // palauttaa pelaajan kohdassa i public Pelaaja getpelaaja (int i) { Pelaaja paluu = null; if (i >= 0 && i < pelaajat.size()) paluu = pelaajat.get(i); return paluu; 5
Joukkueen metodit, jotka käyttävät listaa // poistaa pelaajan kohdasta i public Pelaaja removepelaaja(int i) { Pelaaja pelaaja = null; if ( i >= 0 && i <pelaajat.size()) { pelaaja = pelaajat.remove(i); return pelaaja; 6
Joukkueen metodit, jotka käyttävät listaa // tulostaa joukkueen public String tostring(){ String paluu= "Joukkue: " + nimi + " perustamisvuosi: " + perustamisvuosi; if (pelaajat.isempty() == false) { paluu = paluu + "\npelaajat:"; for (int i = 0;i <pelaajat.size();i++) paluu = paluu + "\n" + pelaajat.get(i).tostring(); return paluu; 7
Ohjelmaluokka public class JoukkueOhjelma { private Scanner input; private Joukkue joukkue; // ohjelma käsittelee yhtä joukkuetta public JoukkueOhjelma() { input = new Scanner(System.in); joukkue = null; public static void main(string[] args) { JoukkueOhjelma ohj = new JoukkueOhjelma(); ohj.aja(); 8
Ohjelmaluokka jatkuu public void aja() { int valinta = -1; do { System.out.println("1) lisää joukkue"); System.out.println("2) lisää joukkueeseen pelaaja"); System.out.println("3) etsi joukkueen pelaaja"); System.out.println("4) poista joukkueen pelaaja"); System.out.println("5) tulosta joukkue"); System.out.println("0) lopeta"); System.out.print("Valitse: "); valinta = input.nextint(); input.nextline(); // tyhjennä syöttöpuskuri switch (valinta) { case 0: break; case 1: lisaajoukkue(); break; case 2: lisaapelaaja(); break; case 3: etsipelaaja(); break; case 4: poistapelaaja(); break; case 5: tulostajoukkue(); while (valinta!= 0); 9
Ohjelmaluokka jatkuu private void lisaajoukkue() { if (joukkue!= null) { System.out.println("olet jo lisännyt joukkueen"); else { String nimi; int vuosi; System.out.print("Anna joukkueen nimi: "); nimi = input.nextline(); System.out.print("Anna joukkueen perustamisvuosi:"); vuosi = input.nextint(); joukkue = new Joukkue(nimi, vuosi); // luo Joukkue-olio 10
Ohjelmaluokka jatkuu private void lisaapelaaja() { int numero; String etu, suku, puh; Pelaaja pelaaja; if (joukkue!= null) { System.out.print("Anna pelaajan numero: "); numero = input.nextint(); pelaaja = etsipelaaja(numero); // etsi pelaaja if (pelaaja == null) { System.out.println("Anna pelaajan etunimi sukunimi: "); etu = input.next(); suku = input.next(); System.out.println("Anna pelaajan puhelinnumero:"); puh = input.next(); pelaaja = new Pelaaja(numero, etu, suku, puh); joukkue.addpelaaja(pelaaja); // vie Pelaaja joukkueeseen else { // pelaaja on jo lisätty System.out.println("Numerolla " + numero + " on jo pelaaja " + pelaaja.tostring()); // tutkii onko annettu pelaajan numero jo varattu else System.out.println("Ei joukkuetta ei pelaajaa!"); 11
Ohjelmaluokka jatkuu // etsii pelaajan, jonka numero on sama kuin parametrin nro arvo private Pelaaja etsipelaaja(int nro) { Pelaaja pelaaja = null, paluu = null; int i = 0; pelaaja = joukkue.getpelaaja(i); while (pelaaja!= null) { if (nro == pelaaja.getnumero()) { paluu = pelaaja; break; // ulos silmukasta i++; pelaaja = joukkue.getpelaaja(i); return paluu; 12
Ohjelmaluokka jatkuu private void etsipelaaja() { String etu, suku; // etsitään pelaajat nimen perusteella Pelaaja pelaaja; int i = 0; if (joukkue!= null) { System.out.print("Anna pelaaja etunimi ja sukunimi: "); etu = input.next(); suku = input.next(); pelaaja = joukkue.getpelaaja(i); while (pelaaja!= null) { if (etu.equalsignorecase(pelaaja.getetunimi()) && suku.equalsignorecase(pelaaja.getsukunimi())) { System.out.println(pelaaja.toString()); i++; pelaaja = joukkue.getpelaaja(i); 13
Ohjelmaluokka jatkuu private void poistapelaaja() { int nro; Pelaaja pelaaja; int i = 0; if (joukkue!= null) { System.out.print("Anna pelaajan numero: "); nro = input.nextint(); pelaaja = joukkue.getpelaaja(i); // etsi pelaaja while (pelaaja!= null && pelaaja.getnumero()!= nro) { i++; pelaaja = joukkue.getpelaaja(i); if (pelaaja!= null){ // pelaaja löytyi pelaaja = joukkue.removepelaaja(i); // pyytä poistettavan Pelaajan numeron, etsii sen ja poistaa System.out.println("poistetaan pelaaja " + pelaaja.tostring()); 14
Ohjelmaluokka jatkuu private void tulostajoukkue() { if (joukkue!= null) System.out.println(joukkue); 15