Ohjelmointi 1: Olipa kerran olio

Koko: px
Aloita esitys sivulta:

Download "Ohjelmointi 1: Olipa kerran olio"

Transkriptio

1 Ohjelmointi 1: Olipa kerran olio Taustaa Ensimmäisten neljän kotitehtäväkierroksen ohjelmointitehtävät liittyvät seikkailupelimaailmaan. Seikkailupeli on keinotekoinen maailma, joka koostuu paikoista, olennoista ja esineistä. Pelin pelaaja ohjaa yhtä olentoa; tietokone tai mahdolliset muut pelaajat ohjaavat toisia olentoja. Olennot liikkuvat paikoissa ja käyttävät esineitä erilaisten tehtävien suorittamiseen. Yleensä pelillä on jokin tavoite, esimerkiksi aarteiden kerääminen, toisten olentojen kukistaminen ja vastaan tulevien ongelmien ratkaiseminen. Koska tämä on ensimmäinen harjoitus, emme pyri luomaan kokonaista seikkailupeliä vaan ainoastaan tiettyjä pelissä tarvittavia luokkia ja niihin liittyviä attribuutteja ja metodeja. Käsiteltävät luokat ovat Esine ja sen aliluokat sekä Olento. Pelimaailman olioita Pelimaailma koostuu olioista, jotka ovat seuraavien luokkien ilmentymiä: Esine Taikajuoma Tynnyri Puukko Olento Pelissä käsiteltävien esineiden yläluokka. Useimmiten esineitä ei luoda suoraan tästä luokasta vaan sen aliluokista. Kullakin esineellä on nimi ja paino. Maukas luonnontuote. Pelimaailmassa on useita erilaisia taikajuomia niin painoltaan kuin maultaan. Pelin olennot juovat taikajuomaa saadakseen lisää elinvoimaa. Jotkin taikajuomat ovat kuitenkin myrkyllisiä ja tarjoavat juojalleen epämukavan yllätyksen. Maaginen säilytysesine. Tynnyriä tökkäämällä voi hankkia itselleen uusia esineitä; koskaan ei kuitenkaan voi tietää, millaisen esineen saa. Perinteinen härmäläinen esine, jota käyttämällä sen kantaja saa keinon puolustaa itseään. Valitettavasti moni käyttää näitä hyökätäkseen toisten kimppuun. Pelissä toimivien olentojen luokka. Kullakin olennolla on nimi sekä elinvoima, joka kuvaa olennon senhetkistä fyysistä kuntoa. Jos elinvoima pääsee loppumaan, olento kuolee. Tätä voi yrittää ehkäistä juomalla pelimaailmasta löytyviä taikajuomia, jotka kasvattavat elinvoimaa. Myrkylliset taikajuomat toimivat valitettavasti juuri päinvastoin. Olennon elämän keskeinen sisältö on taistelu kanssaolentoja vastaan. Tämä tapahtuu yleensä puukon antamien lisävoimien avulla. 1

2 Osatehtävä 1: Luokka Esine Tässä osatehtävässä tarvitset seuraavien asioiden hallintaa: Luokan ja olion käsitteet (engl. class, object). Attribuutin eli ominaisuusmuuttujan käsite (engl. attribute). Näkyvyysmääreet, erityisesti public ja private (engl. visibility modifiers). Metodin käsite (engl. method). Saanti- ja asetusmetodit. Koska tässä harjoituksessa käytämme ohjelman nimissä suomea, ovat saanti- ja asetusmetodien (engl. getters and setters) nimet muotoa annaxxx ja asetaxxx, missä xxx on käsiteltävän attribuutin nimi. Näistä edellinen palauttaa arvonaan attribuutin arvon ja jälkimmäinen asettaa sille uuden arvon. Sijoituslause (engl. assignment). Merkkijonot (String) ja niiden muodostaminen. Metodi tostring(). Pääohjelmametodi main. Muodosta luokka Esine, jolla on seuraavat attribuutit eli ominaisuusmuuttujat: String nimi Esineen nimi tai muu esinettä kuvaava merkkijono. double paino Esineen paino. Määritä attribuuttien näkyvyys niin, että niitä voidaan käsitellä suoraan vain tässä luokassa muualle ne eivät saa näkyä. Määritä lisäksi seuraavat metodit, jotka ovat käytettävissä kaikkialla (myös tämän luokan ulkopuolella): Esine(String nimi, double paino) Luontimetodi eli konstruktori (engl. constructor), jota kutsutaan aina uutta esinettä luotaessa. Esine saa nimekseen parametrin nimi arvon. Esineen painoksi tulee vastaavasti parametrin paino arvo. Parametrien arvoja ei tarvitse, eikä voikaan, tietää vielä luontimetodia kirjoitettaessa. Kunkin luotavan esineen nimi ja paino määritellään vasta siinä vaiheessa, kun luontimetodia kutsutaan ja parametrit saavat todelliset arvot. Luontimetodin koodia laatiessasi voit kuitenkin olettaa, että parametrimuuttujien nimien nimi ja paino takana on oikeat arvot ne vain voivat olla "mitä vain" merkkijonoja ja desimaalilukuja. String annanimi() Metodi palauttaa esineen nimen. Käytä return-avainsanaa. double annapaino() Metodi, jonka palautusarvo on esineen paino. 2

