Ohjelmointi 1, syksy 2007 -- Demo 7

Tehtävät julkaistaan:
 Tiistain luennolla 23.10.2007
Palautus viimeistään:
 30.10.2007 klo 18
100% tehtävistä tarkoittaa:
 5 kpl tehty

Tässä demossa 100% on vain 5 tehtävää. Syy on se, että aikaa jäisi harjoitustyön aloittamiselle. Lisäksi oli tuo alkupuoli kurssista vähän haipakkaa.

Contents

Moduulit ja APIt

Tehtävä 1: Aliohjelman käyttö eri luokasta

Aiemmissa demoissa on työstetty merkkijonon merkkien käsittelyä aliohjelmien avulla. Sijoita aliohjelmat nyt omaan, järkevästi nimettyyn luokkaansa, jossa itsessään ei ole main() -metodia. Tee lisäksi erillinen ohjelma, jossa itsessään ei ole mitään muuta kuin apuluokkaan sijoitettuja aliohjelmia käyttävä testisovellus.

Tehtävä 2: API, dokumentointi ja Javadoc

Varmista, että tehtävässä 1 toteuttamasi luokan kommentit ovat hyvät, ja tee HTML-muotoinen javadoc -dokumentaatio vaikkapa komentoriviä käyttämällä (tai etsi toiminto Eclipsestä.)

Vastauksesi tähän on tuotetun API-dokumentaation etusivu. Sehän on tekstitiedosto, jossa on HTML-tägejä. Lähetä se kuten normaali demovastaus.

Oliot ja viitteet

Tehtävä 3: Pikkukysymys

Luokan, olion ja viitteen roolit sekä olioiden elinkaari (konstruointi, roskaksi muuttuminen) on perustietämystä, joten sitä tullaan mittaamaan tentissä esim. jollakin seuraavanlaisella koodipätkällä (ei tietenkään samalla kuin tässä):

String string, s, t, r;
string = s = r = "t";
t = s;
s = "string";
string = null;

Eli varsinaista koodinymmärrystehtävää paljon lyhempi, kohtuullisen järjetön pätkä, joka täytyy osata lukea siten kuin Java-kääntäjä, ja sitten vielä kertoa, mitä koneen muistista löytyisi pätkän suorittamisen jälkeen.

Kysymys tentissä voisi olla: Piirrä graafisesti paikalliset viitemuuttujat ja olemassaolevat oliot sekä niiden yhteys.

Vastauksesi demossa on tekstitiedosto, joten käytä jotain tällaista notaatiota (ei tabulaattoreita!):

jukka ------->[:String]                  [:String]
               "moi"                      "i"
               ^  ^
               |  |
maija ---------+  |               [:String]
                  |               "mo"
leena ------------+


                    [:StringBuilder]
                     "moi"

Tentissä piirrät nuolia ja laatikoita siten kuin luentomateriaaleissa ja oppikirjassa näet. Viitteestä nuoli olioon, jonka "osoite" on kyseessä.

Jälleen: Graafinen debuggeri mahdollistaa tällaisten kokeilemisen ja opettelun, mutta tentissä (tai aina oikeissa ohjelmointihommissa) sitä iloa ei ole käytössä.

Tiedostot

Tehtävä 4: Word counter

Tee ohjelma, joka lopulta toimii jommalla kummalla seuraavista komentorivikomennoista:

java Laske --words tiedosto.txt

java Laske --lines tiedosto.txt

Näistä ensimmäinen laskee tiedosto.txt:ssä olevat sanat eli tyhjämerkeillä erotetut yhtenäiset osat. Jälkimmäinen laskee tiedoston rivit.

HUOM 1: Komentorivi on mahdollinen antaa Eclipsellä, mutta ehkä helpompaa on kokeilla lopullista ohjelmaa Command Promptissa tai Jalavassa pääteyhteydellä.

HUOM 2: Vasta lopullinen ohjelma tarvitsee komentoriviargumentteja! Siihen asti voit testata algoritmin toimintaa kovakoodatulla testiaineistolla!

... ylipäätään kannattaa ohjelmia kehittää näin; mitä automaattisempaa (mutta toisaalta kattavampaa) testaaminen on, sitä paremmin voi keskittyä itse asiaan eli ohjelman parantamiseen)

Kääreluokat

Tehtävä 5: Javan APIt jälleen.

Tutustu kääreluokkiin Character, Integer, Double, ym. ja muistele toisaalta Javan primitiivityyppejä (char, int, double, ym.)

Tee itse ohjelma, joka tulostaa konsoliin taulukon eri primitiivityyppien arvoalueiden minimi- ja maksimiarvoista ja muistitarpeesta siten kuin APIn kautta saatavat vakiomuuttujat raportoivat ne! Siis lähdekoodisi käyttää kääreluokkia lukujen selvittämiseen.

Esim Integer.MAX_VALUE on suurin arvo int -primitiivityypille. Taulukoi täten kaikki Javan primitiivityypit käyttäen kutakin vastaavan kääreluokan metodeja täsmällisten arvojen löytämiseen!

Bonussektori

Tehtävä 6: Oman harjoitustyön käynnistys

Olet juuri saanut harjoitustyöaiheen. (Jos et ole, pyydä äkkiä sähköpostitse.) Vielä ei tarvita koko harjoitustyötä, mutta jos saat aikaiseksi toimivan rungon, ehkä vähän suunnitelmaa, tai metodin tai pari, niin lähetä ihmeessä bonusvastauksena. Lähtee työ käyntiin, ja samalla voit kuitata demopisteen.

Tätä ei käsitellä demotilaisuudessa.