Olio-ohjelmoinnin perusteita Java-kielellä



Samankaltaiset tiedostot
Java-kielen perusteet

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

Java-kielen perusteet

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

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

Java-kielen perusteita

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

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

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

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

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

Java-kielen perusteita

Taulukot. Jukka Harju, Jukka Juslin

7. Näytölle tulostaminen 7.1

20. Javan omat luokat 20.1

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

Python-ohjelmointi Harjoitus 2

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

P e d a c o d e ohjelmointikoulutus verkossa

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

KAAVAT. Sisällysluettelo

Ohjelmoinnin perusteet Y Python

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

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

Ehto- ja toistolauseet

Ohjelmoinnin perusteet Y Python

17. Javan omat luokat 17.1

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Kielioppia: toisin kuin Javassa

12. Javan toistorakenteet 12.1

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

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

5. HelloWorld-ohjelma 5.1

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmoinnin perusteet Y Python

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

Johdatus Ohjelmointiin

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

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

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

16. Ohjelmoinnin tekniikkaa 16.1

13. Loogiset operaatiot 13.1

11. Javan valintarakenteet 11.1

Ohjelmoinnin perusteet, syksy 2006

1. Omat operaatiot 1.1

ITKP102 Ohjelmointi 1 (6 op)

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

11. Javan toistorakenteet 11.1

Ohjelmoinnin perusteet Y Python

17. Javan omat luokat 17.1

12. Javan toistorakenteet 12.1

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

14. Hyvä ohjelmointitapa 14.1

Ohjelmoinnin peruskurssi Y1

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Ohjelmoinnin perusteet Y Python

Metodien tekeminen Javalla

11. Javan valintarakenteet 11.1

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

11/20: Konepelti auki

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

811120P Diskreetit rakenteet

Ohjelmoinnin jatkokurssi, kurssikoe

16. Ohjelmoinnin tekniikkaa 16.1

Javan perusteita. Janne Käki

5. HelloWorld-ohjelma 5.1

13. Hyvä ohjelmointitapa (osa 1) 13.1

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

3. Muuttujat ja operaatiot 3.1

Harjoitustyö: virtuaalikone

811120P Diskreetit rakenteet

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Java-kielen perusteet

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

9. Periytyminen Javassa 9.1

Ohjelmointi 2 / 2010 Välikoe / 26.3

7/20: Paketti kasassa ensimmäistä kertaa

Ohjelmoinnin peruskurssi Y1

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

6. Muuttujat ja Java 6.1

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

4. Lausekielinen ohjelmointi 4.1

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Ohjelmoinnin peruskurssi Y1

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Ohjelmoinnin peruskurssi Y1

Transkriptio:

Java perusteet Sivu 1(146) Sisältö Olio-ohjelmoinnin perusteita Java-kielellä Sisällysluettelo Olio-ohjelmoinnin perusteita Java-kielellä...1 Sisällysluettelo...1 Opintojakson sisältö pääkohdittain...8 Edeltävät opinnot...8 Opintojakson tavoitteet...8 Oppimateriaali...8 Opetusmuodot...9 Java-ohjelmoijan työvälineet...10 IDE-sovelluskehittimet...10 NetBeans 5.5...11 Ikkunan osat...11 Asetukset...11 Projektin luonti...11 Luokan luominen...12 Avustavia toimintoja...12 Komentoriviargumentit...12 Uuden luokan määrittäminen käynnistäväksi eli pääluokaksi (main)...13 Virheiden jäljitys eli debuggaus...13 Ohjelma perusosat...14 Yleistä Java-kielestä...14 Yleiset ohjelman perusosat...14 Kielioppi eli syntaksi...14 Java-kielen oppimateriaali...15 Tunnisteet...15 Nimeämiskäytäntöjä...15 Varatut sanat...15 Kommentit...16 Esimerkkejä...16 Ohjelman perusosat, harjoituksia...17 Harjoitus 1...17 Harjoitus 2...17 Tieto muistissa...18 Muistipaikat...18 Tietotyypit...18 Bitit ja tavut...18 Luvut...19 Merkkitietotyyppi...20 Totuusarvotietotyyppi...20 Rakenteiset tietotyypit...20 Vakiot (literaalit)...20 Kokonaislukuvakiot...20 Liukulukuvakiot...21 Merkkivakiot...21 Merkkijonovakiot...22

Java perusteet Sivu 2(146) Sisältö Erikoismerkit...22 Missä vakioita on?...23 Nimetyt vakiot...23 Muuttujat...25 Muuttujien alustus...25 Tietomuodon muuntaminen (konversio)...25 Numeerisen tietotyypin konversio (cast-konversio, castaus )...26 Lukujen muotoilu...26 Esimerkkiohjelma ympyrän ala...26 Tieto muistissa, harjoituksia...28 Harjoitus 1...28 Harjoitus 2...28 Harjoitus 3...28 Lausekkeet, operaattorit ja operandit...29 Lauseke...29 Operaattorit...29 Operandit...30 Sijoitusoperaattorit...30 Aritmeettiset operaattorit...30 Vertailuoperaattorit...31 Loogiset operaattorit...32 Muut operaattorit...32 Lausekkeet, operaattorit ja operandit, harjoituksia...33 Harjoitus 1...33 Harjoitus 2...33 Harjoitus 3...33 Harjoitus 4...33 Lauseet...34 Lause...34 Ohjausrakenteet...34 Peräkkäisrakenne...35 Valintarakenne...35 if-lause...35 switch -case -lausepari...36 Toistorakenne eli silmukat, loopit...36 Lukumääräinen toisto for...37 Alkuehtoinen toisto while...38 Loppuehtoinen toisto do-while...38 Lauselohkot...39 Hyppy- ja haarautumislauseet...39 Lauseet, harjoituksia...41 Harjoitus 1...41 Harjoitus 2...41 Harjoitus 3...41 Harjoitus 4...41 Harjoitus 5...41 Harjoitus 6...41 Olio-ohjelmoinnin perusteita...42 Mistä oliokielellä ohjelmoitu ohjelma koostuu?...42 Luokat ja oliot...42