3 Kirjoita luokkaan seuraavaksi pääohjelmametodi public static void main(string[] args), jossa luot pari erinimistä ja -painoista esinettä ja tulostat ne metodin System.out.println avulla (antamalla kunkin esineen suoraan metodin parametriksi). Mitä huomaat? Tulostaako ohjelma mitään informatiivista? Kirjoita luokkaan vielä yksi metodi (pääohjelmametodi on yleensä tapana jättää viimeiseksi, joten lisää seuraava metodi koodiin ennen sitä): String tostring() Luokassa Object määritetyn metodin tostring() uudelleenmäärittely. Metodin tulee palauttaa merkkijono "n, paino p kg", missä n on esineen nimi ja p sen paino. Käännä luokka vielä kerran ja kokeile uudelleen pääohjelmametodin ajamista. Miltä esineiden tulostaminen näyttää tällä kertaa? Osatehtävä 2: Luokka Taikajuoma Tässä osatehtävässä tarvitset seuraavien uusien asioiden hallintaa: Perintä (engl. inheritance). Luontimetodi ja yläluokan luontimetodin kutsuminen. Yläluokan metodin uudelleenmäärittäminen aliluokassa (engl. overriding). Eksplisiittinen tyyppimuunnos (engl. type conversion / type casting).?:-operaattori tai ehdollinen lause eli if-lause. Seuraavaksi muodostetaan luokan Esine aliluokka Taikajuoma, joka edustaa pelimaailman eri taikajuomia. Esine-luokalta perittyjen attribuuttien ja metodien lisäksi jokaisella taikajuomalla on tieto siitä, miten herkullinen se on. Huomaa, että javassa etenkään varsinaisessa koodissa ei käytetä ääkkösiä, ja merkkiongelmien takia on suositeltavaa, ettei ääkkösiä käytä myöskään kommenteissa. Taikajuomien jaottelu eri tyyppeihin voitaisiin tehdä laatimalla joka tyyppiä varten oma Taikajuoma-luokan aliluokka, mutta koska kaikki Taikajuomat ovat ominaisuuksiltaan ja toiminnallisuudeltaan samanlaisia (ainoastaan ominaisuuksien arvot vaihtelevat), näillä uusilla luokilla ei olisi oikeastaan mitään virkaa. Ne eivät lisäisi alkuperäiseen taikajuoman konseptiin mitään uutta. Menettelemme siis hieman toisin. Laadimme seuraavaksi luokan Taikajuoma, joka perii luokan Esine. Määritä luokalle seuraavat attribuutit: 3

