4. Luokan testaus ja käyttö olion kautta

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
16. Javan omat luokat.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Java-perusteet Kari Kujansuu
Ict1td002: Ohjelmointitaito Kertaus Osio 2 - luokat - ilmentymät - viittaus- ja arvomuuttuja - ilmentymien taulukointi HAAGA-HELIA IltaTiko.
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
13. Pakkaukset.
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely.
9. Periytyminen Javassa.
© Jukka Harju, Jukka Juslin
7. Oliot ja viitteet.
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
19. Olio-ohjelmointia Javalla
20. Javan omat luokat.
1 DataOutputStream ja DataInputStream DataOutputStream:lla voidaan tallentaa perustietotyyppien arvoja binäärimuotoiseen tiedostoon DataInputStream:lla.
HelloWorld-ohjelma. 5.2 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Näppäimistöltä lukeminen Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In -luokka.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
22. Taulukot.
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
15. Ohjelmoinnin tekniikkaa
Osoittimen määrittely ja alustus tMyn1 Osoittimen määrittely ja alustus Osoitin (pointer) on muuttuja, joka voi sisältää keskusmuistiosoitteen. Osoitinmuuttujan.
16. Javan omat luokat Sisällys Johdanto. Object -luokka: − toString -, equals -, clone - ja getClass -metodit. Comparable -rajapinta: − compareTo.
Olio-ohjelmoinista lyhyesti. 2.2 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen.
Yksikkötestaus ● Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin.
15. Ohjelmoinnin tekniikkaa Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi.
17. Kooste.
5. Kapselointi.
6. Metodit.
3. Olio-ohjelmoinista lyhyesti
1. Omat operaatiot.
7. Oliot ja viitteet.
13. Pakkaukset.
2. Taulukot.
1. Olio-ohjelmointi.
17. Javan omat luokat.
8. Näppäimistöltä lukeminen
4. Komentoriviparametrit
7. Hyvä ohjelmointitapa..
15. Ohjelmoinnin tekniikkaa
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
5. HelloWorld-ohjelma.
8. Näppäimistöltä lukeminen
2. Taulukot.
6. Metodit.
7. Oliot ja viitteet.
3. Komentoriviparametrit
13. Pakkaukset.
16. Javan omat luokat.
4. Attribuutit.
15. Ohjelmoinnin tekniikkaa
7. Hyvä ohjelmointitapa..
7. Näytölle tulostaminen
5. HelloWorld-ohjelma.
3. Attribuutit.
13. Pakkaukset.
Esityksen transkriptio:

4. Luokan testaus ja käyttö olion kautta

Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään siihen epäsuorasti liittyvän viitetyyppisen muuttujan eli viitteen (reference) avulla. Viite määrittää olion identiteetin. Viite toteutetaan teknisesti yhden tai useamman suojatun osoittimen (pointer) avulla. Javan viitteet eri asia kuin osoittimet ja C++:n viitteet.

Olion luominen luokasta Tunnuksen esittely varaa muistia viitteelle (viitetyyppiselle muuttujalle), mutta ei oliolle. Java alustaa automaattisesti viitteen tyhjäksi (null-arvo) tai ilmoittaa, että viite on alustettava. Oliolle varataan muistia new-operaatiolla, joka palauttaa viitteen. Luokkatyyppisen olion luomisen yhteydessä kutsutaan rakentajaa, joka on erityinen metodi, jonka avulla määrätään mistä luokasta olio luodaan ja kuinka attribuutit alustetaan.

Olion luominen luokasta Java luo luokalle automaattisesti tyhjän parametrittoman oletusrakentajan ja antaa attribuuteille niiden tyyppien määräämät alkuarvot. Rakentajia käsitellään myöhemmin tarkemmin. Muuttuja ja olio liittyvät toisiinsa, kun new-operaation paluuarvona saatava viite sijoitetaan muuttujan arvoksi. Luokkatyyppisen olion metodeja kutsutaan muuttujan ja pistenotaation avulla. String merkit = ″abc″; int merkkeja = merkit.length(); System.out.println(rontti.vari());

Olion luominen luokasta Kissa rontti = null; rontti = new Kissa(); rontti null Olion viitteen esittely ja alustaminen tyhjäksi. null Lauseke new Kissa(); luo olion Kissa-luokasta, alustaa sen attribuutit ja palauttaa paluuarvona olioon liittyvän tunnuksettoman viitteen. rontti null Sijoituksen seurauksena rontti-viite viittaa samaan olioon kuin paluuarvona saatu viite.

Luokalle oma tiedosto Ohjelma on toistaiseksi ajateltu yhdeksi luokaksi. Näin lähdekooditiedostojakin on ollut vain yksi. Siirrytään nyt tyypilliseen käytäntöön, jossa jokaisen luokan koodi erotetaan omaan tiedostoonsa. Näin toimien kukin luokka on selkeämmin täysin oma kokonaisuutensa myös tiedostojen tasolla. Main-metodin sisältävää luokkaa kutsutaan ajoluokaksi. Käytetään tällä kurssilla usein toisen luokan testaamiseen. Esimerkiksi Kissa-luokkaa (Kissa.java) testataan KissaTesti-luokassa (KissaTesti.java).

KissaTesti-luokka (KissaTesti.java) public class KissaTesti { public static void main(String[] args) { // Viitteen esittely, muistinvaraus ja viitteen yhdistäminen // olioon yhdessä lauseessa. Kissa rontti = new Kissa(); // Testataan metodeja kutsumalla niitä olion kautta pistenotaatiolla. rontti.aantele("Miau!"); rontti.vari("musta"); rontti.hanta("tavallinen"); String rontinVari = rontti.vari(); System.out.println(rontinVari); String rontinHanta = rontti.hanta(); System.out.println(rontinHanta); … }

Testiluokan kääntäminen ja ajaminen Testiluokka on käännettävä yhdessä testattavan luokan kanssa. Tämä on tehtävissä eri tavoin. Kun molempien luokkien lähdekooditiedostot sijoitetaan samaan hakemistoon, kääntäjälle tarvitsee antaa vain testiluokan sisältävän tiedoston nimi. javac KissaTesti.java Ohjelma ajetaan testiluokan nimellä. java KissaTesti

Testiluokan kääntäminen ja ajaminen Luokan voi myös sisällyttää testiluokan käännökseen jostakin muusta hakemistosta joko polkumäärittelyllä tai javac-ohjelman sourcepath-parametrillä. Näin käännetty ohjelma suoritetaan siten, että java-ohjelmalle kerrotaan classpath-parametrin avulla tavukoodin hakemisto. Ajaminen ja käännös tehdään siis kuten In-luokan yhteydessä. Kertaa tarvittaessa Lausekielinen ohjelmointi I -kurssin luentomateriaalin 8. luku.