Java perusteet Sivu 3(146) Sisältö Ominaisuudet ja muuttujat...43 Metodit...43 Valmiiden luokkien käyttäminen...43 Muodostimet...43 Viittaukset...44 Mikä viittaus (reference) on?...44 Viittaustyypit...44 Alustamaton viittaus...44 Viittausesimerkki...44 Missä oliot ovat?...45 Esimerkkiluokka 1...45 Esimerkkiluokka 2...46 Esimerkkiluokka 3...46 Viittausten asettaminen...47 Merkkijono-olioiden sisällön vertailu...47 Luokat ja oliot, harjoituksia...49 Harjoitus 1: API-luokat...49 Harjoitus 2...49 Harjoitus 3...49 Harjoitus 4...50 Lisäharjoitus 5...50 Lisäharjoitus 6...51 Merkkijonot...52 Merkkijonot Java-kielessä...52 String-luokka...52 Merkkijonojen yhdistely...53 Tärkeimpiä merkkijonometodeita...53 Merkkijonojen vertailusta...53 Konversiot...54 StringBuffer-luokka...54 Esimerkkiohjelma...54 Merkkijonot, harjoituksia...56 Harjoitus 1...56 Harjoitus 2...56 Harjoitus 3...56 Tehtävä 3.1...56 Tehtävä 3.2...56 Tehtävä 3.3...57 Lisätehtävä 3.4...57 Lisäharjoitus 4...57 Lisäharjoitus 5...58 Taulukot...59 Rakenteisia tietotyyppejä...59 Taulukko...59 Taulukon määrittely ja alustus...59 Indeksit...60 Taulukkoesimerkki 1...60 Taulukkoesimerkki 2...61 Taulukon koko...61 Moniulotteiset taulukot...61

Java perusteet Sivu 4(146) Sisältö Taulukon kopioiminen...63 Taulukko argumenttina...64 Komentoriviargumentit taulukkona...64 Taulukot, harjoituksia...65 Harjoitus 1...65 Tehtävä 1.1...65 Tehtävä 1.2...65 Tehtävä 1.3...65 Tehtävä 1.4...65 Harjoitus 2...65 Tehtävä 2.1...65 Tehtävä 2.2...65 Tehtävä 2.3...65 Harjoitus 3...66 Harjoitus 4...66 Harjoitus 5...66 Lisäharjoitus 6...66 Lisäharjoitus 7...67 Vektorit ja muut kokoelmat...68 Mikä kokoelma on?...68 Listat ja joukot...68 Vector...69 Vektoriesimerkki 1...69 Vektoriolion muodostaminen...70 Elementtien lisäys vektoriin...70 Vektorin olioiden lukumäärä...70 Onko olio vektorissa?...71 Tietyssä paikassa oleva olio...71 Elementin korvaaminen toisella...71 Elementtien järjestäminen...72 Binäärihaku...72 Viittausten tyhjentäminen...72 Vektoriesimerkki 2...72 TreeMap luokka...74 TreeMap-esimerkki...74 Elementtien lisäys...76 Haku avaimella...76 Kokoelman läpikäynti...76 Elementin poistaminen...77 Kokoelmat, harjoituksia...78 Harjoitus 1...78 Harjoitus 2...78 Tehtävä 2.1...78 Tehtävä 2.2...79 Lisätehtävä 2.3...79 Lisätehtävä 2.4...79 Harjoitus 3...80 Tehtävä 3.1...80 Lisätehtävä 3.2...81 Lisätehtävä 3.3...81

Java perusteet Sivu 5(146) Sisältö Lisäharjoitus 3.4...81 Aliohjelmat...82 Ohjelman jakaminen osiin...82 Ohjelmamoduulit...82 Pääohjelma...82 Aliohjelma...83 Aliohjelmatyypit...83 Metodit...84 Metodin otsikko...84 Parametrit ja argumentit...84 Olio argumenttina...85 Argumenttien arvojen muuttaminen...86 Metodin runko...86 Metodien kutsuminen (käyttäminen)...87 Metodien käyttäminen proseduurien tavoin...87 Metodien järjestys lähdeohjelmassa...87 Esimerkki itse kirjoitetusta metodista...87 Aliohjelmat, harjoituksia...89 Harjoitus 1...89 Harjoitus 2...89 Harjoitus 3...89 Lisäharjoitus 4...90 Lisäharjoitus 5...90 Poikkeukset...91 Mitä poikkeukset ovat?...91 Poikkeuskäsittelyn lauseet...91 Esimerkki poikkeuskäsittelystä...92 Joka tapauksessa suoritettavat lauseet (finally)...93 Poikkeukset, harjoituksia...94 Harjoitus 1...94 Harjoitus 2...94 Lisäharjoitus 3...94 Luokat ja oliot...95 Luokka...95 Uuden luokan määrittely...95 Käytännön työohjeita...95 Luokan esittely...95 Luokan määrittely...96 Olio- ja luokkakohtaiset muuttujat...98 Oliokohtaiset muuttujat...98 Luokka(kohtaiset)muuttujat...99 Luokkakohtaiset vakiot...99 Muodostimet...99 Muodostimien määrittely...100 Muodostimien käyttäminen...100 Ylimääritys - Overloading methods...101 Olio- ja luokkakohtaiset metodit...101 Oliokohtaiset metodit...101 Luokkakohtaiset metodit...101 Tiedon kätkeminen eli kapselointi...102

