Luokkien ja olioiden kyttminen Jukka Juslin Jukka Juslin

  • Slides: 44
Download presentation
Luokkien ja olioiden käyttäminen Jukka Juslin © Jukka Juslin 2006

Luokkien ja olioiden käyttäminen Jukka Juslin © Jukka Juslin 2006

Luokkien ja olioiden käyttäminen • Voimme luoda mielenkiintoisia ohjelmia käyttämällä Java API: sta jo

Luokkien ja olioiden käyttäminen • Voimme luoda mielenkiintoisia ohjelmia käyttämällä Java API: sta jo löytyviä luokkia ja tekemällä niistä olioita • Seuraavassa tutustumme näihin: § § § Olion luonti ja olioon viittaaminen String luokasta lisää ja sen metodeista Javan standardi luokkakirjasto Random ja Math luokat Wrapper luokat © Jukka Juslin 2006 2

Missä ollaan? Olioiden luonti String luokka Paketit Wrapper luokat © Jukka Juslin 2006 3

Missä ollaan? Olioiden luonti String luokka Paketit Wrapper luokat © Jukka Juslin 2006 3

Olioiden luonti • Muuttuja pitää sisällään joko primitiivityyppiä tai viittausta olioon • Luokan nimeä

Olioiden luonti • Muuttuja pitää sisällään joko primitiivityyppiä tai viittausta olioon • Luokan nimeä voidaan käyttää tyyppinä kun tehdään tietyn luokan tyyppinen attribuutti String nimi; • Tämä lauseke ei luo oliota • Olion viittausmuuttuja sisältää osoitteenolioon • Olio itse on luotava erikseen (kun sellainen halutaan luoda) © Jukka Juslin 2006 4

