4. Luokan testaus ja käyttö olion kautta 4.1

Samankaltaiset tiedostot
Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

7. Oliot ja viitteet 7.1

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

4. Olio-ohjelmoinista lyhyesti 4.1

2. Olio-ohjelmoinista lyhyesti 2.1

Oliot viestivät metodeja kutsuen

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

19. Olio-ohjelmointia Javalla 19.1

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

8. Näppäimistöltä lukeminen 8.1

12. Näppäimistöltä lukeminen 12.1

8. Näppäimistöltä lukeminen 8.1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

9. Periytyminen Javassa 9.1

Mikä yhteyssuhde on?

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

5. HelloWorld-ohjelma 5.1

16. Javan omat luokat 16.1

Olio-ohjelmointi Javalla

9. Periytyminen Javassa 9.1

5. HelloWorld-ohjelma 5.1

Pakkauksen kokoaminen

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

17. Javan omat luokat 17.1

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

1 Tehtävän kuvaus ja analysointi

1. Omat operaatiot 1.1

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Pakkauksen kokoaminen

Rajapinta (interface)

Metodien tekeminen Javalla

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

7. Näytölle tulostaminen 7.1

17. Javan omat luokat 17.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Luokat ja oliot. Ville Sundberg

1. Olio-ohjelmointi 1.1

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Javan perusteita. Janne Käki

15. Ohjelmoinnin tekniikkaa 15.1

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Harjoitus 5 (viikko 48)

Java-kielen perusteet

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Ohjelmointi 2 / 2010 Välikoe / 26.3

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

15. Ohjelmoinnin tekniikkaa 15.1

Sisällys. 15. Lohkot. Lohkot. Lohkot

Luokan sisällä on lista

12. Monimuotoisuus 12.1

Ohjelmoinnin jatkokurssi, kurssikoe

Ohjelmointi 2, välikoe

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

ITKP102 Ohjelmointi 1 (6 op)

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

ITKP102 Ohjelmointi 1 (6 op)

7/20: Paketti kasassa ensimmäistä kertaa

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Listarakenne (ArrayList-luokka)

Osoitin ja viittaus C++:ssa

YHTEYSSUHDE (assosiation)

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

JUnit ja EasyMock (TilaustenKäsittely)

Java-kielen perusteita

ITKP102 Ohjelmointi 1 (6 op)

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Taulukoiden käsittely Javalla

TIETORAKENTEET JA ALGORITMIT

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

ITKP102 Ohjelmointi 1 (6 op)

Harjoitus 4 (viikko 47)

Olio-ohjelmointi Virhetilanteiden käsittely

Taulukot. Jukka Harju, Jukka Juslin

Eclipse 3.1 Pikaopas versio 1.0

Harjoitus 2 (viikko 45)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Transkriptio:

4. Luokan testaus ja käyttö olion kautta 4.1

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. 4.2

Olion luominen luokasta Tunnuksen esittely varaa muistia viitteelle (viitetyyppiselle muuttujalle), mutta ei oliolle. Java alustaa automaattisesti viitteen tyhjäksi (-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. 4.3

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()); 4.4

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

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 KissaTestiluokassa (KissaTesti.java). 4.6

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); } } 4.7

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 4.8

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ä javaohjelmalle 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. 4.9