Java perusteet Sivu 6(146) Sisältö Luku- ja kirjoitusmetodit...102 Saantimetodit (lukumetodit)...102 Asetusmetodit (kirjoitusmetodit)...103 Metodien kutsuminen olioviittauksen avulla...103 Esimerkkiohjelma 2...104 Valmiit eli API luokat...105 Luokat ja oliot, harjoituksia...106 Harjoitus 1: API-luokat...106 Harjoitus 2...106 Harjoitus 3...106 Harjoitus 4...107 Lisäharjoitus 5...107 Lisäharjoitus 6...107 Pakkaukset...109 Saanti- eli suojausmääreet...109 Nimiavaruus...109 Pakkauksen määrittely lähdeohjelmassa...110 Nimetön pakkaus...110 Luokkien sisällyttäminen käännökseen...110 API-luokkien pakkaukset...111 Mistä kääntäjä löytää pakkauksen?...111 Classpath...111 Luokkien hakujärjestys...112 Periytyminen...113 Perusteita...113 Final-luokat...113 Esimerkki luokan periytymisestä...114 Object-luokka...115 Mitä periytyy?...115 Muodostimet...116 Uudet jäsenet...116 Ylikirjoittaminen eli peittäminen - Override...117 Abstrakti luokka...117 Sisäluokka (Inner Class)...118 Liittymä (interface)...118 Pysyvät oliot (Persistent objects) ja serialisointi...119 Periytyminen, harjoituksia...120 Harjoitus 1...120 Harjoitus 2...120 Harjoitus 3...120 Harjoitus 4...121 Liittymät (interface)...122 Käyttötarkoitus...122 Liittymän määrittely...122 Liittymän käyttäminen...122 Esimerkki API kirjastoon kuuluvan liittymän käytöstä...123 Tiedostot ja sarjoittaminen...125 Tiedostot Javassa...125 Merkkivirrat...126 Binäärivirrat...126

Java perusteet Sivu 7(146) Sisältö Puskurointi...126 Näppäimistön lukeminen...126 Perinteisten levytiedostojen käsittely...127 Rivien lukeminen tekstitiedostosta...128 Tietueiden käsittely tekstimuodossa...129 Rivien kirjoittaminen tekstitiedostoon...130 Java ja HTML...131 HTML-esimerkki 1...131 HTML-esimerkki 2...132 Dynaamisen HTML-sivun esimerkki...133 Perustietotyyppien lukeminen ja kirjoittaminen...136 Esimerkki tekstitiedoston kopioinnista...136 Olioiden sarjoittaminen...137 Tiedoston loppumisen havaitseminen sarjoituksessa...140 Oliotaulukon sarjoittaminen...140 Tiedoston loppumisen testaaminen sarjoituksessa...140 Tiedostot, harjoituksia...142 Harjoitus 1...142 Tehtävä 1.1...142 Tehtävä 1.2...142 Lisätehtävä 1.3...142 Harjoitus 2...142 Lisäharjoitus 3...142 Tehtävä 3.1...143 Tehtävä 3.2...143 Tehtävä 3.3...143 Tehtävä 3.4...143 Java-ohjelmat tuotantokäytössä...144 Sovelluksen jakelu...144 JAR-tiedosto...144 Manifest-tiedosto...144 Mitä tiedostoja ja missä...145 Luokan käynnistys...145 Käynnistyksen helpottaminen...146 Jakelun suunnittelu...146

Java perusteet Sivu 8(146) Sisältö Opintojakson sisältö pääkohdittain Johdanto tietojenkäsittelyyn Ohjelmistotuotanto Java-ohjelmoijan työvälineet Ohjelman perusosat Tieto muistissa Lausekkeet, operaattorit ja operandit Lauseet Olio-ohjelmoinnin perusteita Merkkijonot Taulukot Aliohjelmat Poikkeukset Luokat ja oliot Pakkaukset Periytyminen Liittymät Tiedostot ja sarjoittaminen Kokoelmat Java-ohjelmat tuotantokäytössä Edeltävät opinnot Tämän opintojakson menetyksellinen suorittaminen ei välttämättä edellytä perustietoja ohjelmoinnista, mutta jonkin ohjelmointikielen perusteiden ja olio-ohjelmoinnin peruskäsitteiden tuntemisesta on hyötyä. Opintojakson tavoitteet Opintojakson tavoitteena on antaa opiskelijalle perusvalmiudet ohjelmoinnin ymmärtämiseen ja osaamiseen. Toisena tavoitteena on antaa perusosaaminen Java-kielellä ohjelmointiin. Oppimateriaali The Java Tutorial http://java.sun.com/docs/books/tutorial/ on koostesivu Sun-yhtiön erilaisista Java-oppimateriaaleista, jossa linkki Learning the Java Language vie Javaperuskielen oppimateriaalisivustoon. Tästä oppimateriaalista käytetään tässä sivustossa myöhemmin nimitystä Sunin oppimateriaali. Jokaisen asiakokonaisuuden lopussa on tehtäviä ja kysymyksiä sekä niiden vastaukset. Näitä voi käyttää itseopiskelumateriaalina. Osoitteesta http://java.sun.com/docs/books/tutorial/information/download.html saat noudetuksi edellä mainitun dokumentaation omalle koneellesi, jollin Internet-yhteyttä ei tarvitse pitää koko ajan avoinna Javan API-luokkien (API = Application Programming Interface) dokumentaation kotisivu on http://java.sun.com/reference/api/. Koska versiot vaihtuvat melko tiheästi, on sieltä linkit jokaiseen eri version dokumentaatioihin.

