Demonumero: | 8/11 |
---|---|
Palautus: | tiistaina 27.6.2006 klo 18 mennessä. |
Laskennallinen tehtävämäärä: | |
9 kpl. | |
Pisteitä saa korkeintaan: | |
11 kpl. |
(esim. 12 tehtyä kohtaa -> 11 pistettä Korppiin)
Jos vastaukseen liittyy ohjelmointia, palauta täydellinen Java-luokka tarvittavine metodeineen -- älä pelkkää pätkää tekstitiedostossa!
Nyt on noita luennolla lupaamiani tehtäviä, joissa pääsee tutustumaan Javan kirjastoihin... manuaalit kauniiseen käteen ja sieltä sitten etsimään.
1-4: | (Kertausta, "pistokoe") Tämä on tärkeä tehtävä, johon sopivalla tavalla vastaamalla saattaa pystyä vaikuttamaan siihen, kuinka tarkasti katson läpi aiemmat demovastaukset siinä "105 prosentin mielessä" ja ehkä myös arvosanamielessä... (Jos asiat eivät vielä ole selviä, niin ei muuta kuin lukemaan luentomonistetta ja kirjallisuutta, keskustelemaan muiden kanssa sähköpostilistalla, ja tarvittaessa etsiskelemään ymmärrystä netistä tai muualta.) Olio-ohjelmoinnin periaatteet:
Java-kieli ja -toimintaympäristö:
Yksityiskohtia ja yleistystä:
|
---|---|
5: | (Dynaaminen tietorakenne) Muuta aiemman demon vastaukseen sisältynyt FaniKatsomo sellaiseksi, että katsomon ollessa täynnä ei heitetäkään poikkeusta, vaan luodaan uusi isompi katsomo, johon aiemmat Fanit sekä uusi tulokas siirretään. Aiempi katsomo löytyy tuolta: http://www.cc.jyu.fi/~nieminen/oh2/demot/demo6/malli/FaniTestiLyhyt2.java ja olennainen osuus tästä: class FaniKatsomo { private static final int maxLkm = 10; private int lkm = 0; private Fani[] katsojat = new Fani[maxLkm]; public void lisaa(Fani f) throws KatsomoTaynnaException { if (lkm >= maxLkm) throw new KatsomoTaynnaException(); katsojat[lkm++] = f; } public void meteli(){ for (int i = 0; i<lkm; i++){ katsojat[i].kannata(System.out); // Tietovirta parametrina } } } |
6: | (valmiit tietorakenteet) Toteuta FaniKatsomoCol, joka on kuten FaniKatsomo, mutta fanit sijoitetaan sisäisessä toteutuksessa java.util.ArrayList -luokan instanssiin. Saa toteuttaa joko käyttäen geneerisyyttä tai sitten ilman. |
7: | (Map, geneerisyys) Käytä tässä tehtävässä nimenomaan Java 5.0:n geneerisyyttä. Toteuta puhelinluettelo käyttäen jotakin konkreettista luokkaa, joka toteuttaa java.util.Map-rajapinnan. Tee testiohjelma, jossa Map-metodeilla ensin lisäät ja sitten haet puhelinnumerot Sepe Sudelle, Lukas Podolskille ja Mr. Lordille. Mihin ongelmaan luultavasti törmää, jos toteuttaa puhelinluettelon Mapillä? Miten ongelma korjautuisi? |
8: | (Java-rajapinnat, lajittelu valmiilla algoritmilla) (Tämän voi toteuttaa joko tehtävän 6 vastauksen pohjalta tai erillisessä pääohjelmassa.) Sijoita erinimisiä ja -maalaisia Fani-olioita suuri joukko johonkin Javan valmiiseen tietorakenteeseen ja järjestä se sitten aakkosjärjestykseen käyttäen java.util.Collections -luokan tarjoamia palveluita. Tee tarvittaessa muutoksia Fani-luokkaan. |
9: | (Regular expressions) Opettele käyttämään "säännöllisiä kielioppeja" eli "regular expressioneja" eli "RegExpejä" (paketti java.util.regex). Niitä käyttäen...
|
B1: | (Ohjelman ajonaikainen ympäristö, yhteys käyttöjärjestelmään) Huom: "Not 100% Java..." kaikkea sitä oppii... silti Windows- ja Linux-ympäristössä voitaisiin haluta tehdä tällaista: Käyttäen edellisen demon palindromitarkistusta, toteuta ohjelma, jolle voi käynnistettäessä viedä argumenttina (=komentoriviparametrina) sanan, jonka palindromisuuden ohjelma tarkistaa. Vastaus tulostetaan standardiulostulovirtaan. Jos parametria ei ole annettu, tai on annettu useita parametreja, tulostetaan standardivirhevirtaan virheilmoitus. Jos parametri on -? tai --help, tulostetaan käyttöohje standardiulostulovirtaan. Kokeile ajaa komentoriviltä tai opettele tapa, jolla käyttämässäsi IDEssä voi antaa komentoriviparametrit (JBuilderissa näyttäisi olevan valikon "Run->Configurations" kautta mahdollista tehdä uusi ajoympäristö, jossa voi laittaa komentoriviparametrit kohtaan "Application parameters"... Eclipsessä on varmasti jotain vastaavaa.) |
---|---|
B2: | (Ohjelman ajonaikainen ympäristö, yhteys käyttöjärjestelmään) Tee ohjelma, joka tulostaa ympäristömuuttujien nimet ja arvot. System luokkaa lienee hyvä paikka aloittaa etsiminen. |
B3: | ("Ylläpitoa" eli aiemman ohjelman tutkimista ja muokkaamista) Täydennä Astia.java vastaamaan alussa olevaa kommenttia. |