4 boolean herkullinen Tieto siitä, onko taikajuoma herkullinen. Jos tämän arvo on false, taikajuoma vähentää juojansa elinvoimaa. String tyyppi Tieto taikajuoman tyypistä myöhempää käyttöä varten. Määritä attribuuttien näkyvyys niin, että niitä voidaan käsitellä suoraan vain tässä luokassa. Luokalla on lisäksi seuraavat, kaikkialla käytettävissä olevat metodit: Taikajuoma(String vari, String tyyppi, double paino, boolean herkullinen) Luontimetodi, jota kutsutaan taikajuomaa luotaessa. Taikajuoman nimi muodostuu väristä ja tyypistä välilyönnillä eroteltuna. Luotavan Taikajuoma-instanssin nimi voisi olla vaikkapa "keltainen mehu". Muista kutsua yläluokan luontimetodia, jolle annetaan taikajuoman nimeksi edellä kuvatun mukainen merkkijono. Taikajuoman herkullinenattribuuttiin asetetaan herkullinen-parametrin arvo. Taikajuoman väriä ei erikseen tallenneta mihinkään sen attribuuttiin, sillä se ilmenee taikajuoman nimestä. Myös painon tallentaminen jätetään yksin yläluokan huoleksi. boolean onkoherkullinen() Palauttaa true, jos taikajuoma on herkullinen tai false, jos taikajuoma on myrkyllinen. int annaherkullisuus() Taikajuoman herkullisuuden palauttava metodi. Taikajuoman herkullisuus on sen paino kerrottuna kahdella ja pyöristettynä alaspäin lähimpään kokonaislukuun. Jos Taikajuoma ei ole herkullinen, herkullisuus on lisäksi negatiivinen. Huomaa, että desimaaliluvun muuttaminen kokonaisluvuksi ei tapahdu automaattisesti, vaan se vaatii niin sanotun eksplisiittisen tyyppimuunnoksen. Tällä ohjelmoija ilmoittaa kääntäjälle hyväksyvänsä sen, että muunnoksessa voi kadota tietoa (tässä tapauksessa desimaaleja). Javassa double-tyyppisen desimaaliluvun muuntaminen int-tyyppiseksi kokonaisluvuksi katkaisee desimaaliosan pois (eli pyöristää luvun alaspäin). Tyyppimuunnoksista voit etsiä lisätietoa esimerkiksi hakusanoilla type conversion tai type casting.?: operaattori Javassa on yksi-, kaksi- ja kolmioperandisia operaattoreita. Yksioperandinen operaattori on esimerkiksi ++, kaksioperandinen taas ==. Monimutkaisin operaattori?: taas vaatii kolme operandia. Operaattorin syntaksi on muotoa b? x : y ja se toimii siten, että mikäli ensimmäinen boolean-tyyppinen operandi (tässä b) on true, palautetaan keskimmäisen operandin (tässä x) arvo, muutoin taas jälkimmäinen (tässä y).?:- operaattori on siis tavallaan eräänlainen if-lauseen 4 oikotie, ja sitä käytetään joskus hyvin yksinkertaisten ehtojen siistimiseen. Sitä käyttäessä täytyy varoa, ettei tule tehneeksi koodista epäselvää.

5 Vielä Rosettan kivi -esimerkki. Nämä kaksi lohkoa tekevät täysin saman asian toisessa siihen käytetään kuusi riviä, toisessa yksi. On pitkälti mielipidekysymys, kumpi on selkeämpää. int muuttuja; if (b) { muuttuja = x; } else { muuttuja = y; } int muuttuja = b? x : y; Äskeisessä metodissa voi käyttää?:-operaattoria herkullisuuden ja myrkyllisyyden erottelussa (herkullisuuden positiivinen arvo vs. negatiivinen arvo).?:-operaattorin käyttö ei kuitenkaan tässä tapauksessa ole aivan pakollista. String annatyyppi() Palauttaa Taikajuoman tyypin. String tostring() Luokassa Object määritetyn metodin tostring() uudelleenmäärittely. Metodin tulee palauttaa merkkijono "h n, paino p kg", missä h on joko "herkullinen" tai "myrkyllinen" riippuen Taikajuoman herkullisuudesta, n on Taikajuoman nimi ja p paino. Testaa luokkaa muodostamalla sille pääohjelmametodi, joka luo joitakin erilaisia taikajuomia ja tulostaa ne metodilla System.out.println. Osatehtävä 3: Luokka Puukko Tässä osatehtävässä tarvitset seuraavien uusien asioiden hallintaa: Javan valmiiden luokkien importointi ja käyttö. Satunnaislukujen käyttö. Parametrien hyödyntäminen metodeissa. Seuraavaksi luomme luokan Esine aliluokan Puukko, joka soveltuu vaikkapa olentojen vahingoittamiseen. Jokaisella puukolla on nimen ja painon lisäksi erityinen terävyys-kerroin, joka ilmoittaa, kuinka teräväksi puukko on hiottu eli kuinka hyödyllinen se on. Muodosta luokka Puukko, joka perii luokan Esine. Luokalle määritellään seuraavanlainen attribuutti: 5

