Pääteohjaus 3
Seuraavien harjoitusten tarkoituksena on opettaa ohjelmointiympäristön käyttöä.
Itse Java-kielisten ohjelmien syntaksiin ei vielä ole syytä takertua liiaksi.
Tässä harjoituksessa opittavat asiat tulevat hyödyksi ohjelman koodaamisessa ja
testaamisessa. Itse ohjelman suunnittelun kanssa tällä harjoituksella ei ole
mitään tekemistä!
Java-ohjelmien editointia ja kääntämistä harjoitellaan komentorivillä (mikä tahansa
editori käy, esim. ConTEXT tai Notepad), NetBeans IDE 4.0 -sovelluskehittimellä,
JBuilder 2006 -sovelluskehittimellä tai Eclipse 3.2 sovelluskehittimellä.
Näistä Eclipse, NetBeans
vaihtoehtoisia, niistä toinen voidaan jättää pois aikataulun vaatiessa. Komentoriviosuus
on pakollinen kaikille. JBuilderiä ei kannata enää laskea mukaan, koska kyse on vanhasta versiosta.
1. Ohjelman kirjoittaminen ja kääntäminen
Harjoitellaan aluksi Javan käyttöä komentoriviltä. Kun olet käynyt tehtävän läpi komentorivillä, voit kokeilla samaa
Eclipsellä tai NetBeansilla
luettuasi vastaavan editorin käyttöohjeet.
- Aukaise yksi komentoikkuna
tuplanäpäyttämällä CMD-ikonia (Command prompt, sijaitsee työpöydällä tai Start-valikossa).
- Siirry omaan hakemistoosi (hakemiston paikka on C:\MyTemp\ohj2\tunnus.
Käytä CD-komentoa hakemistopuussa liikkumiseen). Jos hakemistoa ei ole, luo hakemisto
MD-komennolla.
- Katso DIR-komennolla mitä tiedostoja on hakemistossa.
- Kirjoita jollakin editorilla seuraava Java-ohjelma nimelle Jarj2.java
(esim. ConTEXTilla käynnistyy komennolla ct
Jarj2.java[RET].
Jarj2.java
- Yritä saada vastaavat sisennykset ja ole tarkkana kirjainten
1 (yksi), i (ii, india) ja l (ällä, lima) suhteen.
Myös isojen ja pienten kirjainten kanssa on syytä olla tarkkana!
Jos huomaat mallissa kirjoitusvirheitä, niin älä korjaa niitä vielä.
Tarkoituksena on opetella tulkitsemaan kääntäjän virheilmoituksia.
Mitä luulet ohjelman tulostavan?
- Tallenna valmis ohjelma (useimmissa editoreissa [Ctrl-S]).
- Siirry takaisin komentokehotteeseen ja käännä ohjelma komennolla javac
Jarj2.java[RET].
- Mikäli sait ohjelman kirjoitettua aivan vastaavasti kuin mallissa,
komentokehotteeseen tulee tekstit:
Jarj2.java:40: unclosed string literal
s1 = kysy("Anna 1. merkkijono >');
^
Jarj2.java:41: ')' expected
s2 = kysy("Anna 2. merkkijono >");
^
Jarj2.java:51: ';' expected
System.out.println("Jonot "+s1+", "+s2+".")
^
Jarj2.java:48: cannot resolve symbol
symbol : variable T
location: class Jarj2
s2.append(T);
^
4 errors
- Rivin alussa oleva tieto kuvaa tiedostoa ja rivinumeroa, jossa virhe on löytynyt
(esim. Jarj2.java-tiedostossa rivillä 40 on löydetty
merkkijono, jota ei ole suljettu "-merkillä.
- Monissa tekstieditoreissa on toiminto, jonka avulla pääsee määrätylle
ohjelmariville. Esim. ConTEXTissa [Ctrl-G] (Edit->Go to...) tuo
esiin ikkunan, johon voit syöttää haluamasi rivinumeron. Etsi toiminto tekstieditoristasi ja kokeile sitä.
- Siirry ensimmäisen virheen kohdalle ja paina [RET].
- Korjaa virhe! Virhe ei välttämättä ole kursorin kohdalla,
vaan se vasta paljastuu siinä kohdassa. Sama virhe saattaa
poikia useita eri virheilmoituksia!
- Käännä ohjelma uudelleen.
- Tallenna korjattu ohjelma.
- Siirry takaisin komentokehotteeseen ja aja ohjelma komennolla java
Jarj2[RET]. Jos virtuaalikone ilmoittaa
Exception in thread "main" java.lang.NoClassDefFoundError: Jarj2,
kokeile komentoa java -cp . Jarj2[RET]
(tämä varmistaa, että virtuaalikone yrittää etsiä ajettavaa tiedostoa nykyisestä
hakemistosta).
Huom. seuraavissa luvuissa esiteltävät sovelluskehittimet voivat helpottaa
huomattavasti ohjelman kehitystä (ne eivät kuitenkaan tee ohjelmaa puolestasi!). Esimerkiksi niiden editorit on suunniteltu tukemaan
Java-kieltä ja debuggerilla ohjelmaa voi suorittaa rivi kerrallaan seuraten
samalla muuttujien arvoja. Lisäksi sovelluksen dokumentaation luonti helpottuu ja
editori osaa tarvittaessa näyttää suoraan Java-kielen ja omien sovellusten
Javadoc-tietoja ohjelmoinnin aikana.
Tästä huolimatta
jokaisen (Java-)ohjelmoijan
on osattava tarvittaessa kääntää ohjelmansa komentoriviltä. Sovelluskehitintä
ei ole aina saatavilla tai käytössä olevan koneen teho ei riitä kehittimen
tehokkaaseen käyttöön (erityisesti Java-kielen sovelluskehittimet vievät hyvin
runsaasti koneen tehoja). Sen sijaan
J2SDK-kehitysympäristö (software development kit) on saatavilla
kaikille Java-kielen tukemille käyttöjärjestelmille ja komennot
java,
javac ja
javadoc toimivat odotetusti.
Java-ohjelmointi onnistuu myös ilman massiivista
sovelluskehitintä. Monet tekstieditorit, kuten ConTEXT (ei kuitenkaan Notepad) tukevat
Javan syntaksin automaattista värikoodaudausta. Kehittyneemmillä editoreilla (esim.
GNU Emacs)
voi määritellä myös omia toimintoja, kuten
javac-komennon kutsuminen editoitavalle tiedostolle...
Eclipseä käyttäneiden kannattaa seuraavaksi hypätä suoraan
kohtaan:
4. Eclipse -editorin käyttöohjeita
2. Borland JBuilder -editorin käyttöohjeita
Loikkaa tämä luku yli vuonna 2008 tai myöhemmin.
Tämä luku on vaihtoehtoinen lukujen 3 ja 4
(NetBeans-editorin tai Eclipse-editorin käyttöohjeita) kanssa.
JBuilder 2006 lähtee mikroluokissa käyntiin komentoriviltä
komennolla
jb06
2.1 Ikkunat
JBuilder -ympäristö on suurinpiirtein seuraavan näköinen:
Näyttö koostuu siis pääikkunasta, joka sisältää useampia ali-ikkunoita. Ikkunan kokoa
voidaan muuttaa hiirellä tarttumalla kiinni ikkunan reunaan, paikkaa tarttumalla ikkunan otsikkopalkkiin.
Ali-ikkunoiden kokoa voidaan muuttaa pääikkunan sisällä tarttumalla ikkunan reunaan.
Hiiren kursori muuttuu kaksipäiseksi nuoleksi, kun olet oikealla kohdalla. Kokeile!
Ikkunasta toiseen voidaan siirtyä joko näpäyttämällä hiirellä ikkunan aluetta tai pikanäppäimellä
[Ctrl-TAB].
Kooditiedostosta toiseen siirrytään klikkaamalla vastaavan välilehden painiketta koodieditorin yläpuolella
tai Window-valikon kautta (
[ALT-W] ja ikkunan numero, johon haluat siirtyä). Koodi-ikkunat on numeroitu 0:sta alkaen
vasemmalta ja näkyvät myös Window-valikossa. Kuvassa
FileInputSream.java on 0. ikkuna,
Jarj3a.java 1. ikkuna jne.
- Avaa haluamasi tiedostot [Ctrl-O]
ja kokeile ikkunasta toiseen siirtymistä.
2.2 Menut ja pikanäppäimet
Toimintoja voidaan valita joko hiirellä yläreunasta, tai
painamalla
[F10]) ja siirtymällä kursorilla halutun toiminnon kohdalle.
Toiminto voidaan valita myös painamalla toiminnon korostetua kirjainta
(esim.
[ALT-E] avaa
Edit-valikon).
Siis vaihtoehtoja on useita. Aluksi menujen käyttö on näppärää nuolinäppäimillä tai hiirellä,
mutta haluttaessa tehokkaampaa toimintaa, kannattaa käyttää suoravalintoja.
Kokeillaan
Jarj2.java-ohjelman korjausta ja ajamista edellisen luvun tapaan.
- Sulje aiemmin avaamasi tiedostot ja mahdollinen JBuilderin oletusprojekti.
(File->Close projects, [ALT-A], [RET],
älä tallenna muutoksia.)
- Aloitetaan uusi projekti ja määritellään asetukset.
- Avaa Project Wizard. (File->New Project)
- Anna projektille haluamasi nimi ja varmista, että hakemistoksi tulee
alkuperäinen työhakemistosi C:\MyTemp\ohj2\tunnus
(JBuilder ehdottaa projektin nimistä alihakemistoa, mutta sen voi poistaa).
- Paina Next. Project Wizard siirtyy projektin asetussivulle.
- Tarkista JDK-tekstiriviltä, että kääntämisessä käytetään uusinta
Java-kehitysympäristöä (1.4.1...). Jos ei käytetä,
paina komponentin oikealla puolella olevaa ...-nappia ja lisää esille tulevassa ikkunassa
New-napilla Project-kohtaan JDK 1.4.1 (jos sitä ei vielä ole) . JDK löytyy Agoran koneilta
hakemistosta C:\Program Files\j2sdk1.4.1_01. Valitse ja paina OK-nappia.
- Tarkista, että hakemistot ovat oikein. Output path ja Working directory-kohdissa pitäisi molemmissa olla työhakemistosi
C:/MyTemp/ohj2/tunnus.
- Korjaa lähdekoodihakemisto (ks. ikkunan alaosassa oleva taulukko ja hakemisto, jossa valittu default-radiopainike).
Jbuilder yrittää laittaa lähdekoodeja oletuksena src-nimiseen hakemistoon. Muokkaa hakemistoksi
työhakemistosi (kuten Output path ja Working directory). Valitse hakemisto ja paina
Edit-nappia päästäksesi vaihtamaan hakemiston.
- Huom! Lähdekoodiesi on oltava projektin asetuksissa määritellyssä lähdekoodihakemistossa. Muuten
JBuilderin debuggeri ei toimi oikein.
- Paina Finish. Projekti on luotu.
- Lisää Jarj2.java projektiin. (Project->Add files/packages
tai pikanappi heti vasemmalla olevan tiedostopuun yläpuolella)
- Muuta Jarj2.java alkuperäiseen muotoonsa, jolloin voit kokeilla kääntäjän virheilmoituksia JBuilderilla.
-
Jotkut virheet näkyvät jo koodia kirjoittaessasi (jopa ilman kääntämistä!)
vasemmanpuoleisessa ikkunassa Errors-puussa.
- Yritä kääntää ohjelma. ([Ctrl-F9])
-
Virheilmoitukset tulevat ruudun alaosassa olevaan virheikkunaan. Virheikkunan avulla näkee (likimain!)
virheiden paikat ohjelmakoodissa.
Virheitä voi selata JBuilderissa klikkaamalla
hiirellä virheikkunaa ja liikuttamalla nuolinäppäimillä kursoria ylös ja alaspäin virheikkunassa. Kokeile!
-
Käyttäessäsi NetBeansia tai JBuilderia huomaat varmaakin, että värit osoittavat jotakin ohjelmakoodissa.
Mitä? Värit auttavat paikallistamaan useita virheitä.
- Korjaa ja jatka kunnes kaikki virheet on korjattu (kuten komentorivillä aikaisemmin).
- Kokeile ajaa edellisessä luvussa tekemäsi ohjelma kolmella eri tavalla:
- Valitse hiirellä menuista Run ja sieltä Run.
- Paina [Alt-R] ja [R].
- Paina [F9].
-
Mikä edellistä tavoista tuntuu parhaalta?
Pikanäppäimet nopeuttavat ympäristön käyttöä huomattavasti. Edellä on jo mainittu näistä osa.
Täydellisen listan JBuilderin pikanäppäimistä ja niiden käyttötarkoituksesta näet valitsemalla
Tools-valikosta
IDE Options ja painat aukeavan ikkunan
Browser-välilehdeltä kohdassa
Keymap Customize...-painiketta.
Editoriin on siis asetettu valmiiksi useita eri pikanäppäinvaihtoehtoja (vaihtoehdot on tehty muiden editorien pikanäppäinten pohjalta)!
Lisäksi käyttäjä voi halutessaan mukauttaa haluamansa pikanäppäimet uudelleen. Tässä vaiheessa lienee kuitenkin parasta poistua muuttamatta mitään
[ESC] tai paina
Cancel-nappia.
2.3 Kääntäjän ja editorin asetukset
Usein jokin ikkuna saattaa olla jakautunut useisiin ali-ikkunoihin tai välilehtiin
(itse asiassa editorin tiedostot näkyvät oletuksena jokainen omalla välilehdellään). JBuilderin
projektin asetukset saadaan esille painamalla
[ALT-P] ja
[O].
Ikkuna näyttää seuraavalta.
Nyt ali-ikkunoina on otsikoiden alla olevat tekstit (
JDK,
Output path jne).
Ali-ikkunasta toiseen voidaan siirtyä
[Tab] ja
[Shift-Tab] -näppäimillä. Kokeile!
Painikkeita on 2 eri tyyppiä: radionäppäimet (yhtä painamalla muut ponkaisevat ylös, vrt. vanha matkaradio) ja tavalliset painikkeet. Painike voidaan painaa hiirellä tai
painamalla
[Alt-kirjain] tai siirtymällä ko. ali-ikkunaan ja liikkumalla nuolilla ja välilyöntinäppäimellä. Tutki muita
projektin asetusten välilehtiä. Huomaa myös, että voit liikkua puukomponenttien sisällä
nuolinäppäimillä (erityisesti oikea nuoli avaa puun oksan ja vasen nuoli sulkee sen!).
-
Java-kääntäjälle voidaan asettaa
optioita siitä, mistä kääntäjä valittaa. Yleisesti ottaen
kannattaa pitää kaikki mahdolliset virheilmoitukset päällä,
koska varoitus on käytännössä jotakin vikaa ohjelmassa.
-
Varoitukset saat päälle seuraavasti:
- Valitse Project properties-ikkunan Build-välilehti.
- Tarkista, että Show warnings ja Show ddeprecations ovat valittu
(deprections varoittaa kielen vanhentuneiden ominaisuuksien käytöstä).
- Seuraavaksi tutkimme editorin asetuksia. Valitse Tools-valikosta Editor options.
- Tutki ja kokeile asetuksia
2.4 Help-toiminto
- Borlandin ohjelmaympäristöissä on varsin hyvä Help-toiminto.
[Alt-H] ja [E]-näppäimillä saadaan tavallinen Help. Kokeile!
- [F1] antaa apua siitä sanasta, jonka kohdalla
kursori on. Kokeile vaikkapa sanoihin String, CompareTo ja return.
Avustus palauttaa luokkaan liittyvän JavaDocin, jos sellainen on saatavilla.
-
Tätä käyttäen voidaan yleensä aina löytää syntaksi halutulle
käskylle. Myöhemmin tässä ohjauksessa käytetään satunnaislukugeneraattoria Math.random(). Kokeile löytää kutsun syntaksi kirjoittamalla koodiin ylimääräinen Math ja paina
[F1]. Huomaa myös JBuilderin ehdottavan automaattisesti luokkaan liittyviä metodeita koodieditorissa.
Muista lopuksi pyyhkiä Math pois koodista.
2.5 Kääntäjän tekemät tiedostot
-
Kokeile vielä ohjelman ajoa.[F9].
Ohjelman toiminta näkyy ohjelman alaosassa olevasssa ajo-ikkunassa.
-
Poistu käyttöjärjestelmään ja tarkista, mitä juuri kirjoittamaasi ohjelmaan liittyviä tiedostoja on syntynyt hakemistoosi
(ohjelmointiympäristö on todennäköisesti lisännyt uusia tiedostoja komentoriviosuudessa kirjoittamiesi lisäksi).
- Mieti, mitä varten mikäkin tiedosto on.
- Aja vielä (nyt Jbuilderilla kääntämäsi) ohjelma kuten ensimmäisessä luvussa.
3. NetBeans-editorin käyttöohjeita
Tämä luku on vaihtoehtoinen luvun 2 ja ja 4
(Borland JBuilder -editorin tai Eclipse-editorin käyttöohjeita) kanssa.
3.1 Ikkunat
NetBeans -ympäristö on suurinpiirtein seuraavan näköinen:
Näyttö koostuu siis pääikkunasta, joka sisältää useampia ali-ikkunoita. Ikkunan kokoa
voidaan muuttaa hiirellä tarttumalla kiinni ikkunan reunaan, paikkaa tarttumalla ikkunan otsikkopalkkiin.
Ali-ikkunoiden kokoa voidaan muuttaa pääikkunan sisällä tarttumalla ikkunan reunaan.
Hiiren kursori muuttuu kaksipäiseksi nuoleksi, kun olet oikealla kohdalla. Kokeile!
Ikkunasta toiseen voidaan siirtyä näpäyttämällä hiirellä ikkunan aluetta.
Kooditiedostosta toiseen siirrytään klikkaamalla vastaavan välilehden painiketta koodieditorin alapuolella tai
pikanäppäimillä
[Alt-Left] tai
[Alt-Right].
- Avaa haluamasi tiedostot [Ctrl-O]
ja kokeile ikkunasta toiseen siirtymistä.
3.2 Menut ja pikanäppäimet
Toimintoja voidaan valita joko hiirellä yläreunasta, tai
painamalla
[F10]) ja siirtymällä kursorilla halutun toiminnon kohdalle.
Toiminto voidaan valita myös painamalla toiminnon korostetua kirjainta
(esim.
[Alt-E] avaa
Edit-valikon).
Siis vaihtoehtoja on useita. Aluksi menujen käyttö on näppärää nuolinäppäimillä tai hiirellä,
mutta haluttaessa tehokkaampaa toimintaa, kannattaa käyttää suoravalintoja.
Kokeillaan
Jarj2.java-ohjelman korjausta ja ajamista edellisen luvun tapaan.
- Sulje aiemmin avaamasi tiedostot ([Ctrl-F4], voit myös sulkea tiedostot koodieditorin alaosan välilehtien painikkeiden rastia).
Älä tallenna muutoksia.
- Liitä kotihakemistosi osaksi NetBeansin tiedostojärjestelmää.
- Valitse File->Mount filesystem tai Filesystems-ikonin
päällä hiiren oikean napin ponnahdusvalikosta Mount->Local directory.
- Valitse esille tulevasta ikkunasta Local directory ja paina Next-nappia (ellet valinnut jo).
- Mene hakemistoselaimella hakemistoon mytemp ja valitse oma kotihakemistosi klikkaamalla (älä tuplaklikkaa.
Silloin hakemistoselain siirtyisi kotihakemistoosi, mutta NetBeans ei silloin osaa liittää sitä).
- Paina Finish-nappia. Kotihakemistosi pitäisi ilmestyä Filesystems-puuhun.
- Avaa Filesystems-puuta niin, että näet tiedoston Jarj2.java. Avaa tiedosto tuplaklikkaamalla tai [Ctrl-O]:lla.
- Muuta Jarj2.java alkuperäiseen muotoonsa, jolloin voit kokeilla kääntäjän virheilmoituksia NetBeansilla.
-
Jotkut virheet näkyvät jo koodia kirjoittaessasi (jopa ilman kääntämistä!) punaisella alleviivattuna (vrt. M$ Word-oikoluku).
- Yritä kääntää ohjelma. ([F9])
-
Virheilmoitukset tulevat ruudun alaosassa olevaan virheikkunaan. Virheikkunan avulla näkee (likimain!)
virheiden paikat ohjelmakoodissa.
Virheitä voi selata NetBeansissa tuplaklikkaamalla
hiirellä virheikkunan vastaavaa kohtaa.
Lisäksi näppäimellä [F12] pääsee seuraavan virheen kohtaan koodissa.
Kokeile!
-
Käyttäessäsi NetBeansia huomaat varmaakin, että värit osoittavat jotakin ohjelmakoodissa.
Mitä? Värit auttavat paikallistamaan useita virheitä.
- Korjaa ja jatka kunnes kaikki virheet on korjattu (kuten komentorivillä aikaisemmin).
- Kokeile ajaa edellisessä luvussa tekemäsi ohjelma neljällä eri tavalla:
- Valitse hiirellä menuista Build ja sieltä Execute.
-
Paina [F10], liiku kursorilla kohtaan Build. Paina
[RET]. Siirry nuolilla kohtaan Execute. Paina [RET].
- Paina [Alt-B] ja [E].
- Paina [F6].
-
Mikä edellistä tavoista tuntuu parhaalta?
Pikanäppäimet nopeuttavat ympäristön käyttöä huomattavasti. Edellä on jo mainittu näistä osa.
Täydellisen listan NetBeansin pikanäppäimistä ja niiden käyttötarkoituksesta näet valitsemalla
Tools-valikosta
Keyboard Shortcuts.
Käyttäjä voi halutessaan mukauttaa haluamansa pikanäppäimet uudelleen. Tässä vaiheessa lienee kuitenkin parasta poistua muuttamatta mitään
[ESC] tai paina
Cancel-nappia.
3.3 Kääntäjän ja editorin asetukset
Usein jokin ikkuna saattaa olla jakautunut useisiin ali-ikkunoihin tai välilehtiin
(itse asiassa editorin tiedostot näkyvät oletuksena jokainen omalla välilehdellään). NetBeans-käyttöympäristön
asetukset saadaan esille painamalla
[ALT-T] ja
[O].
Ikkuna näyttää seuraavalta.
Nyt ali-ikkunoina ovat otsikoiden alla olevat tekstit (
Options,
Building jne).
Ali-ikkunasta toiseen voidaan siirtyä
[Tab] ja
[Shift-Tab] -näppäimillä. Kokeile!
Painikkeita on 2 eri tyyppiä: radionäppäimet (yhtä painamalla muut ponkaisevat ylös, vrt. vanha matkaradio) ja tavalliset painikkeet. Painike voidaan painaa hiirellä tai
painamalla
[Alt-kirjain] tai siirtymällä ko. ali-ikkunaan ja liikkumalla nuolilla ja välilyöntinäppäimellä. (Tosin tässä ikkunassa ei ole radiopainikkeita).
Huomaa, että voit liikkua
Options-ikkunan puussa nuolinäppäimillä (erityisesti oikea nuoli avaa puun oksan ja vasen nuoli sulkee sen!).
-
Java-kääntäjälle voidaan asettaa
optioita siitä, mistä kääntäjä valittaa. Yleisesti ottaen
kannattaa pitää kaikki mahdolliset virheilmoitukset päällä,
koska varoitus on käytännössä jotakin vikaa ohjelmassa.
- Varoitukset saat päälle seuraavasti:
- Valitse Options-ikkunan puusta Building->Compiler types->Internal compilation.
- Tarkista, että Deprecation-ominisuuden (ikkunassa oikealla) arvo on true ja Unchecked warnings arvo on false
(Deprection varoittaa kielen vanhentuneiden ominaisuuksien käytöstä).
- Seuraavaksi tutkimme editorin asetuksia. Valitse Options-ikkunan puusta Editing.
- Avaa nykyisestä puun haarasta Indentation Engines->Java Indentation Engine ja merkitse
Number of Spaces per Tab-ominaisuuteen sisennyksessä
käyttämäsi välilyöntien määrä (sopiva arvo on 2:n ja 4:n välillä).
- Avaa vielä puun Editing-haarasta Editor Settings->Java Editor.
- Merkitse Tab Size ominaisuuteen sama numero kuin aiemmin Number of Spaces per Tab-kohtaan.
- Tarkista, että Indentation Engine-ominaisuuden arvo on Java Indentation.
3.4 Help-toiminto
- NetBeans-ohjelmaympäristöissä on varsin hyvä Help-toiminto.
[F1] -näppäimillä saadaan tavallinen Help. Kokeile!
- JavaDoc-dokumenttien käyttäminen edellyttää, että tiedostot on liitetty NetBeansin avustusjärjestelmään.
Liitetään Java-kielen API-dokumentaatio seuraavasti:
- Valitse Tools->Javadoc Manager ja esille tulevasta ikkunasta Add HTTP.
- Kirjoita Javan API-dokumentaation URL ikkunaan: http://java.sun.com/j2se/1.4.1/docs/api/.
Jos sivu on sinulla auki selaimessa (tai tämä dokumentti on koneellasi), voit myös kopioida osoitteen leikepöydälle ja liittää sen ikkunaan. ([Shift-Ins] tai [Ctrl-V])
- Huom! Jos olet asentanut NetBeansin kotikoneellesi ja sinulla on SDK:n helpit (ks. Kurssilla käytettävät ohjelmat,
voit kotikoneella asettaa API-dokumentaation myös paikalliseen hakemistoon (Add Folder).
- [Shift-F1] antaa apua siitä sanasta, jonka kohdalla
kursori on käyttäen ns. JavaDoc-indeksihakua. Kokeile vaikkapa sanoihin String, CompareTo ja return.
Avustus palauttaa luokkaan liittyvän JavaDocin, jos sellainen on saatavilla.
-
Tätä käyttäen voidaan yleensä aina löytää syntaksi halutulle
käskylle. Myöhemmin tässä ohjauksessa käytetään satunnaislukugeneraattoria Math.random().
Kokeile löytää kutsun syntaksi kirjoittamalla koodiin ylimääräinen Math ja paina
[F1]. Huomaa myös NetBeansin ehdottavan automaattisesti luokkaan liittyviä metodeita koodieditorissa.
Muista lopuksi pyyhkiä Math pois koodista.
3.5 Kääntäjän tekemät tiedostot
-
Kokeile vielä ohjelman ajoa.[F6].
Ohjelman toiminta näkyy ohjelman alaosassa olevasssa ajo-ikkunassa.
-
Poistu käyttöjärjestelmään ja tarkista, mitä juuri kirjoittamaasi ohjelmaan liittyviä tiedostoja on syntynyt hakemistoosi
(ohjelmointiympäristö on todennäköisesti lisännyt uusia tiedostoja komentoriviosuudessa kirjoittamiesi lisäksi).
- Mieti, mitä varten mikäkin tiedosto on.
- Aja vielä (nyt NetBeansilla kääntämäsi) ohjelma kuten ensimmäisessä luvussa.
4. Eclipse -editorin käyttöohjeita
Tämä luku on vaihtoehtoinen lukujen 2 ja 3 (JBuilder ja NetBeans-editorien käyttöohjeita) kanssa.
Eclipse on monikäyttöinen, mutta Java-kielelle alunperin suunniteltu IDE.
Se on hyvin taipuvainen ja sitä voidaan käyttää myös esim. c/c++ ohjelmiin, internet sovellusten ja sivujen ja graafisien (widget) ohjelmien tekemiseen.
Kaiken lisäksi se on ilmainen!
4.1 Ikkunat
Eclipse -ympäristö projektin aukiollessa on suurinpiirtein seuraavan näköinen :
Käynnistäessäsi Eclipsen, näet "tervehdys"-ikkunan, josta saat esiin esim. java esimerkkejä, tietoa Eclipsestä ja kaikkea muuta mahdollista.
Myöskin tulee huomata, ettei näkymä välttämättä ole ihan samanlainen kuin ylläolevassa kuvassa. Eclipsessä on erilaisia "näkymiä", joista käyttäjä saa valita mieleisensä(ylläolevassa kuvassa on "Java"-näkymä päällä).
Vasemmasta yläkulmasta saat selville mikä näkymä on tällähetkellä päällä. Avatessasi tai luodessasi Java projektin Eclipse kysyy, että vaihdetaanko näkymää toiseen. Vastaa tähän, että kyllä.
Näyttö koostuu siis pääikkunasta, joka sisältää useampia ali-ikkunoita. Ikkunan kokoa voidaan muuttaa hiirellä tarttumalla kiinni ikkunan reunaan, paikkaa tarttumalla ikkunan otsikkopalkkiin.
Ali-ikkunoiden kokoa voidaan muuttaa pääikkunan sisällä tarttumalla ikkunan reunaan. Hiiren kursori muuttuu kaksipäiseksi nuoleksi, kun olet oikealla kohdalla. Kokeile!
Ikkunasta toiseen voidaan siirtyä näpäyttämällä hiirellä ikkunan otsikkoa.
Pääset käsiksi yläpalkin nappuloihin joko hiirellä tai painamalla
[Ctrl-TAB].
Kooditiedostosta toiseen siirrytään klikkaamalla vastaavan välilehden painiketta
koodieditorin yläpuolella tai Package Explorer-valikon
kautta (
[CTRL-F6] ja
[CTRL-SHIFT-F6] tai yleisesti [CTRL-E]).
- Avaa haluamasi tiedostot (File->Open external file...)
- Kokeile ikkunasta toiseen siirtymistä.
4.2 Menut ja pikanäppäimet
Toimintoja voidaan valita joko hiirellä yläreunasta, tai
painamalla
[F10]) ja siirtymällä kursorilla halutun toiminnon kohdalle.
Toiminto voidaan valita myös painamalla toiminnon korostetua kirjainta
(esim.
[ALT-E] avaa
Edit-valikon).
Siis vaihtoehtoja on useita. Aluksi menujen käyttö on näppärää nuolinäppäimillä tai hiirellä,
mutta haluttaessa tehokkaampaa toimintaa, kannattaa käyttää suoravalintoja.
Kokeillaan
Jarj2.java-ohjelman korjausta ja ajamista edellisen luvun tapaan.
- Sulje aiemmin avaamasi tiedostot
(File->Close all) ja mahdolliset Eclipsen avoinna olevat (Package explorerissa "avoimet siniset kansiot") projektit (Project->Close project, tämä pitää tehdä kaikille avoinna oleville projekteille, älä tallenna muutoksia.).
- Aloitetaan uusi projekti ja määritellään asetukset.
- Avaa Project Wizard. (File->New->Project...)
- Valitse "Java project"
- Anna projektille haluamasi nimi ja varmista, että työhakemistoksi(workspace) tulee alkuperäinen työhakemistosi C:\MyTemp\ohj2\tunnus
- Paina Next. Project Wizard siirtyy projektin asetussivulle(Tai suoraan Finish, kaikki pitäisi oletuksena olla oikein)
- Paina Finish. Projekti on luotu.
- Lisää Jarj2.java projektiin (File->New->File ja anna sille nimeksi Jarj2.java (varmista, että projektisi on valittu) TAI voit suoraan File->New->Class ja syöttää sinne tiedot).
- Muuta Jarj2.java alkuperäiseen muotoonsa, jolloin voit kokeilla kääntäjän virheilmoituksia Eclipsellä.
- Jotkut virheet näkyvät jo koodia kirjoittaessasi (jopa ilman kääntämistä!) alhaalla olevassa Problems läpyskässä.
- Eclipse yrittää automaattisesti kääntää ohjelmaa taustalla kun joko tallennat tai muutat koodia (JOS Project->Build automaticly on päällä), jos kuitenkaan näin ei ole, käännä ohjelma manuaalisesti (Project->Build All) [CTRL-B].
- Virheilmoitukset tulevat ruudun alaosassa olevaan virheikkunaan. Virheikkunan avulla näkee (likimain!) virheiden paikat ohjelmakoodissa. Virheitä voi selata Eclipsessä klikkaamalla hiirellä tullutta virhettä. Voit myös nuolinäppäimillä kursoria ylös tai alaspäin painamalla liikkua virheiden välillä(jos niitä on monta), kun virheikkunassa joku virhe on valittu. Kokeile!
-
Käyttäessäsi NetBeansia, JBuilderia tai Eclipseä huomaat varmaakin, että värit osoittavat jotakin ohjelmakoodissa. Mitä? Värit auttavat paikallistamaan useita virheitä.
- Korjaa ja jatka kunnes kaikki virheet on korjattu (kuten komentorivillä aikaisemmin).
- Kokeile ajaa edellisessä luvussa tekemäsi ohjelma kolmella eri tavalla (Paina aina Cancel jos ohjelma ei lähde käyntiin vaan tulee "outo" ikkuna):
- Valitse hiirellä menuista Run ja sieltä Run...
-
Paina [CTRL-F11] ja [R].
-
Klikkaa Run nappulan("Play"-merkki) oikealla puolella olevaa alaspäin olevaa nuolta ja sieltä Run as->Java Application tai Run valikosta Run as->Java Application.
-
Mikä edellistä tavoista tuntuu parhaalta?
Huomaa, kun kokeilit ENSIMMÄISELLÄ kerralla ajaa ohjelmaa tavoilla 1 ja 2 niin avautui erillinen ikkuna, tässä ikkunassa pystyt määrittelemään esim. erilaiset testirajapinnat, komentorivin erikoiskomennot ja kaikkia paljon muuta.
Kuitenkin kun olet kerran ajanut tavalla 3 Eclipse tekee valmiit "perusasetukset" ohjelmalle, joita kuitenkin pystyt muokkaamaan valikosta
Run->Run... ja valitsemalla sieltä projektisi.
Pikanäppäimet nopeuttavat ympäristön käyttöä huomattavasti. Edellä on jo mainittu
näistä osa. Täydellisen listan Eclipsen pikanäppäimistä ja niiden käyttötarkoituksesta
näet valitsemalla
Window-valikosta
Preferences ja painat aukeavan
ikkunan vasemmasta ylänurkasta
Workbench tekstin vasemmalla puolella olevaa
+ tai - merkkiä niin, että esiin tulee
Keys valikko ja painat täten sitä.
Editoriin on siis asetettu valmiiksi useita eri pikanäppäinvaihtoehtoja (vaihtoehdot on tehty muiden editorien pikanäppäinten pohjalta)!
Lisäksi käyttäjä voi halutessaan mukauttaa haluamansa pikanäppäimet uudelleen. Tässä vaiheessa lienee kuitenkin parasta poistua muuttamatta mitään
[ESC] tai paina
Cancel-nappia.
4.3 Kääntäjän ja editorin asetukset
Saat kääntäjän (ja kyseisen projektisi) asetukset esiin siten, että valitset aluksi
Package Explorer:sta projektisi ja sen jälkeen
Project->Properties. Nyt pitäisi avautua seuraavanlainen ikkuna.
Nyt näet vasemmalla eri kohtien nimet (Info, BeanInfo Path, Builders, Java Build Path jne). Voit siirtyä kohdista toiseen painamalla eri kohtiin hiirellä tai näppäimistöllä siirtyen aluksi vasemmalle ([TAB] tai [SHIFT-TAB]) ja sitten nuolilla ylös- tai alaspäin. Kokeile!
Huomaa myös, että eri asetuskohtien alta ilmestyy vielä paljon erilaisia asetuksia. Kannattaa tutkia (muttei hirveästi muutella jos ei tiedä mitä tekee) tarkasti mitä kaikkia pystyt projektistasi muuttamaan.
-
Java-kääntäjälle voidaan asettaa
optioita siitä, mistä kääntäjä valittaa. Yleisesti ottaen
kannattaa pitää kaikki mahdolliset virheilmoitukset päällä,
koska varoitus on käytännössä jotakin vikaa ohjelmassa.
- Katso kurssin Wikistä miten Eclipsen
asetukset kannattaa laittaa.
4.4 Help-toiminto
- Eclipsen ohjelmaympäristöissä on varsin hyvä Help-toiminto. Help valikosta Help Contents saadaan tavallinen Help. Kokeile!
- [SHIFT-F2] antaa apua siitä sanasta, jonka kohdalla kursori on(tai minkä tekstin koodista on valinnut). Kokeile vaikkapa sanoihin String, CompareTo ja return. Avustus palauttaa luokkaan liittyvän JavaDocin, jos sellainen on saatavilla. Käytä tätä siten, että esim. String sanan kohdalla painat F1 jolloin tulee valikko esiin, ja paina vielä valikosta Javadoc for String kohtaa, niin Eclipse avaa selaimeesi Javadocin Stringistä(Tai suoraan SHIFT-F2.
- Tätä käyttäen voidaan yleensä aina löytää syntaksi halutulle käskylle. Myöhemmin tässä ohjauksessa käytetään satunnaislukugeneraattoria Math.random(). Kokeile löytää kutsun syntaksi kirjoittamalla koodiin ylimääräinen Math ja paina ".". Huomaa myös Eclipsen ehdottavan automaattisesti luokkaan liittyviä metodeita koodieditorissa. Muista lopuksi pyyhkiä Math. pois koodista.
4.5 Kääntäjän tekemät tiedostot
- Kokeile vielä ohjelman ajoa (Run->Run as...>Java Application). Ohjelman toiminta näkyy ohjelman alaosassa olevasssa ajo-ikkunassa.
- Poistu käyttöjärjestelmään ja tarkista, mitä juuri kirjoittamaasi ohjelmaan liittyviä tiedostoja on syntynyt hakemistoosi (ohjelmointiympäristö on todennäköisesti lisännyt uusia tiedostoja komentoriviosuudessa kirjoittamiesi lisäksi ja EHKÄ luonut niille sopivia hakemistoja).
- Mieti, mitä varten mikäkin tiedosto on.
- Aja vielä (nyt Eclipsellä kääntämäsi) ohjelma kuten ensimmäisessä luvussa.
5. Debuggerin käyttö
Kokeillaan
Jarj2-ohjelman ajoa rivi kerrallaan JBuilderin, NetBeansin tai Eclipsen debuggerilla.
-
NetBeans: vaihda vasemmalla olevalta Explorer-ikkunasta Editing-välilehti
Debugging-välilehdeksi.
Eclipse: vaihda näkymä debug näkymäksi Window-ylävalikosta Open perspective->Debug
- Aja ohjelmaa rivi kerrallaan ([F5] tai [F6], Eclipsessä Run->Debug as->Java Applicaton).
Voit myös asettaa koodiin keskeytyskohdan (breakpoint) klikkaamalla koodieditorin vasempaa reunusta
haluamasi rivin kohdalta tai näppäimistöllä (JB: Run->Add Breakpoint->Add Line breakpoint. NB: [Ctrl-Shift-F8]. Eclipse: [CTRL-SHIFT-B]). Valitsemasi rivin kohdalle pitäisi tulla sininen pallukka.
- Tarkista, että WATCH-ikkuna on näkyvissä (JB: Debugatessasi ohjelmaa ikkunan alareunaan
ilmestyy debug-ikkunoita, joissa näkyy tietoa ohjelmasta. Watch-ikkunan saa esiin painamalla ikkunan vasemmassa
reunassa olevasta painikkeesta, jonka työkaluvinkkinä on Data watches. NB: Watch-ikkuna on Debugging-välilehden alin ikkuna.Eclipse: Watch ikkuna on oikeassa ylänurkassa välilehtinimellä Variables)
- Laita yksi kerrallaan WATCH-ikkunaan muuttujat s1, s2 ja t.
(JB: Hiiren oikean napin ponnahdusvalikosta Add Watch. NB:[Ctrl-Shift-F7]. Eclipse: Variables ikkunasta (kun sinne ohjelman ajonaikana ilmestyy muuttujia) oikealla hiirennapilla muutujan päällä ja valikosta Watch)
Laita WATCH-ikkunaan myös ehto s1.compareTo(s2)>0(Eclipse: Window->Show view->Expression -ikkunassa paina hiiren oikeaa nappia ja valikosta Add Watch Expression).
Aluksi muuttujien perässä voi olla virheilmoitus jonka pitäisi poistua kun ohjelman suoritus aloitetaan ja muuttujan "elämä alkaa".
- Katso välillä tulostusruutua (JB: Console output, input and errors, Debug-ikkunassa ylhäällä oleva painike.
NB:Process output koodieditorin alapuolella).Eclipse: Alhaalla on Console-välilehti, josta näkee konsolin tulostuksen.
- Kokeile uudestaan. Käytä myös kursoriin saakka ajamista
(eli siirrä kursori vaikkapa riville s2=t ja paina
[F4]. Eclipsessä käytä Breakpointeja).
- Siirrä vaihtamisessa suoritettavat lauseet samalle riville: t=s1; s1=s2; s2=t;
- Siirry rivin loppuun. ([End])
- Poista rivin loppu. ([Ctrl-T] tai ([Del])
- Poista seuraava sana. ([Ctrl-T])
- Lisää välilyönti.
- Kokeile suoritusta rivi kerrallaan uudelleen, kun ko. lauseet on siirretty.
- Kokeile suoritusta rivi kerrallaan käyttämällä nyt näppäintä
[F6]. Mitä eroa näppäimeen [F5]?
- Lisää ohjelmaan tulostusrivi, joka kertoo ohjelman käyttäjälle mitä ohjelma tekee.
- Tallenna ohjelma lopuksi. ([Ctrl-S])
6. Lohkojen käsittely
Harjoitellaan uuden ohjelman kirjoitusta ja leiketaulun käyttöä.
- Aloita uusi ohjelma nimeltä Jarj3.java.
- JB: [Ctrl-N], valitse Class, OK. Seuraavassa ikkunassa jätä Package-kohta tyhjäksi ja Class Name-kenttään Jarj3.
- NB: [Ctrl-N], valitse puusta Java Classes ja Main, Next. Kirjoita Name-kenttään Jarj3 ja valitse puusta työhakemistosi. Paina kolme kertaa Next-nappia ja lopuksi Finish-nappia.
- Eclipse: [Ctrl-N], valitse puusta Class ja paina Next. Kirjoita Name-kenttään Jarj3. Paina Finish-nappia.
- Kopioi pohjaksi edellinen ohjelma Jarj2.java.
- Aktivoi Jarj2.java-tiedoston ikkuna (Window-valikko,
NB:ssä ja Eclipse:ssä myös [ALT-RIGHT] tai [ALT-LEFT]).
- Valitse koko tiedosto ([Ctrl-END] ja [Ctrl-SHIFT-HOME],
JB:ssä myös hiiren oikean napin ponnahdusvalikosta Select All.Eclipse:ssä [CTRL-A]).
- Kopioi tiedosto leikepöydälle ([Ctrl-Ins] tai [Ctrl-C]).
- Huomaa, että uuden luokan nimen on oltava Jarj3!
-
Tarkoituksena on muuttaa ohjelmaa siten, että järjestetäänkin 3 lukua suuruusjärjestykseen (rivit on numeroitu jotta
alla voidaan viitata riveihin; numeroita ei missään tapauksessa kirjoiteta!):
- LUE ENNEN KIRJOITTAMISTA HUOLELLISESTI ALLA OLEVAT KIRJOITUSOHJEET!
01 import java.io.*; // tarvitaan tietojen syöttöön
02 /**Jarj2
03 * Ohjelma järjestää kolme merkkijonoa aakkosjärjestykseen
04 * @author
05 * @version */
06 public class Jarj3 {
07
08 /**Kysyy käyttäjältä merkkijonon annetulla tulosteella.
09 * @param prompt lause, joka käyttäjä näkee ennen tietojen syöttöä
10 * @return käyttäjän syöttämä merkkijono ilman rivinvaihtoa */
11 public static String kysy(String prompt) {
12 System.out.print(prompt);
13
14 // Syöttöpyyntö ja vastauksen lukeminen
15 BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
16 try {
17 return in.readLine();
18 } catch (IOException ex) { return ""; }
19 }
20
21 /**Pääohjelma
22 * @param args Komentorivillä annetut parametetrit */
23 public static void main(String[] args) {
24 String s1,s2,s3,t;
25 s1 = kysy("Anna 1. merkkijono >");
26 s2 = kysy("Anna 2. merkkijono >");
27 s3 = kysy("Anna 3. merkkijono >");
28
29 if ( s1.compareTo(s2) > 0 ) {
30 t = s1; s1 = s2; s2 = t;
31 }
32 if ( s1.compareTo(s3) > 0 ) {
33 t = s1; s1 = s3; s3 = t;
34 }
35 if ( s2.compareTo(s3) > 0 ) {
36 t = s2; s2 = s3; s3 = t;
37 }
38 System.out.println("Jonot "+s1+", "+s2+","+s3+".");
39 }
40 }
- Kolmannen luvun lukeminen voidaan kopioida vaikkapa 2. luvun
lukemisesta (rivinumerot viittaavat valmiiseen koodiin):
- Siirry rivin 26 alkuun. (nuolet ja [Home])
- Merkitse lohkon alku. (paina [Shift] pohjaan ja pidä se
siellä)
- Siirry seuraavan rivin alkuun. (nuoli alas)
- Merkitse lohkon loppu. (päästä [Shift] ylös)
- Kopioi lohko leikepöydälle. ([Ctrl-Ins] tai [Ctrl-C])
- Liitä lohko leikepöydältä. ([Shift-Ins] tai [Ctrl-V], mahd. uudestaan
jos rivi ei tullut kahdesti)
- Tee riville tarvittavat muutokset.
-
Vertailut saadaan vastaavasti kopioimalla rivit 29-31 (ed.
esim. mukaiset valmiit rivinrot) kahteen kertaan:
- Siirry rivin 29 alkuun. (nuolet ja [Home])
- Merkitse lohkon alku. ([Shift] pohjaan ja pidä siellä)
- Siirry rivin 32 alkuun. ([nuolet alas])
- Merkitse lohkon loppu. ([Shift] ylös)
- Kopioi lohko leikepöydälle. ([Ctrl-Ins] tai [Ctrl-C])
- Liitä lohko leikepöydältä. ([Shift-Ins] tai [Ctrl-V], mahd. uudestaan)
- Tee riveille tarvittavat muutokset.
- Tee loput tarvittavat muutokset.
- Tallenna ohjelma.
- Tarkista ajettava tiedosto ja debuggerin tila.
- JB: Varmista, että uusi ohjelmasi on projektin pääluokka (Run,
Configurations..., Edit..., Main class.... Valitse listasta Jarj3).
Jos et halua vaihtaa pääluokkaa, voit ajaa tekemäsi luokan painamalla hiiren oikeaa nappia
ikkunan vasemmassa reunassa olevassa tiedostopuussa Jarj3.java-tiedoston päällä. Valitse ponnahdusvalikosta
Run using tai Debug using.
- NB: NetBeansilla voi olla useampia debug-istuntoja päällä samanaikaisesti. Muista lopettaa Jarj2-ohjelman debuggaus, ennenkuin
alat debugata Jarj3-ohjelmaa (muuten debuggeri saattaa käynnistää väärän ohjelman). Debuggausistunnon voi lopettaa pikanäppäimellä [Shift-F5].
- Eclipse: Eclipselläkin voi olla useampia debug-istuntoja päällä samanaikaisesti. Muista lopettaa Jarj2-ohjelman debuggaus, ennenkuin
alat debugata Jarj3-ohjelmaa (muuten debuggeri saattaa käynnistää väärän ohjelman). Debuggausistunnon voi lopettaa painamalla punaista neliötä.
- Aja ohjelmaa ja tutki toimiiko. Muista, että debuggeria käyttäessä ohjelma pitää käynnistää
Run in debugger-komennolla. (JB:[Shift-F9], NB: [ALT-F5])
- Lisää myös s3 WATCH-ikkunaan.
Lohkon voi merkitä myös hiirellä. Kokeile sitäkin, mutta
muista, että näppäimistö on aina nopeampi ja tarkempi (kun
sen kunnolla opettelee)!
- Kirjoittamasi koodin voi sisentää automaattisesti valitsemalla halutun alueen ja komennoilla (JB: [Tab] tai [Shift-Tab] NB: Ctrl-Shift-F tai hiiren oikean napin ponnahdusvalikosta Reformat Code. Eclipse:ssä [CTRL-SHIFT-F]).
7. Luokkametodit (funktiot, aliohjelmat...)
Muokataan edellisessä luvussa kirjoitettua ohjelmaa niin, että merkkijonojen vaihto tehdään omassa
aliohjelmassaan (koska Java on oliokieli, aliohjelman tai funktion sijaan virallinen nimitys olisi
luokkametodi tai
staattinen metodi).
- Muokkaa tiedostosta Jarj3.java uusi tiedosto Jarj3a.java:
Jarj3a.java.
- Laita WATCH-ikkunaan muuttujat s1, s2, s3, a, b ja t.
- Kokeile ajaa askel kerrallaan käyttäen sekä [F5] että
[F6] (tai voi olla [F7] ja [F8]). Mikä on näppäinten välinen ero?
- Kommentoi metodista vaihda kaikki rivit, joilla kutsutaan append- tai delete-metodeita. Lisää niiden tilalle seuraavat rivit:
a = b;
b = new StringBuffer(t);
- Tallenna muutettu ohjelma.
- Kokeile ohjelman toimintaa askel kerrallaan. Muuttuvatko s1, s2 ja s3 aliohjelman suorituksen aikana kuten
edellisellä kerralla?
- Poista tai kommentoi viimeksi kirjoittamasi rivit ja palauta alkuperäiset rivit koodiin.
- Käännä Jarj3a.java uudelleen ja kokeile vielä kerran
suoritusta askel kerrallaan. Mieti, miksi versiot käyttäytyvät eri tavalla.
Lisätietoa Javan metodeista ja parametrinvälityksestä on luentomonisteessa: luku 8.6.5.
8. Taulukot
Miten edellistä ohjelmaa pitäisi muuttaa mikäli haluttaisiin
järjestää 4 lukua? Taitaisi jo tulla varsin sotkuiseksi.
- Muutetaan ohjelmaa (kirjoita nimelle Jarj3ta.java, käyttäen pohjana Jarj3.java-ohjelmaa) siten, että apuna käytetään taulukkoa:
Jarj3ta.java
- Aliohjelma vaihda voidaan hakea tiedostosta Jarj3a.java seuraavasti:
- Siirry tiedostoon Jarja3a.java.
- Merkitse aliohjelma lohkoksi (siirry alkuun ja [Shift]
pohjaan, siirry nuolilla loppuun ja [Shift] ylös).
- Kopioi lohko leikekirjaan ([Ctrl-Ins] tai [Ctrl-C]).
- Siirry tiedostoon Jarj3ta.java.
- Liitä lohko leikekirjasta (siirry haluttuun kohtaan ja paina [Shift-Ins] tai [Ctrl-V]).
- Edellinen ohjelma ei ehkä ole yhtä selkeä (?) kuin Jarj3.java,
mutta lukujen lukumäärä esiintyy ohjelmassa enää vain yhdessä paikassa. Missä?
- Tallenna ohjelma.
- Poista WATCH-ikkunasta kaikki tarpeeton:
- Siirry WATCH-ikkunaan.
- Siirry poistettavalle riville.
- Poista rivi. ([DEL])
- ...
- Siirry takaisin editointi-ikkunaan.
- Lisää taulukko luvut sekä muuttujat pienin ja tutki
WATCH-ikkunaan.
- Aja ohjelmaa askel kerrallaan. Toimiiko täsmälleen vastaavasti kuin
Jarj3.java?
- Muuta ohjelmassa KOKO-muuttujan arvoksi 5 ja kokeile toimintaa.
9. Järjestäminen ja Java-kielen kirjasto
Järjestämisessä voimme Java-kielen tapauksessa käyttää apuna
myös valmista
Arrays-luokan metodia
sort.
Rutiinin käyttämistä
varten meidän tarvitsee vain kirjoittaa
IComparable-rajapinnan
toteuttava luokka, joka
osaa verrata järjestettävän taulukon kahta alkiota keskenään
palauttaen negatiivisen luvun, nollan tai positiivisen luvun
sen mukaan, miten verratattavat alkiot suhtautuvat toisiinsa:
- Muuta edellinen ohjelma seuraavanlaiseksi ja tallenna nimellä
Jarjta.java:
Jarjta.java
- Aja ohjelmaa askel kerrallaan. Toimiiko?
- Laita keskeytyskohta riville
return s1.compareTo(s2);
- sekä lisää muuttujat s1 ja s2 WATCH-ikkunaan. Aja ohjelmaa
Run in Debugger-käskyllä. Montako kertaa aliohjelmassa käydään?
- Kirjoita vielä edellisestä korjaillen seuraava ohjelma nimelle
Jarjnum.java:
- Ohjelma joka järjestää merkkijonojen sijasta
kokonaislukuja, mutta käyttää samaa sort-metodia. Lukujen järjestämistä varten ei tarvita
compare-funktiota.
- Aja ohjelmaa rivi kerrallaan. Kokeile luvut-taulukon arvojen muuttamista ajon aikana.
- JB:
Valitse alhaalla olevista Debug-ikkunoista Threads, call stacks and data. Avaa vasemmalla olevaa main-puuta niin pitkälle kuin voit. Huomaa oikeanpuoleiseen ikkunaan tulevia muutujanimiä. Avaa luvut-muuttuja.
Paina hiiren oikeaa nappia jonkin indeksin kohdalla ja valitse ponnahdusvalikosta Change value.... Kirjoita uusi arvo.
- NB: Valitse vasemmassa reunassa olevasta Debug-ikkunasta Local Variables. Avaa luvut-muuttuja.
Paina hiiren nappia jonkin indeksin kohdalla Value-sarakkeessa. Kirjoita uusi arvo.
- Eclipse: tuplaklikkaa debug moodissa oikealla ylhäällä olevasta variables listasta luvut-muuttujaa ja näin voit muuttaa sen arvoa.
- Aja ohjelma ja ota aika kauanko ohjelman suoritukseen menee.
10. Tavoite
Edellisistä ohjelmista
Jarj3a.java näytti ehkä kaikkein selkeimmältä. Siinä oli kuitenkin se vika, että muuttaminen
useamman luvun käsittelyä varten vaatisi suuria muutoksia
itse ohjelmaan.
Jarj3ta.java voidaan helposti muuttaa käsittelemään useampaakin
lukua. Se ei kuitenkaan ole sellaisenaan erityisen selkeä.
Jatkossa pyritään siihen, että em. ohjelma voitaisiin kirjoittaa muodossa:
...
{ /* Pääohjelma */
Luvut luvut = new Luvut();
luvut.lue(System.in);
luvut.jarjesta();
luvut.tulosta(System.out)
// tai System.out.println(luvut);
}
Pääohjelman ja "ylemmän tason" aliohjelmien pitäisi siis olla mahdollisimman selkeitä.
Tämä parantaa ohjelman luettavuutta ja ylläpidettävyyttä.