Java-artikkelisarja http://javaboutique.internet.com/articles/itj/ Suomenkielisiä oppikirjoja (tässä vain joitakin hyllystä poimintoja): Java perusteet Sivu 9(146) Sisältö Cay S. Horstmann & Gary Cornell: Inside Java 2, Oy Edita Ab IT Press, ISBN 951-826- 024-9 (syvällisiin yksityiskohtiin menevä kirja, jossa on myös vihjeitä C++- ja Visual Basic -ohjelmoijille) Juha Peltomäki - Pekka Malmirae: Java-ohjelmoinnin Peruskirja, Teknolit Oy, ISBN 951-846-038-8 Mika Vesterholm - Jorma Kyyppö: Java Ohjelmointi Pro Training, Satku.fi, ISBN 952-14- 0382-9 (erityisen hyvä tietokantaosuus) Nachimovsky - Myers: Inside Java ja XML, IT Press 2002, ISBN 951-826-284-5 (järeä hajautettujen J2EE sovellusten rakennusopas) Niskanen - Kontio - Vuorimaa: Inside Enterprise Java, IT Press 2001, ISBN 951-826-239-X (Koko skaala, alkaa perusteista ja päättyy J2EE hajautettuihin sovelluksiin) Loputon tietolähde on tietenkin Internet, josta kannattaa hakea sekä suomen- että englanninkielisillä hakusanoilla, esimerkiksi java free pdf tuottaa hyviä tuloksia. Opetusmuodot Opetusmuotona on aluksi kuhunkin aihekokonaisuuteen liittyvä lyhyt luento. Oppiminen tapahtuu kuitenkin pääasiassa harjoitusten avulla. Lisäksi opiskelijoita ohjataan hakemaan itsenäisesti lisätietoja, esimerkkejä ja sovelluksia opintojakson aiheisiin Internetistä. Oppimateriaalin tekijä: Matti Jaakkola, Lahden kauppaoppilaitos 2003, päivitys Koulutuskeskus Salpaus 2007 E-mail etunimi.sukunimi@salpaus.fi

Java-ohjelmoijan työvälineet Java perusteet Sivu 10(146) Työvälineet Java-ohjelmoijalla on valittavanaan joukko erilaisia ja eri tasoisia ohjelmointityövälineitä. Sunin perinteinen työvälineistö oli Java Developer's Kit eli JDK. Tämä välineistö koostuu joukosta erillisiä ohjelmia, jotka ovat komentoperustaisia. Java SE Development Kit tunnetaan nykyisin myös nimellä JDK (SE = standard edition). Java Runtime Environment (JRE) taas tarkoittaa loppukäyttäjän koneella välttämätöntä ajoympäristöä, joka sisältää mm. JVM eli java virtuaalikoneen. Tällä hetkellä (2007) Sun tarjoaa erilaisia kehitysalustoja mm: Java Platform, Enterprise Hajautetun komponenttipohjaisen kehitysalustan sisältävä Edition (Java EE) paketti. Web pohjaisten palveluiden tuki- ja kehityökalut (SDK). Java Platform, Standard Edition Ohjelmointiympäristö sovelluskehitykseen työasema- ja (Java SE) palvelinympäristöön. Toimii myös alustana Java Platform, Enterprise Edition (Java EE) ja Java Web Services palveluille. Lisäksi tarjolla on Java ME (Micro Edition) sulautettuja ympäristöjä kuten älykkäitä laitteita, kännyköitä ja automatisoituja kuljetuslaitteita (telematics) varten, Java Card Technology älykorttikäyttöön ja JavaFX nopeaan loppukäyttäjäsovellusten kehitykseen. Ajankohtaisen tilanteen välineiden osalta saa selville mm. osoitteista www.sun.com ja www.netbeans.org. IDE-sovelluskehittimet Erillisten ohjelmoijan työvälineohjelmien sijaan useimmat ohjelmoijat käyttävät nykyisin yleensä ns. integroituja työvälineohjelmia, joissa on useita edellä mainittuja toimintoja samassa ohjelmassa keskitetysti käytettävissä. Näistä integroiduista ohjelmointiohjelmista käytetään lyhennettä IDE (Integrated Development Environment). Niitä nimitetään myös sovelluskehittimiksi, jolla nimityksellä tahdotaan korostaa niiden tehokuutta ja helppokäyttöisyyttä erillisiin työvälineohjelmiin nähden. Java-kielen IDE-sovelluskehittimiä on monenlaisia, joista osa ilmaisia ja osa maksullisia. Kaupallisia (maksullisia) IDE-välineitä on edelleenkin, vaikka open source lisenssioidut välineet ovat käytettyjä myös kaupallisessa tuotannossa. Ilmaisia open source lisenssiin perustuvia Java IDE sovelluskehittimiä ovat mm. Netbeans ja Eclipse. Lisätietoja osoitteista www.netbeans.org ja www.eclipse.org. Lisää IDE kehittimiä vaikkapa linkkilistalta http://theopensourcery.com/osjavaref.htm Hakukoneilla saa lisää osoitteita esim. hakusanoilla free java ide. Tämä materiaali perustuu ohjeiden osalta NetBeans versioon 5.5, mutta on sovellettavissa helposti mihin tahansa vastaavantyyppiseen editoriin.