6 int teravyys Luku, joka kertoo, kuinka terävä Puukko on. Mikäli terävyys on pieni, ei Puukko ole kovin vaarallinen. Kaikkein vaarallisimmilla taas terävyys on suuri ja niillä saa aikaan todella pahaa jälkeä. Lisäksi luokalla Puukko on seuraavat metodit: Puukko(String nimi, double paino, int teravyys) Luo uuden puukon. Puukon nimeksi asetetaan (yläluokan luontimetodin avulla) nimi ja painoksi paino. Myös teravyys pannaan talteen. int annavoima() Palauttaa puukon voiman. Isompi on parempi, joten voima on puukon paino kerrottuna terävyydellä ja pyöristettynä ylöspäin lähimpään kokonaislukuun. Puukosta ei näe päällepäin, miten voimakas se todella on, joten totutusta poiketen tämä metodi määritellään yksityiseksi. Koska seuraavassa Puukko-luokan metodissa tarvitaan Olento-luokkaa, saatamme sen alkuun tässä välissä. Muodosta luokka Olento. Luokalle määritellään seuraavanlainen metodi (ei siis vielä konstruktoria tai attribuutteja): boolean muutaelinvoimaa(int muutos) Muuttaa olennon elinvoimaa parametrina annetun määrän negatiivinen parametrin arvo siis vähentää elinvoimaa. Tässä vaiheessa meidän tarvitsee vain pystyä kutsumaan tätä metodia testimielessä, joten se pannaan toistaiseksi tulostamaan: "Olennon elinvoiman muutos: n", missä n on annettu muutos. Tulostettuaan näin metodi palauttaa true. Seuraavaksi teemme Puukko-luokkaan seuraavan metodin: void vahingoita(olento uhri) Vahingoittaa parametrina annettua Olento-luokan oliota. Vahinko on satunnainen luku väliltä [1, annavoima()]. Jokaisella välin luvulla on yhtäläinen todennäköisyys tulla valituksi. Huomaa, ettemme tässä metodissa välitä siitä, ettei Olento-luokan muutaelinvoimaa-metodi varsinaisesti tee vielä mitään luotamme siihen, että se myöhemmin täytetään. Satunnaislukujen käytöstä kerrotaan esimerkiksi tässä ohjeessa. 6

7 Testaa luokkaa muodostamalla sille pääohjelmametodi, joka luo joitakin puukkoja ja tulostaa ne metodilla System.out.println. Luo tämän jälkeen olento (olennon luominen onnistuu ilman erikseen määriteltyä konstruktoria!) ja pane puukot vahingoittamaan sitä. Tarkista, että tehty vahinko on sallituissa rajoissa. Java on ystäväsi, sillä se tarjoaa käyttöösi huikean määrän valmiita luokkia, jotka helpottavat joskus erittäin olennaisesti asioiden tekemistä. Java-API-sivuilta näet, mitä kaikkea sinun ei itse tarvitse ohjelmoida, koska joku muu on laatinut sinulle sopivat työkalut valmiiksi. Ensi alkuun Java-API:n luokkien hämmentävä paljous saattaa jopa pelottaa, mutta näissä tehtävissä tarvitsemasi valmiit luokat on pääsääntöisesti kerrottu suoraan sinun on vain selvitettävä, miten niitä käytetään. Kaikki valmiit luokat sijaitsevat jossakin nimetyssä pakkauksessa (engl. package). Pakkausten tarkoituksena on ryhmitellä samaan aihepiiriin liittyviä luokkia yhteen ja tällä tavoin helpottaa niiden löytämistä. Kun otat koodissasi käyttöön jonkin Javan valmiin luokan, sinun on tiedettävä, mistä pakkauksesta se löytyy. Tämän voit helpoimmin selvittää kyseisen luokan Java-API-sivulta. Satunnaislukujen generointiin tarvittava Random-luokka löytyy pakkauksesta java.util, joka sisältää erilaisia pieniä työkaluja, kuten tietorakenteita. Luokka otetaan käyttöön avainsanalla import kirjoittamalla oman luokkatiedostosi alkuun import java.util.random;. Ilman tätä riviä kääntäjä valittaa, ettei ymmärrä, mihin sana Random koodissasi oikein viittaa. Pakkauksen kaikki luokat voi importoida yhdellä kertaa kirjoittamalla import java.util.*, mutta tämä on harvoin perusteltua saati tyylikästä. Jotkin Java-kielen tavallisimmat luokat, kuten Object ja String, on koottu pakkaukseen java.lang. Tämä pakkaus on aina käytössäsi, joten siihen kuuluvia luokkia ei ole tarpeen erikseen importoida. Osatehtävä 4: Metodi luotaikajuoma Tässä osatehtävässä tarvitset seuraavien uusien asioiden hallintaa: Taulukoiden luonti ja käyttö. Apumuuttujien käyttö. Seuraavaksi rakennamme metodin, joka osaa automaattisesti luoda erilaisia taikajuomia. Metodi luo satunnaislukugeneraattorin avulla taikajuomia, jotka ovat erivärisiä sekä erilaisia tyypiltään ja painoltaan. Luodaan ensin luokkaan Taikajuoma muutamia luokkakohtaisia ominaisuusmuuttujia metodin avuksi: String[] VARIT Taulukko, jonka alkioiksi sijoitetaan mahdolliset värit. Värejä voi olla miten monta tahansa kuitenkin vähintään yksi. Käytä taulukon alustajaa (ks. seuraava sivu) ja keksi itse mahdolliset värit. 7

