Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

© Jukka Harju, 2005 Javan util -pakkaus •Javan util -pakkaus sisältää monia hyödyllisiä luokkia ja rajapintoja. –Kaikki ao luokat ovat pakkauksessa java.util.

Samankaltaiset esitykset


Esitys aiheesta: "© Jukka Harju, 2005 Javan util -pakkaus •Javan util -pakkaus sisältää monia hyödyllisiä luokkia ja rajapintoja. –Kaikki ao luokat ovat pakkauksessa java.util."— Esityksen transkriptio:

1 © Jukka Harju, 2005 Javan util -pakkaus •Javan util -pakkaus sisältää monia hyödyllisiä luokkia ja rajapintoja. –Kaikki ao luokat ovat pakkauksessa java.util •ArrayList -luokka •Iterator -rajapinta •Hashtable -luokka •Properties -luokka •Calendar -luokka –Näistä käsitellään tarkemmin tänään ArrayList - luokkaa ja Iterator -rajapintaa. –Lisäksi ekstrana Calendar -luokan käyttöesimerkki.

2 © Jukka Harju, 2005 Arraylist –luokka •Luokka java.util.ArrayList –Javan luokka ArrayList on linkitetyn listan eräs toteutus. –Periytyy luokasta AbstractList, jolla on kaksi muutakin aliluokkaa. •Tärkeimpiä metodeja: –add (ylikuormitettu)lisää elementin listaan –clear tyhjentää listan –contains tutkii löytyykö etsittävä elementti listasta –get palauttaa elementin halutusta positiosta –isEmpty tutkii onko lista tyhjä –remove (ylikuormitettu) p oistaa elementin halutusta positiosta tai halutun elementin –set korvaa halutussa positiossa sijaitsevan elementin –size palauttaa listan elementtien lukumäärän

3 © Jukka Harju, 2005 Iterator -rajapinta •Iteraattori on olio, jonka avulla voidaan läpikäydä kokoelma (esim. ArrayList -olio). •Iteraattorille on käytettävissä metodit: –hasNext palauttaa arvon true, mikäli kokoelmassa on vielä elementtejä jäljellä –next palauttaa kokoelman seuraavan elementin –remove poistaa viimeksi palautetun elementin kokoelmasta •ArrayList -luokan oliolle saadaan luotua iteraattori seuraavasti: ArrayList lista = new ArrayList(); Iterator iter = lista.iterator(); •ArrayList -luokan iterator -metodi on peritty yliluokalta AbstractList.

4 © Jukka Harju, 2005 package fi.helia.harju.arrayList; import java.util.ArrayList; import java.util.Iterator; /** * ArrayList-luokan käyttöesimerkki * * @author Jukka Harju * @version 31.10.2005 */ public class ArrayListEsimerkki { private ArrayList lista; /** * Oletusmuodostin */ public ArrayListEsimerkki() { lista = new ArrayList(); } /** * Metodi tulostaa listan sisällön. */ public void tulostaLista() { if (lista.isEmpty()) { System.out.println("Tulostettava lista on tyhjä!"); } else { System.out.println("Tulostettavan listan sisältö:"); Iterator iter = lista.iterator(); while (iter.hasNext()) { System.out.print(iter.next() + " "); } System.out.println(); } } Luokka sijaitsee pakkauksessa fi.helia.harju.arrayList Luokassa käytetään pakkauksessa java.util sijaitsevia luokkia

5 © Jukka Harju, 2005 /** * Metodi lisää listaan String-olion. * * @param lisattavaData Listan viimeiseksi elementiksi lisättävä olio. */ public void lisaa(String lisattavaData) { lista.add(lisattavaData); } /** * Metodi lisää listaan taulukko-olion. * * @param lisattavaData Listan viimeiseksi elementiksi lisättävä olio. */ public void lisaa(String[] lisattavaData) { for (int i = 0; i < lisattavaData.length; i++) { lista.add(lisattavaData[i]); } } /** * Metodi palauttaa listan ensimmäisen solmun sisällön. * * @return Listan ensimmäisen solmun sisältämä olio. */ public Object haeEnsimmainen() { return lista.get(0); } /** * Metodi palauttaa listan viimeisen solmun sisällön. * * @return Listan viimeisen solmun sisältämä olio. */ public Object haeViimeinen() { return lista.get(lista.size()-1); }

6 © Jukka Harju, 2005 /** * Metodi etsii ja tulostaa halutun olion sijainnin listalla. * * @param etsittava Listasta etsittävä olio. */ public void etsi(Object etsittava) { int indeksi = lista.indexOf(etsittava); if (indeksi >= 0) { System.out.println( "Etsimäsi solmu " + etsittava + " sijaitsee listan positiossa " + indeksi + "."); } else { System.out.println( "Lista ei sisällä etsimääsi solmua " + etsittava + "."); } } /** * Metodi poistaa listasta olion. * * @param poistettava Listasta poistettava olio. */ public void poista(Object poistettava) { lista.remove(poistettava); } }