Java perusteet Sivu 11(146) Työvälineet NetBeans 5.5 Ikkunan osat Ohjelman ikkuna jakautuu useampaan osaan. Kuvassa vasemmalla Projects ikkuna näyttää puurakenteena projektin osat. Suljettu alakohtia sisältävä haara (+) voidaan avata mm. hiirellä napsauttaen, avattu haara (-) sulkea samoin. Projects ikkunasta valitun moduulin sisällön yksityiskohtia nähdään alla olevasta Navigator ikkunasta. Varsinainen koodi näkyy oikealla puolella ikkunaa. Jokaisella koodimoduulilla on oma välilehti. Välilehden sulkeminen ei poista moduulia projektista. Ikkunan alareunaan sijoittuu mm. Output tai Watches ikkuna. Ikkunoiden sisällöt vaihtuvat eri tilanteissa, samoin useat ikkunat aukeavat automaattisesti. Asetukset Työkalut Asetukset valikosta voidaan säädellä ohjelman käyttäytymistä, mm. tekstin sisennysten (indentation) ja fonttien ja värien määrittelyt. Aluksi värit kannattaa pitää alkuperäisinä, fonttikokoa voi muuttaa haluttaessa. Muut asetukset kannattaa jättää aluksi oletusarvoihin, kunnes niiden merkitys avautuu. Projektin luonti File New Project komennolla käynnistyy wizard eli ohjattu toiminta, josta valitaan ensin projektin tyyppi. Vasemmalla on päätyyppi ja oikealla sen alakohdat. Itsenäinen Java sovellus saadaan General Java Application valinnalla. Toisessa vaiheessa määritellään projektin nimi, joka on samalla paketin (Package) nimi, sekä sijaintikansio johon NetBeans luo projektille oman alikansion. Lisäksi valitaan, onko projekti pääprojekti (käynnistyy itsenäisenä) sekä luodaanko ja minkä niminen pääluokka. Paketin nimen jäljessä on pääluokan nimi Main pisteellä erotettuna. Mielestäni se kannattaa vaihtaa ainakin aluksi, koska muuten pääluokka Main ja pääprojektin proseduuri main sekoittuvat

Java perusteet Sivu 12(146) Työvälineet aloittelijalla helposti keskenään. Huomaa: Projektin nimi kannattaa kirjoittaa isolla alkukirjaimella, automatiikka tekee siitä pienellä alkavan paketin nimen. Kirjoitusasu auttaa erottamaan milloin viitataan projektiin, milloin pakettiin. Luokkien nimet kirjoitetaan isolla alkukirjaimella vakiintuneen tavan mukaan. Luokan luominen Uuden luokan saa luotua napsauttamalla projektin tai pakkauksen nimeä hiiren 2. napilla. Pikavalikon New kohdassa on myös Java Class. Uudelle luokalle annetaan dialogissa olevat määritteet. Luokalle nimen kirjoittaminen riittää, jos napsautit pakkausta, projektin kohdalla myös pakkauksen nimi annettava. Aluksi sijoita kaikki luokat samaan pakkaukseen, kunnes Javan näkyvyyssäännöt tulevat tutuiksi. Muista: luokka isolla alkukirjaimella. Avustavia toimintoja Kehittyneemmässä käytössä kannattaa käyttää Refactor valikon apuvälineitä. Niillä voidaan mm: turvallisesti uudelleen nimetä eri kohteita luoda valitusta koodista uusi metodi (Extract method) muuttaa metodien parametrejä kapseloida eli piilottaa muuttujia ja luoda niille automaattisesti Get it ja Set it (Encapsulate Fields) siirtää muuttujia ja luokkia tasosta toiseen (Pull Push Move Convert ) luoda liittymiä ja kantaluokkia (Extract Interface + Superclass) poistaa kohteita turvallisesti Myös Source valikko sisältää avustavaa automatiikkaa: Metodin ylikirjoitus (Override ) Try-Catch lohkon luonti valinnan ympärille Sisennykset (Shift ) Kommenttilohkojen lisäys tai poisto Komentoriviargumentit Konsolisovelluksien testausta nopeuttaa parametrien syöttäminen etukäteen, jolloin ei IDE:stä tarvitse poistua. Tämä toiminto on NetBeans 5.5 IDE:ssä kohdassa File (projektin nimi) properties Run Arguments. Sovelluksen kehotteeseen voidaan vastaus antaa suoraan Input/Output ikkunaan komentorivi-ikkunan tavoin.

