1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä lista tarkoitetaan sitä, että luokan sisällä on lista. Luokka lisää, poistaa ja muuttaa listan sisältöä. Kun luokasta tehdään olio samalla tehdään myös tyhjä lista. Kun olio tuhoutuu, samalla tuhoutuu myös sen sisällä oleva lista. Esimerkiksi Tili-luokan sisällä on lista Tilitapahtuma-luokan olioita Tili-luokan muodostin voi lisätä Tilitapahtuma-luokan olio listaan otto ja pano lisää Tilitapahtuma-luokan olion listaan Tili-luokasta listaa käsitellään List-luokan metodeilla. Listan sisässä olevaa Tilitapahtuma-luokan oliota käsitellään Tilitapahtuma-luokan metodeilla. 2
2 public class Tili { private String ; private double ; Listan sisältävä luokka Tili-luokassa on lista Tilitapahtumaluokan olioita listan alustaminen private List<Tilitapahtuma> = new ArrayList <Tilitapahtuma>(); Esimerkki Tili-luokan oliosta, kun listaan on laitettu tapahtumia eli tilille on tullut tapahtumia Fi65123 4 200.0 300-100 3 import java.util.arraylist; import java.util.list; Konstruktorit public class Tili { Luodaan ja alustetaan lista private List<Tilitapahtuma> = new ArrayList <Tilitapahtuma>(); public Tili() { Listalle ei tehdä mitään, koska ei ole tapahtumaa Luodaan Tilitapahtuma-luokan olio Tilitapahtumaluokan parametrillisella konstruktorilla public Tili(String, double ) { Tilitapahtuma tilitapahtuma = new Tilitapahtuma();.add(tilitapahtuma); Lisätään luotu olio listaan List-luokan add-metodilla 4
3 public class Tilitapahtuma { private Date ; private double ; public Tilitapahtuma() { = new Date(); = 0.0; public Tilitapahtuma(double ) { = new Date(); this. = ; // get-, set- ja tostring-metodit puuttuvat tästä kalvosta 5 Parametriton konstruktori ei tee tilitapahtumaa Tili tili = new Tili(); tili 0 Parametrillinen konstruktori tekee tilitapahtuman Tili tili = new Tili("Fi65123", 200.0); tili Fi65123 200.0 200 6
4 get-metodi Luokkaan tehdään metodi listan saamista varten (getxx ). Luokkaan ei tehdä set-metodia, koska koko listaa ei korvata luokassa. public class Tili { private List<Tilitapahtuma> = new ArrayList <Tilitapahtuma>(); public List<Tilitapahtuma> gettilitapahtumat() { return ; palauttaa viitteen listaan Tili tili = new Tili("Fi65123", 200.0); List<Tilitapahtuma> tapahtumalista = tili.gettilitapahtumat(); for (int i=0; i < tapahtumalista.size(); i++) { Tilitapahtuma tilitapah=tapahtumalista.get(i); System.out.println(tilitapah.toString()); listaa käytetään Listluokan metodeilla listasta haettua oliota käsitellään Tilitapahtuma-luokan metodeilla 7 Lista muissa metodeissa luodaan Tilitapahtuma-luokan olio Tilitapahtuma-luokan parametrillisella konstruktorilla public void pano(double ) { = + ; Tilitapahtuma tilitapahtuma = new Tilitapahtuma();.add(tilitapahtuma); lisätään listaan viite luotuun olioon List-luokan add-metodilla public boolean otto(double ) { if ( >= ) { oton vuoksi on negatiivinen = - ; Tilitapahtuma tilitapahtuma = new Tilitapahtuma(-);.add(tilitapahtuma); return true; else { return false; 8
5 Tili tili = new Tili("Fi65123", 200.0); tili.otto(-100); tili Fi65123 100.0 200-100 9 addxx-metodi Luokkaan voidaan koodata metodi, millä luokan sisässä olevaan listaan voidaan laittaa tietoa. public void addtilitapahtuma(tilitapahtuma tilitap) { Tilitapahtuma uusi=new Tilitapahtuma(tilitap.getTapahtumapaiva(), tilitap.getmaara());.add(uusi); tehdään kopio parametrina tulleesta oliosta lisätään metodissa luotu olio (kopio parametrina tulleesta oliosta) luokan sisässä olevaan listaan List-luokan addmetodilla Huom. tätä metodia ei kannattaisi koodata tässä luokassa, koska tilille ei voida tehdä pelkkää tilitapahtumaa 10
6 Yksinkertainen pääohjelma public static void main(string[] args) { Tili tili = new Tili("Fi65123", 200); tili.otto(-100); List<Tilitapahtuma> tapahtumalista = tili.gettilitapahtumat(); for (int i=0; i < tapahtumalista.size(); i++) { Tilitapahtuma tilitapahtuma = tapahtumalista.get(i); System.out.println(tilitapahtuma.toString()); 11 Kertauksena List-luokan metodeja List-luokan metodi Luokka get(int index) boolean add(luokka olio) Luokka remove(int index) boolean remove(luokka olio) int size() Selitys Palautetaan listasta viite indexillä i olevaan olioon. Indeksointi alkaa nollasta (0) Lisätään listan loppuun viite parametrina annettuun olioon. Palauttaa true, jos lisäys onnistui Poistetaan listasta viite indexillä i olevaan olio. Palauttaa poistetun olioon Poistetaan listasta viite parametrina olevaan olioon. Palauttaa true, jos olio poistettiin Palautta listassa olevien viitteiden määrän 12