Javan GUI Scratchaajalle

Samankaltaiset tiedostot
Javan GUI Scratchaajalle

Metodien tekeminen Javalla

Java-kielen perusteita

Listarakenne (ArrayList-luokka)

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

Ohjelmoinnin jatkokurssi, kurssikoe

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

Mikä yhteyssuhde on?

Ohjelmoinnin perusteet, kurssikoe

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

Rajapinta (interface)

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Olio-ohjelmointi Javalla

Java-kielen perusteita

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

public static void main (String [] args)

Javan perusteita. Janne Käki

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

12. Javan toistorakenteet 12.1

Java-kielen perusteet

Luokan sisällä on lista

Taulukoiden käsittely Javalla

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

Java kahdessa tunnissa. Jyry Suvilehto

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

Luokat ja oliot. Ville Sundberg

12. Javan toistorakenteet 12.1

Java-kielen perusteita

11. Javan toistorakenteet 11.1

Lista luokan sisällä

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

13. Loogiset operaatiot 13.1

1 Tehtävän kuvaus ja analysointi

YHTEYSSUHDE (assosiation)

ITKP102 Ohjelmointi 1 (6 op)

Muuttujat ja kontrolli. Ville Sundberg

Tietorakenteet, laskuharjoitus 7,

Taulukot. Jukka Harju, Jukka Juslin

Java-kielen perusteet

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

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

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Periytyminen (inheritance)

13. Loogiset operaatiot 13.1

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

Ehto- ja toistolauseet

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

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

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

Sukelluskeräily. Pelihahmon liikuttaminen. Aarre ja pisteet

1. Omat operaatiot 1.1

Metodien tekeminen Javalla

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

Javan GUI Scratchaajalle

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

20. Javan omat luokat 20.1

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

Ohjelmointi 2, välikoe

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

Interaktiivinen tarinankerronta

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

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

1. Miten tehdään peliin toinen maila?

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

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmointityö 3. Mikko Laamanen

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet, syksy 2006

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

11. Javan valintarakenteet 11.1

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

17. Javan omat luokat 17.1

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

7. Näytölle tulostaminen 7.1

9. Periytyminen Javassa 9.1

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

5. HelloWorld-ohjelma 5.1

Java-kielen perusteet

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

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Ohjelmoinnin perusteet Y Python

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

16. Javan omat luokat 16.1

Tietokannat II -kurssin harjoitustyö

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

Testivetoinen ohjelmistokehitys

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

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

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

Ohjelmistotekniikan menetelmät, koe

Poikkeustenkäsittely

Transkriptio:

Javan GUI Scratchaajalle Kertausta Javan perusteista Java-luokan muotoilu public class Kissa { private String nimi; public Kissa(String annettunimi) { this.nimi = annettunimi; yksi class = yksi hahmo = yksi tiedosto hahmon teko-ohje public void mauu() { System.out.println( Mau. ); public void sanonimi() { System.out.println( Mau~u! = + this.nimi); Muuttujien teko public class Ohjelma { public static void main(string[] args) { Kissa aatu = new Kissa( Aatu ); ohjelmassa saa olla vain yksi main = vihreä lippu lista määritettyjä komentoja = metodeja int double String kokonaisluku desimaaliluku teksti boolean totuusarvo (totta / epätotta) int luku = 3; <-> millainen mikä = mitä String nimi = Aatu ; Scratchin ei tarvinnut tietää mitä muuttujaan laitettiin, Javan tarvitsee. Jos muuttuja pitää muistaa komennon/metodin ulkopuolella, pitää se määrittää myös esim. henkilökohtaiseksi. ~public private private int suunta = 90; Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 1 / 8

Olioiden teko Scratchin uusi ( =new ) klooni Kissa aatukissa = new Kissa( Aatu ); Myös oliot ovat public/private -määriteltyjä, kun ne ovat komennon/metodin ulkopuolella. Esimerkiksi: public class Tamagotchi { private Kissa herttuatar; Olio on luokan (class) perusteella tehty klooni. public Tamagotchi() { this.herttuatar = new Kissa( Herttuatar ); Scratch-termeillä: hahmo = luokka klooni = olio Tehtäviä Tehdään oravapeli. Pelissä orava keräilee pähkinöitä. Osan niistä se voi istuttaa ja toiset säilöä. Istutetut tuottavat uusia pähkinöitä, mutta ne saattaa myös syödä joku toinen orava. Oravan tarvitsee myös itse syödä yksi pähkinä päivittäin. Tehtävä: Orava_1 Tee uusi projekti, joka on Java Application. Project Name voi olla Oravapeli. Anna projektin luoda myös Main Class sen nimisenä kuin mitä Netbeans ehdottaa. Tee projektiin tämän jälkeen uusi luokka, jonka class name on Orava. Tehtävä: Orava_2 Ohjelmoi Orava-luokalle sen henkilökohtainen muisti ja rakennusohje eli konstruktori. public class Orava { private ; public ( annetutpahkinat) { this. = annetutpahkinat; Vertaa tyhjiä kohtia aiempaan kissa-esimerkkiin. Kissalla oli privaatti muisti nimi, tee oravalle sen sijaan numeromuuttuja: pahkinoitavarastossa. Täydennä konstruktoriin, että annetutpahkinat tallennetaan oravan henkilökohtaiseen muistiin. Metodi = komento Scratchissa metodeita ovat: ja Metodi voi olla: public private julkinen, kaikille hahmoille yksityinen, vain kyseiselle hahmolle Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 2 / 8

Metodin muotoilu Metodin vastauksena saa tällaisen arvon. Metodin nimi. public class Kissa { Taustatiedot metodin käyttöön. public int metsastahiiria(int hiiria) { System.out.println( Kissa lähtee ulos metsälle. ); System.out.println( Hiiriä on + hiiria +. ); return hiiria/2; Vastauksen palautus. Jos vastaus on void, return-komentoa ei tarvitse olla tai se on return; Scratchissa ei ole metodia, joka voisi palauttaa ( =return ) vastausta. Tehtävä: Orava_3 Tee Oravalle komento public void kerrotilanne(), joka toimii seuraavasti: Metodin/komennon käyttö Metodia voi käyttää vaikkapa näin toisen komennon aikana: public static void main(string[] args) { Kissa aatu = new Kissa( Aatu ); aatu.sanonimi(); Scanner kyselija = new Scanner(System.in); System.out.println( Paljonko hiiriä on? ); int hiiria = Integer.parseInt( kyselija.nextline() ); int napattu = aatu.metsastahiiria(hiiria); System.out.println( Hiiriä napattiin: + napattu); Huom! Jos metodi ei ole samassa luokassa kuin mistä sitä kutsutaan, metodille pitää antaa myös tekijä. Esimerkiksi äskeisessä ohjelmassa komennettiin aatua: aatu.sanonimi(); Tehtävä: Orava_4 Kirjoita Oravapeli-luokkaan main-metodiin (eli vihreän lipun alle) ensin komento luoda Orava-klooni esim. neljällä pähkinällä: new Orava(4); ja anna kloonille sitten komento kertoa tilanne. (Ks. miten äsken kutsuttiin metodia sanonimi().) Huomaa, että oravalle ei voi antaa komentoa, jos ohjelma ei uuden oravan luonnin jälkeen muista minne se sen sijoitti. Tallenna siis uusi orava muuttujaan, kuten äsken materiaalissa tallennettiin uusi kissa muuttujaan aatu. Testaa, että peli käynnistyessään käskee oravaa kertomaan tilanteensa ja orava vastaa. Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 3 / 8

Jossittelut if (syli == true) { System.out.println( Hrrrr. ); if (ruokaa < 10) { System.out.println( Nau? ); else if (ruokaa < 20) { System.out.println( Hrrrr. ); else { System.out.println( Kurrrrr. Kurrrrr. ); Javassa väliin voi laittaa myös else if -vaihtoehtoja, jos jokin aiemmista väitteistä ei vaikka ole vielä ollut totta. == <, <= >, >=!= &&! onko samat pienempi suurempi onko eri ja tai ei Sisennykset { -sulut kertovat esimerkiksi: - mikä kaikki kuuluu hahmon koodeihin - mikä kaikki kuuluu komentoon - mikä kaikki kuuluu jos- tai ikuisesti-komennon sisään Scratch-sisennys Vertaa sisennyksiä ja { -sulkuja Scratchiin: while (true) { if (pisteet == 0) { pisteet = 10; else { pisteet = pisteet + 1; Java-sisennys Tehtävä: Orava_5 Kirjoita oravalle (Orava-luokka eli sen tiedostoon) uusi public -komento. { esim. if (!syli == true) { { { Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 4 / 8

Tehtävä: Orava_6 Tarvitset uuden pahkinoitamaassa -muuttujan, jotta orava voi hoitaa puutarhaansa. Muuttuja voi olla private, jolloin muut oravat eivät voi suoraan käydä varkaissa. Kirjoita tämä muuttuja sen rivin jälkeen, jolla määrittelit private pahkinoitavarastossa - muuttujan. Määritä, että pähkinöitä on maassa aluksi 0 (kpl). Tee oravalle seuraavat metodit: import Scanner Jos Scratch osaisi importata, tällainen komento toisi java-käyttäjän util-pelistä Scanner-hahmon käytettäväksi omaan peliisi. import java.util.scanner; public class Kissanhoitaja { private Scanner lukulaite = new Scanner(System.in); public Kissanhoitaja() { Tällaista tyhjää hahmon teko-ohjetta ei oikeastaan tarvitse kirjoittaa. public void tulkitsekissaa() { System.out.println( Sano kissa jotain. ); String vastaus = lukulaite.nextline(); System.out.println( Kyllä se voi ihan: + vastaus); public int montakokissaa() { System.out.println( Montako kissaa? ); int maara = Integer.parseInt( lukulaite.nextline() ); return maara; Kannattaa esittää ennen skannausta kysymys, että pelaaja älyää vastata. Scanner nextline Integer parseint skanneri, lukulaite (lue) seuraava rivi kokonaisluku jäsennä kokonaisluku, parsi kasaan luku Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 5 / 8

Toistot = silmukat for (int i=1; i<=10; i++) { System.out.println( Boink! ); i on vähän niin kuin hyppynarun sisällä pomppiva ihminen, joka laskee hyppyjä. Kun hyppyjä on tarpeeksi, voi lopettaa. while (true) { System.out.println( Hrrrr. ); while:n ( ) -sulkujen sisälle voisi laittaa myös testin, silloin ohjelma sanoisi Hrrrr. kunnes testi ei olisi enää totta. Toistojen poikkeuksellinen käsittely: break; continue; pysäyttää toiston jatkaa toiston seuraavalle kierrokselle Tehtävä: Orava_7 Pelissä ei vielä käytetä äsken tehtyjä metodeja. Luo main -metodissa Oravan luonnin jälkeen myös Scanner -olio. Kirjoita sitten Oravapeli-luokkaan seuraavanlainen oravan päivän työjärjestys. Muista, että metodi-komennot (lähetä- ja lohkopalikat) pitää antaa oravalle, eli komento pitää kirjoittaa tyyliin: tekijä.komento(); Jos oravasi nimi on esimerkiksi kurre, komento olisi kurre.poimipahkinat(); Kuten näet pelaajalta pitää kysyä myös istutettavien pähkinöiden määrä. Tähän tarvitset ohjeessa äsken esiintynyttä Scannerin lukuja lukevaa komentoa. Uutta: Testaa peliä. Noppa Noppaa ei tarvitse suunnitella itse vaan se löytyy lainattavasta java-kirjastosta: import java.util.random; Java-kirjaston ollessa importattuna ( import = tuoda, tuontitavara ) nopasta voi tehdä itselleen kopion ja kopiolle voi sitten antaa käskyn antaa satunnainen numero: Random noppa = new Random(); int tulos = noppa.nextint(6) + 1; Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 6 / 8

Tehtävä: Orava_8 Nyt peliin tarvitaan vielä vähän riskejä. Yön aikana toiset otukset saattavat löytää istutetut pähkinät. Orava-luokka on toistaiseksi ollut vastuussa pähkinöistä, joten kirjoitetaan ohje varastapauksiin reagoimisesta sille. Lisätään myös Oravapeli-luokkaan päivän päätteeksi while(true) -silmukan loppuun: Tehtävä: Orava_9 Peli halutaan kenties myös päättää, jos oravan varastot eivät riitä. Lisää syopahkinametodiin System.exit(0), jos ruokaa ei ollut jäljellä. Bonus: Orava_10 Olemme tehneet Orava-luokan (class) eli ohjeen oravan luontiin. Samalla ohjeella voisi tehdä vaikka kokonaisen metsällisen oravia. Tehdään nyt kaksi. Jäsennellään ensin hieman Oravapeliä, jotta sen pituus ei räjähdä, kun kaikki komennot pitää antaa kahdelle oravalle. Tee Oravapeliin metodi: private static void suoritapaiva(orava oravavuorossa, Scanner kuuntelija) { ja siirrä siihen kaikki while-silmukan komennot. Koska metodissa orava tunnetaan nimellä oravavuorossa niin korjaa se myös siirrettyihin metodikutsuihin kuten: oravavuorossa.poimipahkinat(); Bonus: Orava_11 Kirjoita while-silmukkaan komento suoritapaiva(orava1, kuuntelija); Korjaa nimien orava1 ja kuuntelija tilalle ne nimet, jotka olet itse antanut ensimmäiselle Orava-oliolle ja Scanner-oliolle. Testaa, että ohjelma toimii yhä. Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 7 / 8

Bonus: Orava_12 Luo toinen Orava-olio sen rivin jälkeen kuin millä luotiin ensimmäinen orava. Anna tälle eri nimi. while-silmukan sisällä (ks. kuva) tulosta aina ensin kumman oravan vuoro on, suorita sitten päivän komennot ja lopuksi tulosta yksi tyhjä rivi. Toista sama toiselle oravalle. Tyhjät rivit auttavat pelaajia erottamaan rivinsä toisistaan. Lisenssi: CC BY-NC-SA Tekijänä: Jenna Tuominen 8 / 8