Java perusteet Sivu 13(146) Työvälineet Uuden luokan määrittäminen käynnistäväksi eli pääluokaksi (main) Projektia määriteltäessä joku luokka määritellään pääluokaksi, jolla sovellus käynnistetään. Haluttaessa voidaan jälkikäteen lisätty uusi luokka määritellä pääluokaksi seuraavasti: Lisää uuteen luokkaan main() proseduuri, pelkät otsikot ja tyhjät sulut riittävät, siis public static void main(string[] args) Napsauta hiiren 2. napilla projekti-ikkunasta projektia (kahvikuppi kuvake) ja pikavalikosta Properties Avaa Run haara valintaikkunan puurakenteesta vasemmalla ja kirjoita tai mieluummin hae browse painikkeella ja klikaten uuden pääluokan nimi, lopuksi OK. Virheiden jäljitys eli debuggaus Vähänkin monimutkaisemmassa koodissa virheiden jäljitystä voidaan helpottaa debuggaamalla koodia. NetBeans tekee sen käynnistettäessä sovellusta komennolla Run Debug Main Project. Vaiheet ovat usein seuraavat: 1. aseta keskeytyskohta (breakpoint) sille riville, jonka toimintaa haluat valvoa. Breakpoint asetetaan useimmissa editoreissa koodi-ikkunan vasemman reunan tai sarakkeen napsautuksella, jolloin rivi muuttuu värilliseksi, näin myös NetBeans ssa. 2. Suorita sovellus Run Debug Main Project (F5). Ajo keskeytyy keskeytyskohtaan odottamaan testaajan toimia. Rivin vasemmalla oleva nuoli osoittaa seuraavaksi suoritettavan rivin. Riveittäin voidaan sovellusta ajaa komennolla F7 tai F8. 3. Pysäytyksen ollessa päällä (ilmoitus tilarivillä), voidaan näkyvyysalueella olevien muuttujien arvoja vilkaista pysäyttämällä hiiri muuttujanimen päälle, jolloin työkaluvihje kertoo muuttujan tilan pienen viiveen jälkeen (kuvassa) 4. Hiukan järeämpiä keinoja on asettaa muuttujat pysyvään valvontaan New Watch komennolla tai manipuloimalla muuttujaa kesken suorituksen (Evaluate Expression) 5. Napsauttamalla vasenta saraketta uudelleen keskeytyskohta poistuu. Hiiren 2.napilla breakpoint merkistä saa pikavalikon, josta voi mm. asettaa ehdollisia keskeytyskohtia ja näyttää rivien numerot.

Ohjelma perusosat Java perusteet Sivu 14(146) Ohjelman perusosat Yleistä Java-kielestä Yleiset ohjelman perusosat Kielioppi eli syntaksi Tunnisteet Kommentit Yleistä Java-kielestä Java-ohjelmointikielen on kehittänyt Sun Microsystems Inc -niminen yhtiö, jonka tavaramerkkejä mm. Java ja JDK ovat. Java muistuttaa ulkoasultaan varsin paljon C++ -ohjelmointikieltä, joten tämän kielen osaamisesta on hyötyä Java-kielen opiskelussa. Yleiset ohjelman perusosat Tietokoneohjelma koostuu yleisistä, ohjelmointikielestä riippumattomista perusosista, joita ovat mm. tunnisteet kommentit tietotyypit vakiot muuttujat lausekkeet operaattorit operandit lauseet lohkot eli kootut lauseet aliohjelmat luokat ja oliot (olio-ohjelmoinnissa). Opiskelemme näitä ohjelmien perusosia tällä ja seuraavilla sivuilla. Tällä sivulla on kaksi ensimmäistä luettelon kohtaa: tunnisteet ja kommentit. Kielioppi eli syntaksi Kuten puhutuilla kielillä, myös ohjelmointikielillä on oma kielioppinsa (lauseoppinsa), jonka mukaisesti ohjelmointikielen kääntäjät kääntävät lähdekielistä ohjelmaa konekielelle. Kieliopista käytetään nimitystä syntaksi (syntax). Java-kielen kieliopista saat yleisen käsityksen yksinkertaisen esimerkkiohjelman avulla mm. osoitteesta http://java.sun.com/docs/books/tutorial/java/nutsandbolts/index.html

Java-kielen oppimateriaali Java perusteet Sivu 15(146) Ohjelman perusosat Sunin oppimateriaali: Trail: Learning the Java Language: Table of Contents -sivulla on Java-kielen oppimateriaalin sisällysluettelo, josta saat yleiskäsityksen Java-kielen pääkohdista. Tunnisteet Sunin oppimateriaali: Trail: Learning the Java Language Lesson: Language Basics Variable Names Tunnisteita (identifier) käytetään yksilöimään erilaisia ohjelman elementtejä, kuten muuttujia, olioita, metodeita ja luokkia. Tunniste on siis yksilöllinen nimi näille kielten elementeille. Monissa ohjelmointikielissä on samankaltaiset tunnisteiden säännöt: C-kielessä, C++ -kielessä ja Java-kielessä on kaikissa samat tunnisteiden nimeämissäännöt. nimi pitää alkaa englanninkielen kirjaimella (a - z) älä käytä muita kuin englanninkielen aakkosia ja numeroita nimissä, siis Ika ei Ikä nimi pitää kirjoittaa yhtenä sanana, jos halutaan kaksiosainen nimi, sanat kirjoitetaan kiinni toisiinsa tai yhdistellään alaviivalla, esimerkiksi PalkkaKausi tai Laske_Korko Java-, C- ja C++-kielissä isot ja pienet kirjaimet erotellaan toisistaan, siis PalkkaKausi on kääntäjän mielestä eri asia kuin Palkkakausi Muita oppimateriaalilinkkejä: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/variables.html http://javaboutique.internet.com/articles/itj/part04/page03.html Harjoituksia aiheeseen löytyy oppimateriaalin sivulta Questions and Exercises: Variables. Nimeämiskäytäntöjä Tunnisteiden nimeämisessä on syytä käyttää jotakin johdonmukaista tapaa. Ohjelmointiryhmällä tai jopa ohjelmointiyrityksellä saattaa olla oma standardi nimeämiseen. Sun-yhtiö, joka on Java-kielen kehittäjä, käyttää useasta sanasta koostuvassa tunnisteessa kirjoitustapaa, jossa ensimmäinen sana alkaa pienellä kirjaimella ja muut samat isoilla alkukirjaimilla, esimerkiksi paramstring ja getverticaltextposition. Eräs Java-kielen ohjelmointityyliopas on osoitteessa http://geosoft.no/javastyle.html ja siinä on mm. nimeämissuosituksia. Varatut sanat Tunnisteina ei saa käyttää kielen syntaksiin kuuluvia sanoja tai merkintätapoja. Näistä ns. varatuista sanoista on ohjelmointioppaissa erilliset luettelot. Koska varatut sanat ovat yleensä englanninkielen sanoja, ei niistä ole suomalaiselle ohjelmoijalle yleensä suurtakaan harmia (ellei ohjelmoija käytä syystä tai toisesta englanninkielisiä tunnisteita).