8 String[] TYYPIT Taulukko, jonka alkioiksi sijoitetaan mahdolliset taikajuomien tyypit. Myös tyyppejä on oltava vähintään yksi, eikä ylärajaa ole. Määrittele yllä kuvatut attribuutit siten, että ne ovat muuttumattomia ja käytettävissä ainoastaan luokan Taikajuoma sisältä. Taulukoista Tässä osatehtävässä luodaan ja käytetään taulukoita. Taulukot ovat yksinkertainen mutta hyvin keskeinen esimerkki tietorakenteesta. Ne ovat säiliöitä, joilla on aina tietty tietotyyppi ja tietty koko. Esimerkiksi String-taulukkoon, jonka koko on 5, voidaan sijoittaa viisi merkkijonotyyppistä arvoa. Näitä arvoja sanotaan taulukon alkioiksi, ja ne sijaitsevat "lokeroissa", jotka on numeroitu nollasta alkaen (tässä tapauksessa 0, 1, 2, 3 ja 4). Näitä lokeroiden numeroita kutsutaan taulukon indekseiksi. Taulukon indeksointi alkaa siis aina nollasta, ja viimeinen indeksi on yhtä pienempi kuin taulukon koko. Taulukot, kuten melkein kaikki muukin Javassa, ovat itse asiassa olioita. Merkkijonojen tapaan ne ovat kuitenkin tietynlaisessa erityisasemassa moniin muihin olioihin nähden sikäli, että niitä varten on Java-kieleen määritelty oma erityinen notaationsa. Tämän notaation keskeinen elementti ovat hakasulut, []. Taulukon alkion arvoon pääsee käsiksi panemalla hakasulkujen sisään indeksin: nimitaulukko[2] palauttaa siis nimitaulukko-nimisen taulukon kolmannen alkion. Vastaavasti nimitaulukko[0] = "Milla" sijoittaa taulukon ensimmäiseksi alkioksi merkkijonon Milla. Jokaisessa tähän asti laatimassamme pääohjelmametodissa olemme määritelleet parametrin String[] args. Kyseessä on itse asiassa merkkijonotaulukko, jonka nimi on args. (Jos haluat tietää lisää kyseisen parametrin merkityksestä, lue siitä vaikkapa täältä.) Vastaavasti kokonaislukutaulukon tietotyyppi olisi int[] ja puukkoja sisältävän taulukon Puukko[]. Javassa on kaksi tapaa luoda uusi taulukko. Ensimmäinen on käyttää avainsanaa new kuten luotaessa mitä tahansa muutakin oliota. Esimerkiksi lause String[] nimet = new String[10]; luo uuden merkkijonotaulukon, jonka koko on 10. Taulukko on aluksi tyhjä, eli sen jokaisessa indeksissä on arvo null. (Jos kyseessä olisi kokonais- tai desimaalilukutaulukko, sen jokaisen "lokeron" arvo olisi aluksi nolla.) Toinen tapa on käyttää merkintätapaa, jota kutsutaan taulukon alustajaksi (array initializer): int[] luvut = { 41, 292, -3, 1337 }; Tämä luo paitsi uuden nelialkioisen taulukon, myös asettaa sen alkioille aaltosulkujen sisällä luetellut alkuarvot. Tätä taulukon luontitapaa voidaan käyttää ainoastaan uuden taulukkomuuttujan määrittelyn yhteydessä. Taulukon koko saadaan selville ilmauksesta taulukko.length. (Kyseessä ei siis ole metodi, vaan taulukko-olion julkinen attribuutti.) Koko ei ole taulukon luonnin jälkeen enää muutettavissa, eli jos jossain vaiheessa huomaamme, että tarvitsemmekin suuremman taulukon kuin mitä tulimme alun perin luoneeksi, joudumme tekemään uuden isomman taulukon ja kopioimaan sinne arvot alkuperäisestä, ahtaaksi käyneestä taulukostamme. Taulukoista on kerrottu lisää muun muassa Sunin Java-tutoriaalissa. 8