Olioiden luonti • Yleisesti käytämme new operaattoria olioden luomiseen nimi = new String (“Jukan

Olioiden luonti • Yleisesti käytämme new operaattoria olioden luomiseen nimi = new String (“Jukan Java. Kirja”); Tämä kutsuu Stringin muodostinta (konstruktoria, constructor), joka on metodi, joka luo olion annetuilla arvoilla • Olion luontia kutsutaan instantioinniksi • Olio on tietyn luokan instanssi © Jukka Juslin 2006 5

Oletusmuodostimista eli konstruktoreista (constructors) • Seuraavassa on esimerkki luokasta, jolla on oletuskonstruktori: public class

Oletusmuodostimista eli konstruktoreista (constructors) • Seuraavassa on esimerkki luokasta, jolla on oletuskonstruktori: public class Jukan. Intti. Taulukko { private int elementti. Maara; private int taulukko[] = new int[25]; public Jukan. Intti. Taulukko() { elementti. Maara = 25; } … } © Jukka Juslin 2006 6

Oletuskonstruktoreista • Kun uusi String-luokan olio luotiin kaksi kalvoa sitten, silloin tultiin new-avainsanan myötä

Oletuskonstruktoreista • Kun uusi String-luokan olio luotiin kaksi kalvoa sitten, silloin tultiin new-avainsanan myötä kutsuneeksi Stringluokan konstruktoria • Konstruktori on erityinen metodi, jolla ei ole palautustyyppiä (ei edes void, eli ei mitään) § Jos konstruktorille erehtyy laittamaan palautustyypin konstruktori käyttäytyy kuten metodi, esimerkiksi jos olisi olemassa Math(luku) metodi, jonka oli tarkoitus olla konstruktori © Jukka Juslin 2006 7

UML luokkakaavioista • Jukan. Intti. Taulukko-luokalle UML luokkakaavio näyttäisi seuraavalta: Miinusmerkki tarkoittaa private näkyvyyttä!

UML luokkakaavioista • Jukan. Intti. Taulukko-luokalle UML luokkakaavio näyttäisi seuraavalta: Miinusmerkki tarkoittaa private näkyvyyttä! Luokan nimet Attribuutit Palautustyypit (void eli ei mitään) Plusmerkki tarkoittaa public näkyvyyttä! Set-void: SEVO sääntö koostumussuhde Riippuvuus © Jukka Juslin 2006 Metodit 8

Jukan. Intti. Taulukon lähdekoodi • Jukan. Intti. Taulukon lähdekoodiin ja sen testaamiseen käytetyt luokat

Jukan. Intti. Taulukon lähdekoodi • Jukan. Intti. Taulukon lähdekoodiin ja sen testaamiseen käytetyt luokat voit ladata tästä hakemistosta: § http: //myy. helia. fi/~ict 02 d/luennot/Koodit/Jukan. Intti. Taulukko. java § http: //myy. helia. fi/~ict 02 d/luennot/Koodit/Taulukko. Testeri. java § http: //myy. helia. fi/~ict 02 d/luennot/Koodit/Pvm. java © Jukka Juslin 2006 9

Luokkakaavion merkityksestä • Luokkakaavio on hyödyllinen väline kuvattaessa esimerkiksi Java-ohjelmien ns. staattista eli ”pysähtynyttä”

Luokkakaavion merkityksestä • Luokkakaavio on hyödyllinen väline kuvattaessa esimerkiksi Java-ohjelmien ns. staattista eli ”pysähtynyttä” rakennekuvaa – luokkakaavio ei siis kuvaa ohjelman dynaamista toimintaa § Luokkakaavio mahdollistaa ohjelman helpomman hahmottamisen graafisen esitystapansa vuoksi! § Hyvä suunnitteluväline • Useat nykytyökalut, esim. MS Visual Studio 2005 ja perinteisesti Rational Rose tuottavat luokkakaavioita automaattisesti Java-ohjelmakoodista § Näistä sinun ei tarvitse välittää tällä kurssilla © Jukka Juslin 2006 10

Metodien kutsuminen • Kun olio on luotu, voidaan käyttää piste (. ) operaattoria kutsumaan

Metodien kutsuminen • Kun olio on luotu, voidaan käyttää piste (. ) operaattoria kutsumaan yhtä olion metodeista pituus = nimi. length(); • Metodi voi palauttaa arvon, jota voidaan käyttää sijoituksessa tai parametrinä esim. Toiselle metodille • Metodin kutsumista voidaan ajatella niin, että pyydämme oliota suorittamaan tietyn palvelun (pyydämme pankkitiliämme antamaan rahaa yms. ) © Jukka Juslin 2006 11

to. String() metodi • Luokkaan voidaan (ja kannattaa) toteuttaa metodi nimeltään to. String() §

to. String() metodi • Luokkaan voidaan (ja kannattaa) toteuttaa metodi nimeltään to. String() § Esim: public String to. String() { String out = etunimi + ” ” + sukunimi; return(koko. Nimi) } to. String metodin merkitys on, että kun kutsumme käyttävästä luokasta esimerkiksi System. out. println(olion. Nimi); -> saamme tulostettua ko. olion sisältämät tiedot -> mitä tulostuu esim. Nimi oliosta ilman to. Stringiä? © Jukka Juslin 2006 12

this avainsana • Kun java-luokkia tehdään, usein on tarpeen tehdä set-metodi ko. luokalle: §

this avainsana • Kun java-luokkia tehdään, usein on tarpeen tehdä set-metodi ko. luokalle: § Esim: public class Nimi { private etunimi; private sukunimi; public void set. Nimi(String etunimi, String sukunimi) { this. etunimi = etunimi; this. sukunimi = sukunimi; } … } Tässä Java ei pysty erottelemaan parametrinä tullutta String etunimeä ja String sukunimeä: this auttaa ja Java Tietää kyseessä olevan private etunimi ja sukunimi, jotka tehdään luokan alussa. © Jukka Juslin 2006 13

Viittaukset • Huomaa, että primitiivityyppi sisältää itse arvon mutta muusta luokasta tehty olio sisältää

Viittaukset • Huomaa, että primitiivityyppi sisältää itse arvon mutta muusta luokasta tehty olio sisältää olion osoitteen • Olioviittaus voidaan ajatella kuin osoittimena olion paikkaan (käytännössä on ns. Oid tunnus) • Usein mieluummin kuvaamme viittausta mieluummin graafisesti, kuin käytämme muistiosoitteita kuvaamaan olion sijaintia num 1 nimi 1 38 “Bill Gates" 14

Muuttujien sijoitus (=) • Sijoituksessa otetaan kopio arvosta ja sijoitetaan se muuttujaan • Tavallaan

Muuttujien sijoitus (=) • Sijoituksessa otetaan kopio arvosta ja sijoitetaan se muuttujaan • Tavallaan Java kielen virhe käyttää = merkkiä sijoittamista merkitsemään, esim =: olisi saattanut olla parempi. Mutta: That’s Life. Java kieli perustuu syntaksiltaan eli kielen sanoiltaan C-ohjelmointikieleen josta ko. asiat ovat jääneet. • Primitiivityypeille: Ennen: num 1 38 num 2 96 num 2 = num 1; Jälkeen: num 1 38 num 2 38 15

Viittausmuuttuja (reference assignment) • Olioviittauksille, sijoitus kopioi osoitteen (OID) eikä itse oliota: Ennen: nimi

Viittausmuuttuja (reference assignment) • Olioviittauksille, sijoitus kopioi osoitteen (OID) eikä itse oliota: Ennen: nimi 1 nimi 2 “Bill Gates" “Paul Allen" nimi 2 = nimi 1; Jälkeen: nimi 1 “Bill Gates" nimi 2 Eikä tässä vielä kaikki! 16

Aliakset • Kahta tai useampaa viittausta, jotka viittavaat samaan olioon kutsutaan toistensa aliaksiksi •

Aliakset • Kahta tai useampaa viittausta, jotka viittavaat samaan olioon kutsutaan toistensa aliaksiksi • Se luo mielenkiintoisen tilanteen: yhteen olioon päästään käsiksi käyttäen erilaisia viittausmuuttujia • Aliakset voivat olla hyödyllisiä, mutta niitä pitää hallita erittäin viisaasti • Olion muuttaminen yhden viittauksen kautta päivittää olion näkymään uudella tavalla kaikista aliaksista käsin. Kyseessä on aina yksi ja sama olio, eikä sen kopiot 17

Roskien keruu (garbage collection) • Kun olioon ei enää ole viittauksia, siihen ei enää

Roskien keruu (garbage collection) • Kun olioon ei enää ole viittauksia, siihen ei enää päästä käsiksi ohjelman kautta • Näin oliosta tule hyödytön, ja siksi sitä kutsutaan roskaksi (garbage) • Java suorittaa automaattista roskienkeruuta ajoittain, palauttaen olion käyttämän muistitilan järjestelmän myöhempään käyttöön • Muissa ohjelmointikielissä ohjelmoija on vastuussa roskien keruun suorittamisesta 18

Missä ollaan? Olioiden luominen String luokka Paketit EXTRA: Tulosteen muokkaaminen EXTRA: Enumeroidut tyypit Wrapper

Missä ollaan? Olioiden luominen String luokka Paketit EXTRA: Tulosteen muokkaaminen EXTRA: Enumeroidut tyypit Wrapper luokat © Jukka Juslin 2006 19

String luokka • Koska merkkijonot ovat niin yleisiä, meidän ei tarvitse käyttää new-operaattoria luodessamme

String luokka • Koska merkkijonot ovat niin yleisiä, meidän ei tarvitse käyttää new-operaattoria luodessamme String oliota kirja = "Javan perusteet"; • Tämä erikoissyntaksi (eli kirjoitusmuoto) koskee ainoastaan merkkijonoja (Stringejä) • Jokainen string literaali (laitettuna lainausmerkkeihin) esittää String oliota © Jukka Juslin 2006 20

String metodit • Kun String olio on luotu, sen arvoa eikä pituutta ei voi

String metodit • Kun String olio on luotu, sen arvoa eikä pituutta ei voi muuttaa • Siksi sanomme, että String luokan olio on pysyvä (immutable). Eli mutaattoreilla eli settereillä ei tälläisia voi muutella. • Kuitenkin, monet String luokan metodit palauttavat uusia String olioita, jotka ovat muutettuja versiota alkuperäisestä • Katso lista String metodeista Java API: sta (Application Programming Interface): § http: //java. sun. com/j 2 se/1. 5. 0/docs/api/index. html © Jukka Juslin 2006 21

String indeksit • Joskus on hyödyllistä viitata tiettyyn merkkiin Stringin sisällä • Tämä voidaan

String indeksit • Joskus on hyödyllistä viitata tiettyyn merkkiin Stringin sisällä • Tämä voidaan tehdä määrittämällä merkin numeerinen indeksi • Indeksit alkavat nollasta jokaisessa stringissä • Stringissä “Moro", merkki ‘M' on indeksissä 0 ja merkki 'o' is at indeksissä 1 ja 3 © Jukka Juslin 2006 22

Missä ollaan? Olioiden luominen String luokka Paketit EXTRA: Tulosteen muotoileminen EXTRA: Enumeroidut tyypit Wrapper

Missä ollaan? Olioiden luominen String luokka Paketit EXTRA: Tulosteen muotoileminen EXTRA: Enumeroidut tyypit Wrapper luokat © Jukka Juslin 2006 23

Luokka (Class) kirjastot • Luokkakirjasto (class library) on kokoelma luokkia, joita voimme käyttää kun

Luokka (Class) kirjastot • Luokkakirjasto (class library) on kokoelma luokkia, joita voimme käyttää kun kehitämme ohjelmia • Javan standardi luokkakirjasto on osa mitä tahansa Java kehitysympäristöä § http: //java. sun. com/j 2 se/1. 5. 0/docs/api/index. html • Luokkakirjaston luokat eivät ole osa Java-kielen ydintä, mutta jo yksinkertainenkin ohjelma luottaa ko. Luokkiin vahvasti • Useita luokkia on jo käytetty System, String (esimerkki hyödyllisestä luokasta on uusi Scanner luokka). Nämä kaikki ovat osa Javan standardi luokkakirjastoa • Muihin luokkakirjastoihin voidaan päästä käsiksi kolmannen osapuolen vendorien kautta (alihankkijat), tai voit luoda oman peruskirjastosi itse! © Jukka Juslin 2006 24

Paketit • Java standardin luokkakirjaston luokat on organisoitu paketeiksi. Voit kysyä harjoituksissa, kuinka voit

Paketit • Java standardin luokkakirjaston luokat on organisoitu paketeiksi. Voit kysyä harjoituksissa, kuinka voit itse tehdä ko. paketteja. • Muutamia paketteja Javan standardissa luokkakirjastossa ovat: Paketti Tarkoitus java. lang java. applet java. awt javax. swing java. net java. util javax. xml. parsers Yleinen tuki Appletit www: tä varten Grafiikka ja GUI: t Lisää GUI toiminnallisuutta Verkkoviestintä Työkaluja XML tiedoston käsittely © Jukka Juslin 2006 25

import lause • Kun haluat käyttää luokkaa paketista, voit aina käyttää luokan täydellistä nimeä

import lause • Kun haluat käyttää luokkaa paketista, voit aina käyttää luokan täydellistä nimeä (fully qualified name). Pitkien nimien kirjoittaminen moneen kertaan on vain aika työlästä. Esimerkki: java. util. Scanner • Tai voit ns. importata eli tuoda luokan aivan ohjelman alussa ja sitten käyttää vain luokan nimeä: import java. util. Scanner; • Jos haluat tuoda kaikki luokat tietystä paketista, voit käyttää * villiäkorttia (wildcard) import java. util. *; © Jukka Juslin 2006 26

import lause • Kaikki luokat java. lang paketista tuodaan automaattisesti kaikkiin ohjelmiin • Aivan

import lause • Kaikki luokat java. lang paketista tuodaan automaattisesti kaikkiin ohjelmiin • Aivan kuin kaikki ohjelmat näkymättömästi sisältäisivät rivin: import java. lang. *; • Tämän vuoksi meidän ei täytynyt tuoda System tai String luokkia aikaisemmissa ohjelmissa • Scanner luokka esimerkiksi, toisaalta on osa JDK 1. 5: den java. util pakettia ja siksi se pitää tuoda kirjoittamalla ko. import rivi © Jukka Juslin 2006 27

Random luokka • Random luokka on osa java. util pakettia • Se tarjoaa metodeita

Random luokka • Random luokka on osa java. util pakettia • Se tarjoaa metodeita luoda satunnaislukuja (todella satunnaisia) • Random olio suorittaa monimutkaisia laskutoimituksia perustuen siemenarvoon (seed value) tuottaakseen virran lukuja, jotka näyttävät satunnaisilta © Jukka Juslin 2006 28

Math luokka • Math luokka on osa java. lang pakettia • Math luokka sisältää

Math luokka • Math luokka on osa java. lang pakettia • Math luokka sisältää metodit, jotka suorittavat muutamia matemaattisia funktioita • Näihin sisältyvät: § Absoluuttisen arvon laskeminen § Neliöjuuri § Eksponentit (potenssiin laskeminen) § Trigonometriset funktiot © Jukka Juslin 2006 29

Math luokka • Math luokan metodit ovat staattisia metodeita (kutsutaan myös luokkametodeiksi) • Staattisia

Math luokka • Math luokan metodit ovat staattisia metodeita (kutsutaan myös luokkametodeiksi) • Staattisia metodeja voidaan kutsua luokan nimen kautta, Math luokan oliota ei tarvitse ensin tehdä! arvo = Math. cos(90) + Math. sqrt(delta); • Staattisia metodeja käsitellään myöhemmin opintojaksolla lisää © Jukka Juslin 2006 30

Missä ollaan? Olioiden luominen String luokka Paketit EXTRA: Tulosteen muotoilu EXTRA: Enumeroidut tyypit Wrapper

Missä ollaan? Olioiden luominen String luokka Paketit EXTRA: Tulosteen muotoilu EXTRA: Enumeroidut tyypit Wrapper luokat © Jukka Juslin 2006 31

Tulosteen muotoilu • On usein tarpeen muotoilla arvoja niin, että ne voidaan esittää sopivalla

Tulosteen muotoilu • On usein tarpeen muotoilla arvoja niin, että ne voidaan esittää sopivalla tavalla. Ajatellaan esimerkiksi eurosumman tulostamista double muuttujasta. Tässä olisi toivottavaa että desimaaleja esitettäisiin vain kaksi (eli sentit) • Javan standardi luokkakirjasto sisältää luokkia, jotka tarjoavat tulosteen muotoiluun (formatting) keinoja • Number. Format luokka muotoilee lukuja automaattisesti esimerkiksi valuutaksi (rahaksi) tai prosenteiksi • Decimal. Format luokka mahdollistaa arvojen muotoilun perustuen vapaavalintaiseen patterniin (malliin) • Molemmat ovat osa java. text pakettia © Jukka Juslin 2006 32

Tulosteen muotoilu • Number. Format luokalla on staattiset metodit, jotka palauttavat muotoillun olion: get.

Tulosteen muotoilu • Number. Format luokalla on staattiset metodit, jotka palauttavat muotoillun olion: get. Currency. Instance() get. Percent. Instance() • Jokaisella formatter oliolla on metodi nimeltään format , joka palauttaa stringin halutussa muodossa ja halutulla sisällöllä © Jukka Juslin 2006 33

Tulosteen muotoilu • Decimal. Format luokkaa voidaan käyttää liukuluvun (double) muotoilemiseen monella tavoin •

Tulosteen muotoilu • Decimal. Format luokkaa voidaan käyttää liukuluvun (double) muotoilemiseen monella tavoin • Esimerkiksi, voit määritellä että numero pitää katkaista kolmen desimaalin tarkkuuteen (ota huomioon pyöristäminen…) • Decimal. Format luokan konstruktori ottaa stringin parametrinä, joka esittää mallia (patternia) johon muokattu olio halutaan © Jukka Juslin 2006 34

Missä ollaan? Olioiden luonti String luokka Paketit EXTRA: Tulosteen muotoileminen EXTRA: Enumeroidut tyypit Wrapper

Missä ollaan? Olioiden luonti String luokka Paketit EXTRA: Tulosteen muotoileminen EXTRA: Enumeroidut tyypit Wrapper luokat © Jukka Juslin 2006 35

Enumeroidut tyypit • Java mahdollistaa sinulle määrittää enumeroidun tyypin, jota voidaan sitten käyttää muuttujien

Enumeroidut tyypit • Java mahdollistaa sinulle määrittää enumeroidun tyypin, jota voidaan sitten käyttää muuttujien esittelemisessä (käytössä) • Enumeroitu tyyppi luo kaikki mahdolliset arvot tämän tyyppiselle muuttujalle • Arvot ovat tunnisteita, jotka Sinä valitset tunnistamaan muutujan eri tiloja • Seuraavat määritteet luovat enumeroidun tyypin nimeltään Vuodenaika enum Vuodenaika {talvi, kevät, kesä, syksy}; • Mikä tahansa määrä arvoja voidaan listata • Miten määrittelisit Kurssi enum-muutujan, jossa on ict 02 d ja ict 01 d ? © Jukka Juslin 2006 36

Enumeroidut tyypit • Kun tyyppi on määritetty, ko. Tyypin mukainen muuttuja voidaan esitellä Vuodenaika

Enumeroidut tyypit • Kun tyyppi on määritetty, ko. Tyypin mukainen muuttuja voidaan esitellä Vuodenaika vuodenaika; ja esim. vuodenaika voidaan sijoittaa tähän muuttujaan vuodenaika = Vuodenaika. syksy; • Arvot määritellään käyttäen määrittelyssä enumeroidun tyypin nimeä • Enumeroidut tyypit ovat tyyppiturvallisia (type-safe) vrt. Tilanne, jossa loppukäyttäjät ovat osaamattomia/huolimattomia ja antavat ohjelmalle yhdeltä merkiltään poikkeavaa syötettä (vertaa ict 02 d vs. ICT 02 D) – et voi sijoittaa Enum-tyyppiin muuta kuin niitä joita on tyypin tekemisen yhteydessä lueteltu • Enum. tyyppi vastaa siis hiukan esim. www-sivuilla olevia alasvetolistoja. Estää väärän syötteen tulemista ohjelmaan. © Jukka Juslin 2006 37

Järjestysluvut • Sisäisesti, jokaisen enumeroidun tyypin arvo talletetaan integerinä, jota kutsutaan järjestysluvuksi (ordinal value)

Järjestysluvut • Sisäisesti, jokaisen enumeroidun tyypin arvo talletetaan integerinä, jota kutsutaan järjestysluvuksi (ordinal value) • Ensimmäiselläl arvolla enumeroidussa tyypissä on järjestyslukuarvo 0, toisella 1, ja niin edelleen • Kuitenkin, et voi sijoittaa numeerista arvoa enumeroituun tyyppiin, et vaikka se vastaisi järjestyslukua johon listassa numero laitettaisiin © Jukka Juslin 2006 38

Enumeroidut tyypit • Enumeroidun tyypin määrittely on erityinen tyyppi luokasta, ja tässä jokainen muuttuja

Enumeroidut tyypit • Enumeroidun tyypin määrittely on erityinen tyyppi luokasta, ja tässä jokainen muuttuja on olio (enumeroidun tyypi määrittelyn sisällä) • ordinal metodi (järjestysluku) palauttaa olion järjestysluvun • name metodi palauttaa tunnistimen (ns. avaimen) nimen, joka viittaa ko. arvoon © Jukka Juslin 2006 39

Missä ollaan? Olioiden luonti String luokka Paketit (vrt. Jar-paketit) EXTRA: Tulosteen muotoilu EXTRA: Enumeroidut

Missä ollaan? Olioiden luonti String luokka Paketit (vrt. Jar-paketit) EXTRA: Tulosteen muotoilu EXTRA: Enumeroidut tyypit Wrapper luokat © Jukka Juslin 2006 40

Wrapper luokat • java. lang paketti sisältää wrapper luokkia jotka vastaavat kutakin primitiivityyppiä: Primitiivityyppi

Wrapper luokat • java. lang paketti sisältää wrapper luokkia jotka vastaavat kutakin primitiivityyppiä: Primitiivityyppi Wrapper luokka byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean void Void © Jukka Juslin 2006 41

Wrapper luokat • Seuraava rivi luo Integer olion, joka esittää integerin (muuttujan tyyppiä int)

Wrapper luokat • Seuraava rivi luo Integer olion, joka esittää integerin (muuttujan tyyppiä int) 40 oliona Integer ikä = new Integer(40); • Wrapper luokan oliota voidaan käyttää missä tahansa tilanteessa, kun primitiivityyppinen int-arvo ei riitä. Integerillä on laaja määrä metodeja, joita voi käyttää: http: //java. sun. com/j 2 se/1. 5. 0/docs/api/index. html • Esimerkiksi tietyssä oliossa voidaan säilyttää muutamaa Integer arvoa. Wrapper olio voi toimia tälläisenä säilönä (container), mutta Wrapper containeriin ei voi primitiivityyppisiä arvoa (kuten int) vaan intit pitäisi ilmaista Integerinä © Jukka Juslin 2006 42

Wrapper luokat • Wrapper luokat sisältävät myös staattisia metodeja, jotka auttavat hallitsemaan luokan määrittämään

Wrapper luokat • Wrapper luokat sisältävät myös staattisia metodeja, jotka auttavat hallitsemaan luokan määrittämään tyyppiä • Esimerkiksi Integer luokassa on metodi, jonka avulla Stringistä saadaan int arvo parsittua. Eli konvertoitua String int-tyyppiseksi arvoksi. Integer-luokka voidaan ajatella wrapper luokkana ja parse. Int on staattinen metodi. Integeriä ei siis tarvitse erikseen luoda vaan se on jo olemassa staattisena num = Integer. parse. Int(str); • Wrapper luokissa on myös usein hyödyllisiä vakioita, kuten seuraavasta huomaammel • Esimerkiksi, Integer luokka sisältää MIN_VALUE ja MAX_VALUE vakiot, jotka pitävät muistissa pienintä ja suurinta int arvoa (katsotaan esimerkkinä Java APIA http: //java. sun. com/j 2 se/1. 5. 0/docs/api/index. html) © Jukka Juslin 2006 43

Yhteenveto • Tänään käsittelimme seuraavat asiat: § § § § Olion luonti ja olioviittaukset

Yhteenveto • Tänään käsittelimme seuraavat asiat: § § § § Olion luonti ja olioviittaukset (object reference) String luokka ja sen metodit Java standardi luokkakirjasto (API: SUN www-sivut!) Random ja Math luokat EXTRA: Tulosteen muotoilu (JDK 1. 5) EXTRA: enumeroidut tyypit Wrapper luokat © Jukka Juslin 2006 44