Java perusteet Sivu 16(146) Ohjelman perusosat Java-kielen varatut sanat on lueteltu osoitteessa http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html Kommentit Ihmisen ei ole aina ole helppoa saada selvää tietokoneohjelmista, varsinkaan toisen ihmisen kirjoittamasta ohjelmasta. Siksi hyvin kirjoitettu ohjelma on riittävästi kommentoitu. Kommentilla tarkoitetaan tietokoneohjelmassa sellaista ohjelman kohtaa, joka on tarkoitettu vain ihmisen luettavaksi. Ohjelmointikielen kääntäjä ohittaa kommentin. Eri ohjelmointikielissä on omat tapansa aloittaa ja päättää kommentti. C- C++- ja Java-kielessä on kaksi tapaa aloittaa kommentti: // rivin loppuosa on kommenttia /* tämä kommentti saattaa olla monirivinen ja se päättyy merkkeihin */ Kommentteja kannattaa sijoittaa lähdeohjelmaan kaikkiin epäselviin tai vaikeisiin paikkoihin. Lisäksi yleensä jokaisen lähdeohjelman alussa on kommenttirivejä, joissa kerrotaan mm. seuraavia seikkoja: sovelluksen nimi moduulin (lähdeohjelman) nimi ohjelmoijan nimi ohjelmointipäivämäärä Esimerkkejä /* * Sovellus: Esimerkkisovellus * Moduuli: Korko.java * Tehtävä: Koron laskeminen * Ohjelmoija: Matti Jaakkola * Päivämäärä: 30.7.2001 */ Esimerkissä on käytetty tähteä kommenttirivien alussa. Tämä auttaa lukijaa havaitsemaan kommenttilohkon rivit. Ohjelmointikielen kielioppi (syntaksi ei vaadi tähteä. Varsinainen kommentin alku ja loppu on merkitty esimerkkiin punaisella värillä. Usein kommentoidaan myös yksittäinen rivi. Tällöin helpointa on käyttää rivin loppuosan kommentointia // -merkeillä: int paaoma = 0; // Pääoma Linkki: http://javaboutique.internet.com/articles/itj/part04/index.html Muista ohjelman perusosia käsittelemme seuraavilla sivuilla.

Java perusteet Sivu 17(146) Ohjelman perusosat, harjoituksia Ohjelman perusosat, harjoituksia Harjoitus 1 Mitkä seuraavista tunnisteista ovat Java-kielen tunnistesääntöjen mukaiset? Mikä on vialla, jos tunniste ei ole sääntöjen mukainen? 1. loppusumma 2. Ikäryhmä 3. yks hinta 4. 4kausi 5. x 6. laske_tulos 7. piirrä-kuva 8. this Nimeä mielestäsi sopivilla tunnisteilla seuraavat asiat: 1. välisumma 2. kuukauden palkat 3. pienin luku 4. hae osaston nimi 5. laske henkilön palkka 6. tuotteen yksikköhinta 7. henkilötunnus Harjoitus 2 1. Vastaa omin sanoin seuraaviin kysymyksiin: 2. Mihin tunnisteita käytetään? 3. Mihin kommentteja käytetään? 4. Mitä ovat varatut sanat? 5. Montako varattua sanaa on Java2 -kielessä? 6. Mitä tarkoitetaan syntaksilla?

Tieto muistissa Java perusteet Sivu 18(146) Tieto muistissa Muistipaikat Tietotyypit Vakiot Muuttujat Tietomuodon muuntaminen (konversio) Lukujen muotoilu Muistipaikat Sunin oppimateriaali: Trail: Learning the Java Language Lesson: Language Basics Expressions, Statements, and Blocks Kun ihminen käsittelee tietoja lomakkeiden avulla, varataan kullekin tiedolle tietty paikka. Lomakkeella saattaa olla paikka henkilötunnukselle, nimelle, osoitteelle, puhelinnumerolle jne. Tiedolla on siis paikka, johon se merkitään eli tiedolle on varattu muistipaikka lomakkeelle. Ohjelmissa käsiteltäville tiedolle (kuten muuttujille ja olioille) täytyy varata myös muistitilaa, johon tieto sijoitetaan. Tiedon varaus tehdään määrittelemällä ohjelmaan muuttujia, vakioita ja olioita. Näiden määrittelyä käsitellään myöhemmin tässä sivustossa. Tietotyypit Sunin oppimateriaali: Trail: Learning the Java Language Lesson: Language Basics Expressions, Statements, and Blocks Ihminen osaa käsitellä tietoja eri muodoissaan, kuten tekstinä, lukuina, kuvina tai äänenä. Tietokoneohjelmakin osaa käsitellä erimuotoisia tietoja. Tietokoneen ja ihmisen tapa käsitellä ja tallettaa tietoja on hyvin toisistaan poikkeava. Ihminen käsittelee tekstiä, lukuja ja kuvia näköaistillaan ja ääniä kuuloaistillaan. Kukaan ei lähemmin tiedä, miten ihminen näitä säilyttää muistissaan. Bitit ja tavut Tietokone osaa käsitellä periaatteessa vain ykkösiä ja nollia. Binäärinen lukujärjestelmä koostuu näistä merkeistä. Sana bi tarkoittaa juuri kahta. Yksi bitti on pienin tietokoneen tietoyksikkö. Bitin arvo voi siis olla nolla tai yksi. Jonkin asian päällä tai pois oleminen voidaan esittää bitillä (valo palaa lampussa tai ei pala).