7 © Jukka Harju, 2005 package fi.helia.harju.arrayList; public class ArrayListTesti{ public static void main(String[] args) { ArrayListTesti testaaja = new ArrayListTesti(); testaaja.testaa(); } /** * Metodi sisältää varsinaisen testikoodin. */ public void testaa(){ // luodaan uusi lista ja tulostetaan sen sisältö ArrayListEsimerkki esim = new ArrayListEsimerkki(); esim.tulostaLista(); // lisätään listaan yksittäinen solmu esim.lisaa("Seppo"); esim.tulostaLista(); //lisätään listaan taulukon tiedot (2 solmua) String[] taulukko = {"Matti", "Teppo"}; esim.lisaa(taulukko); esim.tulostaLista(); //tulostetaan ensimmäisen solmun sisältö System.out.println("\nEnsimmäinen solmu:"+esim.haeEnsimmainen()); //tulostetaan viimeisen solmun sisältö System.out.println("\nViimeinen solmu:"+esim.haeViimeinen()); //etsitään solmuja esim.etsi("Jaakko"); esim.etsi("Seppo"); esim.poista("Seppo"); System.out.println("Poistettiin solmu 'Seppo'"); esim.etsi("Seppo"); } }

8 © Jukka Harju, 2005 Esimerkin pakettihierarkia •Edellisen esimerkin koodit olivat paketissa fi.helia.harju.arrayList. •Käyttöjärjestelmässä hierarkia näkyy seuraavasti: •Suoraan javac-komentoa käytettäessä täytyy komento antaa paketteja käytettäessä hierarkian ylätasolla: M:\ict02d_luennot\utilEsimerkit>javac fi\helia\harju\arrayList\*.java •IDE-ympäristöt kuten Eclipse huolehtivat pakettihierarkiasta automaattisesti.

9 © Jukka Harju, 2005 Javadoc •Javadocilla saadaan kätevästi muodostettua html- muotoinen dokumentaatio oman ohjelman luokista. •Edellinen esimerkki oli kommentoitu javadocin mukaisesti: –kommentit aloitetaan /** -merkinnällä –jokaisen kommenttirivin alussa * –kommentit lopetetaan */ -merkinnällä –ohjelman alussa seuraavat kommentit •kuvaus: mikä ohjelma on kyseessä •tekijä @author -tagin jälkeen •versio / pvm @version -tagin jälkeen –metodia edeltävät seuraavat kommentit •kuvaus: mikä metodi on kyseessä •parametrien kuvaukset @param -tagilla •paluuarvon kuvaus @return- tagilla

10 © Jukka Harju, 2005 Javadoc •Javadocin kotisivu Webissä: –http://java.sun.com/j2se/javadoc/http://java.sun.com/j2se/javadoc/ •Javadoc-kommenttien kirjoitusohjeet: –http://java.sun.com/j2se/javadoc/writingdoccomments/http://java.sun.com/j2se/javadoc/writingdoccomments/ •Ajetaan edellisen esimerkin koodeista Javadoc- tiedostot ja katsotaan miltä lopputulos näyttää.

11 © Jukka Harju, 2005 Javadocin generointi pakkauksen fi kaikista alipakkauksista. Haluttaessa voidaan javadocille antaa optiolla –d kohdekansio, johon dokumentaatio generoidaan. M:\ict02d_luennot\utilEsimerkit>javadoc -version -author -sourcepath.\ -subpackages fi Loading source files for package fi.helia.harju.ArrayList... Constructing Javadoc information... Standard Doclet version 1.4.2_04 Generating constant-values.html... Building tree for all the packages and classes... Building index for all the packages and classes... Generating overview-tree.html... Generating index-all.html... Generating deprecated-list.html... Building index for all classes... Generating allclasses-frame.html... Generating allclasses-noframe.html... Generating index.html... Generating packages.html... Generating fi\helia\harju\ArrayList\package-frame.html... Generating fi\helia\harju\ArrayList\package-summary.html... Generating fi\helia\harju\ArrayList\package-tree.html... Generating fi\helia\harju\ArrayList\ArrayListEsimerkki.html... Generating fi\helia\harju\ArrayList\ArrayListTesti.html... Generating package-list... Generating help-doc.html... Generating stylesheet.css... M:\ict02d_luennot\utilEsimerkit>

12 © Jukka Harju, 2005 Javadoc •Dokumentaatio aukeaa syntyneestä index.html-tiedostosta. •Käyttö kuten Java-APIn käyttö.

13 © Jukka Harju, 2005 Calendar -luokka •Calendar -luokka on tarkoitettu päivämäärien käsittelyyn. •Sijaitsee Javan util -pakkauksessa. •Kohtaat Calendar -luokan käyttötarpeen Javassa todennäköisesti heti ensimmäisiä "todellisia" sovelluksia tehdessäsi. •Seuraavassa tutustutaan Calendar -luokan pääpiirteisiin.

14 © Jukka Harju, 2005 Calendar -luokka •Calendar -luokka on abstrakti, ts. siitä ei voida luoda olioita. •Javan util-paketissa on Calendar -luokasta periytetty konkreettinen GregorianCalendar -luokka, josta olio voidaan luoda: GregorianCalendar calendar = new GregorianCalendar(); •Mikäli varaudutaan monimuotoisuuden käyttötarpeeseen: Calendar calendar = new GregorianCalendar(); •Oletusmuodostin alustaa kalenterin alkuajaksi luontihetken.

15 © Jukka Harju, 2005 Calendar -luokka •Kalenterin sisältöön viitataan kenttien avulla, joista yleisimpiä on lueteltu seuraavassa taulukossa. •Kenttien nimet ovat luokkavakioita, ts. Niiden käyttö tapahtuu käyttö luokan nimen kautta. •Esim. Calendar.SECOND Kentän nimiKentän sisältö DATEKuukauden päivän numero. Numerointi alkaa yhdestä. MONTHKuukauden numero. Numerointi alkaa nollasta! YEARVuosiluku. HOUR_OF_DAYTunnit 24-tuntisessa muodossa. MINUTEMinuutit. SECONDSekunnit.

16 © Jukka Harju, 2005 Calendar -luokka •Calendar -luokka sisältää metodit –void set(int field, int value)set –int get(int field)get •Metodeissa arvo field, tarkoittaa em. kentän määrittäviä luokkavakioita. •Yo metodien avulla päästään kenttäkohtaisesti käsittelemään kalenterin sisältöä. •Esim. Calendar kalenteri = new GregorianCalendar(); kalenteri.set(Calendar.DATE, 15);

17 © Jukka Harju, 2005 Calendar -luokka •Calendar -luokka sisältää myös metodin: –void add(int field, int amount)add •add -metodilla voidaan halutun kentän arvoa kasvattaa / vähentää. Muutokset muihin kenttiin tulevat automaattisesti huomioiduiksi. •Esim. –luodaan kalenteri, alkuarvoksi 31.12.2004 Calendar kalenteri = new GregorianCalendar(2004,12-1,31); –kasvatetaan päivää yhdellä kalenteri.add(Calendar.DATE,1); –kasvatuksessa vaihtuu myös vuosi –kalenteri sisältää nyt päiväyksen 1.1.2005

18 © Jukka Harju, 2005 import java.util.Calendar; import java.util.GregorianCalendar; /** * Calendar luokan käyttöesimerkki. * * @author Jukka Harju * @version 8.4.2005 */ public class CalendarEsimerkki { public static void main(String[] args) { CalendarEsimerkki suorittaja = new CalendarEsimerkki(); suorittaja.aja(); } public void aja(){ // luodaan kalenteri oletusmuodostimella --> // kalenterin ajaksi tulee luontihetki Calendar kalenteri = new GregorianCalendar(); tulostaAika(kalenteri); //set-metodilla voidaan asettaa halutun kentän arvo kalenteri.set(Calendar.DATE,30); kalenteri.set(Calendar.MONTH,(4-1)); tulostaAika(kalenteri); //add-metodilla voidaan kasvattaa haluttua kenttää kalenteri.add(Calendar.DATE,1); tulostaAika(kalenteri); //add-metodilla voidaan vähentää haluttua kenttää kalenteri.add(Calendar.DATE,-1); tulostaAika(kalenteri);

19 © Jukka Harju, 2005 //tietokanta-ohjelmoinnissa tarvitaan Timestamp-luokkaa //Calendar-olio saadaan muunnettua Timestamp-olioksi seuraavasti.. java.sql.Timestamp aikaleima = new java.sql.Timestamp(kalenteri.getTimeInMillis()); System.out.println("Aikaleima = "+aikaleima); //..ja Timestamp-olio takaisin Calendar-olioksi seuraavasti Calendar kalenteri2 = new GregorianCalendar(); kalenteri2.setTimeInMillis(aikaleima.getTime()); tulostaAika(kalenteri2); //kalenterin saa "tyhjennettyä" (ajaksi January 1, 1970 00:00:00.000 GMT) //clear-metodilla kalenteri2.clear(); tulostaAika(kalenteri2); } /** * Metodi tulostaa kalenterin sisältämän ajan muodossa * DD.MM.YYYY HH:MI:SS. * * @param kalenteri Tulostettava kalenteri. */ public void tulostaAika(Calendar kalenteri){ String aika = kalenteri.get(Calendar.DATE)+"."+ //huom! kuukausien numerointi alkaa nollasta (kalenteri.get(Calendar.MONTH)+1)+"."+ kalenteri.get(Calendar.YEAR)+" "+ kalenteri.get(Calendar.HOUR_OF_DAY)+":"+ kalenteri.get(Calendar.MINUTE)+":"+ kalenteri.get(Calendar.SECOND); System.out.println("Kalenteri-olion sisältö = "+aika); } }

20 © Jukka Harju, 2005 Lisäesimerkki ArrayListin ja päivämäärän käytöstä •Tehtävä: –Selvitä kaikki kuluvan vuoden ja seuraavan vuoden 13. päivä perjantait. Tulosta löydetyt päiväykset. –Käytä tiedonvälityksessä ArrayList -luokan oliota.

21 © Jukka Harju, 2005 Ratkaisu import java.util.ArrayList; import java.util.Iterator; import java.util.Calendar; import java.util.GregorianCalendar; /** * Tutkitaan milloin sattuu olemaan 13. päivä ja perjantai. * * @author Jukka Harju * @version 8.4.2005 */ public class PaivatArrayListiin { public static void main(String[] args) { PaivatArrayListiin suorittaja = new PaivatArrayListiin(); suorittaja.aja(); } public void aja(){ ArrayList paivalista = new ArrayList(); //tutkitaan ja tulostetaan vuoden 2005 13.päivä perjantait selvitaPaivat(paivalista,2005); System.out.println("Vuoden 2005 13. päivä perjantait:"); tulostaLista(paivalista); //tutkitaan ja tulostetaan vuoden 2004 13.päivä perjantait paivalista.clear(); selvitaPaivat(paivalista,2006); System.out.println("\nVuoden 2006 13. päivä perjantait:"); tulostaLista(paivalista); }

22 © Jukka Harju, 2005 /** * Metodi tallettaa kaikki kuluvan vuoden 13. perjantai * päivät listaan. * * @param talteen Lista johon päivät taltioidaan. * @param vuosi Tutkittava vuosi. */ public void selvitaPaivat(ArrayList talteen, int vuosi){ GregorianCalendar kalenteri = new GregorianCalendar(vuosi,1-1,1); GregorianCalendar loppupvm = new GregorianCalendar(vuosi+1,1-1,1); kalenteri.setFirstDayOfWeek(Calendar.MONDAY); while(kalenteri.equals(loppupvm)==false){ if(kalenteri.get(Calendar.DATE)==13 && kalenteri.get(Calendar.DAY_OF_WEEK)==Calendar.FRIDAY){ GregorianCalendar talletettava = new GregorianCalendar(); talletettava.setTime(kalenteri.getTime()); talteen.add(talletettava); } kalenteri.add(Calendar.DATE,1); } }

23 © Jukka Harju, 2005 /** * Metodi tulostaa listan sisällä olevien GregorianCalendar-olioiden pvm:t. * * @param lista Tulostettava lista. */ public void tulostaLista(ArrayList lista){ Iterator i = lista.iterator(); int x = 1; while(i.hasNext()){ GregorianCalendar kalenteri = (GregorianCalendar) i.next(); String aika = kalenteri.get(Calendar.DATE)+"."+ (kalenteri.get(Calendar.MONTH)+1)+"."+ kalenteri.get(Calendar.YEAR); System.out.println("Listan sisältämä "+x+". päivä:"+aika); x++; } } }


Lataa ppt "© Jukka Harju, 2005 Javan util -pakkaus •Javan util -pakkaus sisältää monia hyödyllisiä luokkia ja rajapintoja. –Kaikki ao luokat ovat pakkauksessa java.util."

Samankaltaiset esitykset


Iklan oleh Google