Ohjelmointi 1: Olipa kerran olio
|
|
- Onni Uotila
- 7 vuotta sitten
- Katselukertoja:
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 Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
LisätiedotOhjelmassa 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ätiedot20. 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ätiedotSisä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ätiedotJavan 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ätiedotOhjelmointitaito (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ätiedot7. 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ätiedotOlio-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ätiedotSisä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ätiedotYleistä. 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ätiedotSisä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ätiedotInformaatioteknologian 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ätiedot17. 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ätiedotOhjelmoinnin 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ätiedotAlkuarvot 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ätiedotLuokka 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ätiedotJava-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ätiedotJava-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ätiedotHarjoitus 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ätiedotJAVA-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ätiedot812341A 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ätiedoton 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ätiedotOhjelmointitaito (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ätiedotOpintojakso 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ätiedotTaulukot. 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ätiedot9. 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ätiedotJavan 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ätiedotTietorakenteet. 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ätiedot16. 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ätiedotOhjelmointi 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ätiedot17. 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ätiedotLuokat 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ätiedotTaulukot. 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ätiedotMetodit. 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ätiedotMetodien 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ätiedotTietorakenteet (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ätiedotMikä 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ätiedotJava-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ätiedotTaulukoiden 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ätiedotITKP102 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ätiedotSisä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ätiedotListarakenne (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ätiedot1. 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ätiedotOhjelmoinnin 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ätiedotKompositio. 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ätiedot1 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ätiedotSisä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ätiedotSisä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ätiedotSisä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ätiedotLohkot. 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ätiedotITKP102 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ätiedotVertailulauseet. 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ätiedot14. 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ätiedotKOHDELUOKAN 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ätiedotSisä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ätiedotJava 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ätiedotJava-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ätiedotSisä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ätiedot9. 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ätiedotSisä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ätiedot15. 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ätiedotTaulukot, 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ätiedotJava-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ätiedotITKP102 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ätiedotLohkot. 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ätiedot2. 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ätiedot15. 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ätiedotKää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ätiedotTietorakenteet 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ätiedotAalto 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ätiedot12. 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ätiedotSisä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ätiedot14. 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ätiedotRajapinta (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ätiedotTietojen 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ätiedotTaulukot. 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ätiedotITKP102 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ätiedotA) 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ätiedotOhjelmointi 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ätiedot4. 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ätiedotSisä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ätiedotOhjelmoinnin 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ätiedotOhjelmointi 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ätiedot58131 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ätiedotOhjelmoinnin 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ätiedotOpintojakso 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ätiedot8. 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ätiedotOhjelmoinnin 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ätiedotOperaattoreiden 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ätiedotITKP102 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ätiedotOpintojakso 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ätiedotOhjelmoinnin 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ätiedotOliot 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ätiedotLuokan muodostimet (Constructors)
Mikä on muodostin? Luokan muodostimet (Constructors) Millaisia muodostimia on? Oletusmuodostin (Default Constructor) Parametrillinen muodostin Kopiointimuodostin (Copy Constructor) this-muuttuja Miten
Lisätiedot19. 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ätiedotPeriytyminen (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ätiedot815338A 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ätiedotOhjelmoinnin 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ätiedotSisä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ätiedotList-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