Java perusteet Sivu 19(146) Tieto muistissa Useamman kuin kahden vaihtoehdon esittämiseen tarvitaankin sitten useita bittejä. Niinpä 8 bittiä muodostaakin tavun (byte), joka on bitistä seuraava suurempi määrä tietoa tietokoneessa. Muun muassa tietokoneen muisti ilmoitetaan tavuina (nykyisin miljoonina tavuina eli megatavuina). Mikro- ja minitietokoneissa usein käytetty ns. ASCII-koodijärjestelmä käyttää 7 tai 8 bittiä eri merkkien esittämiseen. Kahdeksalla bitillä voidaan esittää 256 vaihtoehtoa (luvut 0-255). ASCIIkoodijärjestelmässä kullekin merkille on varattu tietty luku. Näin tietokone näkee merkitkin vain järjestyslukuina. Luvut Tietokone oli alun perin automaattinen laskukone (englanniksi computer). Siksi tietokoneelle on oleellista pystyä käsittelemään erilaisia lukuja. Kun ihminen käsittelee lukuja, hän voi käsitellä sekaisin kokonaislukuja ja desimaalilukuja (jopa murtolukuja). Tietokone ei tähän ilman muuta kykene, vaan tietokoneessa pitää olla erikseen tietotyypit eri lukutyyppejä varten, koska eri tyypit varaavat muistia eri tavoilla.. Niinpä ohjelmoija joutuu usein ratkaisemaan, minkä kokoisia lukuja ohjelmassa tullaan käsittelemään ja varaamaan tämän mukaisia muuttujia ja vakioita ohjelmaansa. Kokonaisluvut Yksinkertaisinta on käsitellä pelkästään kokonaislukuja. Näiden aritmetiikassa tietokone käyttää binäärilukuaritmetiikkaa, jossa siis lasketaan pelkästään nollilla ja ykkösillä. Esimerkki kokonaislukulaskennasta: 127 + 14 Liukuluvut Kokonaislukujen lisäksi tietokone pystyy laskemaan liukuluvuilla (reaaliluvuilla). Näissä laskutoimituksissa on aina tietty määrä merkitseviä numeroita, koska liukuluvut ovat vain likiarvoja. Liukuluvuissa voidaan käyttää desimaaleja. Englanninkielisissä maissa käytetään desimaalierottimena pistettä, ei pilkkua. Siksi myös eri tietokonekielissä yleensä käytetään desimaalipistettä. Esimerkki liukulukulaskennasta: 12.5 * 12.5 * 3.1416 Linkkejä Java-kielen tietotyyppeihin: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html http://javaboutique.internet.com/articles/itj/part04/page04.html Tietomuodoille on eri ohjelmointikielissä varattu nimitykset (=varattuja sanoja). Lukutyyppien sekakäyttö Ohjelmissa erilaisia lukutietotyyppejä voidaan käyttää myös samassa lausekkeessa: 7 * 7 * 3.1416

Java perusteet Sivu 20(146) Tieto muistissa Tämän lausekkeen lopputulostyyppi on liukulukutyyppi, koska se on mutkikkaampi kuin kokonaislukutyyppi. Hyvä nyrkkisääntö on: suurimman muistimäärän tarvitseva tieto on lausekkeen lopputuloksen tietotyyppi. Merkkitietotyyppi Yksittäisten merkkien käsittelyyn on Java-kielessä char-tietotyyppi. Tämä on tyyppi, joka vie tilaa kaksi tavua (16 bittiä), koska Java-kielen merkkityyppi on ns. Unicode-järjestelmän mukainen (siis ei käytä ASCII-koodeja, kuten C- ja C++ -kielet). Unicode-järjestelmän kooditaulukot löytyvät osoitteesta http://www.unicode.org/charts/ Totuusarvotietotyyppi Monissa tilanteissa riittää kaksi mahdollisuutta: jokin asia voi olla totta tai ei totta. Tällaista tietotyyppiä nimitetään totuusarvo- eli Boolean-tietotyypiksi (Boolean data type), jolla voi olla kaksi arvoa true (tosi) false (epätosi) C-kielen tavoin numeerinen lauseke voidaan tulkita lausekkeissa Boolean arvona: nolla false, kaikki nollasta poikkeavat: true. Rakenteiset tietotyypit Rakenteisiksi tietotyypeiksi nimitetään perustietotyypeistä koostettuja tietotyyppejä, kuten merkkijonoja ja taulukoita. Ne on toteutettu Java-kielessä luokkina ja käsittelemme niitä myöhemmin. Vakiot (literaalit) Sunin oppimateriaali: Trail: Learning the Java Language Lesson: Language Basics Expressions, Statements, and Blocks Vakiot esittävät pysyvää tietoa ohjelmissa. Vakioita voi käyttää lausekkeissa ja muuttujien asetuslauseissa. Kokonaislukuvakiot Erilaisia lukuvakioita olemme nähneet jo tämän sivun alkupuolella. Kokonaislukuvakiossa voi myös olla etumerkki + tai -. Seuraavasta taulukosta näet, miten eripituisia kokonaislukuvakioita esitetään Tietotyyppi Loppumerkki Koko tavuina Esimerkki byte 1 123 01111011 Muoto muistissa (väli tässä vain helpottaa lukemista)