9 Nyt voimme luoda luokkaan Taikajuoma seuraavan luokkakohtaisen metodin: Taikajuoma luotaikajuoma() Metodi, joka luo ja palauttaa uuden Taikajuoman seuraavien ehtojen mukaisesti: 1. Taikajuoman väri valitaan satunnaisesti VARIT-taulukosta. Kaikilla taulukon alkioilla on yhtäläinen todennäköisyys tulla valituksi. 2. Taikajuoman tyyppi valitaan satunnaisesti TYYPIT-taulukosta. Myös kaikilla tyypeillä on yhtäläinen todennäköisyys tulla valituksi. 3. Taikajuoman paino saadaan kaavalla 2 + n 4, missä n on normaalijakaumasta satunnaisesti valittu luku. 4. Puolet taikajuomista on herkullisia. Huomaa, että herkullisuus on tyyppiä boolean, ja Random-luokassa on juuri tähän soveltuva metodi. Javan valmiissa luokassa Math on matemaattisiin operaatioihin liittyviä metodeita, kuten potenssiin korotus. Osatehtävä 5: Luokka Tynnyri Tässä osatehtävässä tarvitset seuraavien uusien asioiden hallintaa: Todennäköisyys ja satunnaisluvut. Muodosta luokan Esine aliluokka Tynnyri, jolla on seuraava attribuutti: int pyydetytesineet Tieto siitä, montako esinettä tältä Tynnyriltä on pyydetty. Lisäksi luokalla Tynnyri on seuraavat metodit: Tynnyri() Konstruktori luo uuden Tynnyrin. Tynnyrin nimi on aina Peltitynnyri ", ja sen paino on satunnainen luku väliltä [5, 30]. Esine pyydaesine() Metodi luo ja palauttaa uuden esineen. Esine määräytyy seuraavasti: 20 prosentin todennäköisyydellä luodaan uusi Taikajuoma. Käytä Taikajuoman luontiin edellisessä osatehtävässä määriteltyä tapaa. 9

10 60 prosentin todennäköisyydellä luodaan uusi Puukko. Saat itse päättää, miten puukon nimi ja terävyys määräytyvät, kunhan niissä on vaihtelua. Tee ratkaisusta tyylikäs (esimerkkivinkki: edellinen tehtävä). 20 prosentin todennäköisyydellä luodaan uusi Tynnyri. String tostring() Luokassa Object määritetyn metodin tostring() uudelleenmääritys. Metodin tulee palauttaa merkkijono "Poikatynnyri, pyydetyt esineet: n", missä n on Tynnyriltä pyydettyjen esineiden määrä. Testaa luokka muodostamalla sille pääohjelmametodi, joka luo Tynnyrin, käyttää muutaman kerran sen metodia pyydaesine ja tulostaa Tynnyrin ja luodut esineet metodilla System.out.println. Osatehtävä 6: Luokka Olento Tässä osatehtävässä tarvitset seuraavien uusien asioiden hallintaa: Olion luokan tutkiminen instanceof-operaattorilla. Muokkaa luokkaa Olento, jotta sillä olisi ainakin seuraavat attribuutit: String nimi Olennon nimi. int elinvoima Olennon tämänhetkinen elinvoima. Jos elinvoima on nolla tai vähemmän, on olento kuollut. Puukko Puukko Olennon Puukko, jonka avulla se voi taistella muita olentoja vastaan. Määritä taas attribuuttien näkyvyys niin, että niitä voidaan suoraan käsitellä vain tässä luokassa. Luokalla on lisäksi seuraavat, kaikkialla käytettävissä olevat metodit: Olento(String nimi, int elinvoima) Luontimetodi, joka muodostaa uuden olennon, jonka nimi on nimi ja elinvoima on elinvoima. Elinvoiman on oltava alussa vähintään 10 ja se voi alussa olla enintään 300. Jos elinvoimalle yritetään asettaa laiton arvo, korjaa se oikeanlaiseksi. Aluksi olennolla ei ole omaa Puukkoa. String annanimi() Palauttaa olennon nimen. int annaelinvoima() Palauttaa olennon elinvoiman. 10

11 int annaalkuelinvoima() Palauttaa olennon alkuelinvoiman. Olennon alkuelinvoima on se elinvoima, joka sille annettiin luomishetkellä (eli konstruktorissa). boolean onelossa() Palauttaa arvon true, jos olento on elossa ja arvon false, jos olento on kuollut. Olento on elossa, jos elinvoima on positiivinen. boolean muutaelinvoimaa(int muutos) Muuttaa attribuutin elinvoima arvoa lisäämällä siihen parametrin muutos arvon. Elinvoimaa voidaan heikentää antamalla negatiivinen muutos. Muuta aiemmin tehtyä tulostusta niin, että siitä ilmenee muutoksen määrän lisäksi olennon nimi ja elinvoima muutoksen jälkeen. Jos olento kuoli muutoksen seurauksena, tulostetaan vielä tieto tästä. Elinvoima ei voi tämän metodin seurauksena nousta suuremmaksi kuin olennon alkuelinvoima. Jos elinvoimaa yritetään kasvattaa yli alkuelinvoiman, jää olennon elinvoimaksi alkuelinvoima ja metodi palauttaa arvon false. Muutoin palautetaan arvo true. void juo(taikajuoma taikajuoma) Muuttaa olennon elinvoimaa Taikajuoman taikajuoma herkullisuuden verran. (Myrkyllisen Taikajuoman syönti siis vähentää elinvoimaa.) Tulosta myös sopiva kuvaus tapahtumasta. boolean hyokkaa(olento uhri) Hyökkää parametrina annetun uhrin kimppuun puukon voimin. Jos hyökkääjällä ei ole puukkoa, ei metodi tee muuta kuin palauttaa false. Vaikka hyökkääjällä olisi puukko, yritys epäonnistuu 10 prosentin todennäköisyydellä, eikä metodi tällöinkään tee muuta kuin palauttaa false. Muutoin puukko vahingoittaa uhria, menee rikki 25 prosentin todennäköisyydellä (jos puukko menee rikki, olento hylkää sen) ja metodi palauttaa true. Laita metodiin myös tulostus, joka kertoo, mitä tapahtui. void tokkaa(tynnyri tynnyri) Olento tökkää tynnyria ja pyytää siltä uuden esineen. Riippuen siitä, minkä esineen se saa, olento tekee seuraavat toimenpiteet: Jos esine on juotavaksi kelpaava taikajuoma, olento vetää sen huiviinsa. Jos esine on myrkyllinen taikajuoma, olento luulee sitä herkulliseksi ja juo sen todennäköisyydellä h / ( h + 80), missä h on taikajuoman herkullisuuden itseisarvo. Jos esine on puukko, eikä olennolla ennestään ole puukkoa, olento ottaa sen itselleen. Jos esine on uusi tynnyri, olento tökkää saman tien myös sitä. Tulosta myös kuvaus tapahtuneesta. Olion luokan tutkiminen onnistuu operaattorilla instanceof. 11

12 Kun Javassa tehdään laskutoimitus (yhteen-, vähennys-, kerto- tai jakolasku) kahdella Niinpä kokonaisluvulla, jakolasku 1 laskun / 4 tulos ei tuotakaan on niin ikään arvoa aina 0.25, kokonaisluku. vaan katkaisee Kokonaisluvun desimaaliosan ja automaattisesti desimaaliluvun pois, jolloin välisen tulos laskutoimituksen on 0. Laskulausekkeet tulos on sen 1.0 sijaan / desimaaliluku, 4, 1 / 4.0 kuten ja 1.0 / 4.0 tuottavat luonnollisesti sen sijaan myös kaikki kahden halutun desimaaliluvun. lopputuloksen String tostring() Luokassa Object määritetyn metodin tostring() uudelleenmäärittely. Jos olento on elossa, palauttaa merkkijonon "olento x, elinvoima e, aseena s", missä x on olennon nimi, e olennon elinvoima ja s olennolla oleva (mahdollinen) puukko. Jos olennolla ei ole puukkoa, lukee kuvauksessa edellä mainitun sijaan ei asetta. Jos olento on kuollut, palauttaa merkkijonon, joka on muuten sama kuin yllä, mutta joka alkaa sanalla kuollut. Osatehtävä 7: Eeppinen taistelu Tässä osatehtävässä tarvitset seuraavien uusien asioiden hallintaa: Silmukkarakenne while-lauseella. Jakojäännösoperaattori %. Testaa tekemiäsi luokkia muodostamalla luokkaan Olento pääohjelmametodi, joka luo ja käyttää joitain olentoja ja esineitä (taikajuomia, puukkoja ja tynnyreitä) sekä tulostaa ne metodilla System.out.println. Olennot voivat juoda taikajuomia, tökkiä tynnyreitä ja käyttää puukkojaan. Laita lopuksi kaksi olentoa taistelemaan keskenään hyökkäämään toistensa kimppuun vuoronperään, kunnes toinen olennoista on kuollut (tai vaihtoehtoisesti kunnes toisen kunto on laskenut tietyn rajan alle, jos tällainen ratkaisu miellyttää enemmän). Lisäksi joka toisen hyökkäysvuoronsa aluksi kumpikin olento tökkää Tynnyria. Käytä while-lausetta silmukan toteutukseen. Käytä vuorottelun järjestämiseksi jakojäännösoperaattoria %. Lopputoimet Kun olet ohjelmoinut yllä olevat luokat, testannut niiden toiminnan ja olet muuten tyytyväinen ratkaisuusi, voit palauttaa tehtävän. Palautusohjeet ovat omassa dokumentissaan nopassa. 12

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

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

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

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

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

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

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

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

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

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

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

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

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen

Lisätiedot

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

Lisätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

Lisätiedot

16. Javan omat luokat 16.1

16. Javan omat luokat 16.1 16. Javan omat luokat 16.1 Sisällys Johdanto. Object-luokka: tostring-, equals-, clone- ja getclass-metodit. Comparable-rajapinta: compareto-metodi. Vector- ja ArrayList-luokat. 16.2 Javan omat luokat

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Luokat ja oliot. Ville Sundberg

Luokat ja oliot. Ville Sundberg Luokat ja oliot Ville Sundberg 12.9.2007 Maailma on täynnä olioita Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Tietorakenteet (syksy 2013)

Tietorakenteet (syksy 2013) Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

Taulukoiden käsittely Javalla

Taulukoiden käsittely Javalla 1 Taulukoiden käsittely Javalla Mikä taulukko on? Taulukon syntaksi Merkkijonotaulukko Lukutaulukko Taulukon kopiointi 1 Mikä taulukko on? Taulukko on rakenne, minne saadaan talteen usea saman tyyppinen

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

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

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

Lisätiedot

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

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

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

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

Lisätiedot

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

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ä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3 15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

KOHDELUOKAN MÄÄRITTELY

KOHDELUOKAN MÄÄRITTELY KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Taulukot, silmukat ja muut joka koodin pikku veijarit

Taulukot, silmukat ja muut joka koodin pikku veijarit Taulukot, silmukat ja muut joka koodin pikku veijarit Janne Käki 7.9.6 MERKKI liikenne jono METRI para laku MOGARI ATRI psyki buutti ESINE pelottelu ellistäminen runsauden kuono TUNTI SARVI kusi assistentti

Lisätiedot

Java-API, rajapinnat, poikkeukset, UML,...

Java-API, rajapinnat, poikkeukset, UML,... Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3 16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut

Lisätiedot

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

Lisätiedot

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan

Lisätiedot

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1 12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys

Lisätiedot

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko 5 Taulukot Tämän osan sisältö Taulukon esittely ja luonti Taulukon alustaminen Taulukon koko Taulukon käsittely indeksointi peräkkäiskäsittely hajakäsittely harva taulukko Taulukon järjestäminen Kaksiulotteinen

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

Lisätiedot

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) 1(37) PERIYTYMINEN (inheritance) YLILUOKKA (superclass) ALILUOKKA (subclass) A) on käytännöllinen ohjelmointitekniikka = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) B) on käsitteiden

Lisätiedot

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

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma. Välikoe / 20.3 Vastaa neljään (4) tehtävään. Jos vastaat 5:een, 4 huonointa arvostellaan. Kunkin tehtävän vastaus eri konseptille. 1. Pöytätesti Pöytätestaa seuraava ohjelma. Tutki ohjelman toimintaa pöytätestillä

Lisätiedot

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

4. Luokan testaus ja käyttö olion kautta 4.1 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

Lisätiedot

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

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015)

58131 Tietorakenteet ja algoritmit (syksy 2015) 58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin

Lisätiedot

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

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Standardi- ja tietorakenneluokkia Standardi- ja tietorakenneluokkia Javan API, ArrayList Ohjelmointirajapinta (Application Programming Interface, API)

Lisätiedot

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet, kurssikoe Ohjelmoinnin perusteet, kurssikoe 18.6.2014 Kirjoita jokaiseen konseptiin kurssin nimi, kokeen päivämäärä, nimi, TMC-tunnus ja opiskelijanumero tai henkilötunnus. Vastaukset palautetaan tehtäväkohtaisiin

Lisätiedot

Oliot viestivät metodeja kutsuen

Oliot viestivät metodeja kutsuen 6. Metodit 6.1 Sisällys Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit). Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen

Lisätiedot

Luokan muodostimet (Constructors)

Luokan muodostimet (Constructors) Mikä on muodostin? Luokan muodostimet (Constructors) Millaisia muodostimia on? Oletusmuodostin (Default Constructor) Parametrillinen muodostin Kopiointimuodostin (Copy Constructor) this-muuttuja Miten

Lisätiedot

19. Olio-ohjelmointia Javalla 19.1

19. Olio-ohjelmointia Javalla 19.1 19. Olio-ohjelmointia Javalla 19.1 Sisällys Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit

Lisätiedot

Periytyminen (inheritance)

Periytyminen (inheritance) 1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

Lisätiedot

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan soveltamista List-luokan metodeja Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan metodeja List-luokan

Lisätiedot