Käytössäsi on luokka IntJoukko, jonka "API" kokonaisuudessaan
on seuraavanlainen:
- public IntJoukko(int kapasiteetti)
luo tyhjän IntJoukko-olion, jossa oletusarvoisesti
on varauduttu parametrina annettuun joukon kokoon
- public boolean lisaa(int alkio)
lisää joukkoon alkion, ellei se jo ollut siellä;
palauttaa true, jos todella lisättiin, palauttaa arvon false, jos
alkio jo oli joukossa
- public boolean poista(int alkio) poistaa joukosta alkion,
jos se siellä sattui olemaan;
palauttaa true, jos todella poistettiin, palauttaa arvon false, jos
alkiota ei edes ollut jo joukossa
- public boolean kuuluu(int alkio)
palauttaa true, jos alkio kuuluu joukkoon ja
palautta arvon false, jos alkio ei kuulu joukkoon
- public int mahtavuus() joukon koko (eli joukon alkioiden
lukumäärä)
- public int[] toIntArray()-metodi palauttaa arvonaan
kokonaislukutaulukon, joka sisältää täsmälleen kaikki joukon alkiot.
Myös nollan alkion mittainen taulukko on täysin mahdollinen.
- public String toString()-metodi tuottaa joukosta
String-esityksen tyyliin
{-3, 1, 76}
Mitään muuta et tiedä
luokan IntJoukko rakenteesta tai toteutuksesta.
Et esimerkiksi sitä, onko toteutus samantapainen
kuin harjoitustehtävissä!
Ohjelmoi luokalle IntJoukko aliluokka
IntJoukkoPlus, jonka "API" on seuraavanlainen:
- public IntJoukkoPlus()
luo tyhjän IntJoukkoPlus-olion, jossa oletusarvoisesti
on varauduttu 100 alkion kokoisiin joukkoihin
- public IntJoukkoPlus(int kapasiteetti)
luo tyhjän IntJoukkoPlus-olion, jossa oletusarvoisesti
on varauduttu parametrina annettuun joukon kokoon
- public IntJoukkoPlus yhdiste(IntJoukkoPlus toinen)
palauttaa arvonaan joukon, joka sisältää kaikki this-joukon
ja toinen-joukon alkiot
- public IntJoukkoPlus leikkaus(IntJoukkoPlus toinen)
palauttaa arvonaan joukon, joka sisältää täsmälleen kaikki alkiot, jotka
kuuluvat sekä this-joukkoon että toinen-joukkoon
- public IntJoukkoPlus erotus(IntJoukkoPlus toinen)
palauttaa arvonaan joukon, joka sisältää kaikki this-joukon
alkiot, jotka eivät kuulu toinen-joukkoon
Havainnollista erillisellä pääohjelmalla kaikkien
IntJoukkoPlus-luokan operaatioiden, myös perittyjen,
käyttöä.
(10 pistettä)
Tee ohjelma Sanakirja.java, joka tarjoaa sanakirjapalvelun:
Ensin ohjelma pyytää käyttäjältä sanakirjatiedoston nimen.
Sitten ohjelma lukee tästä
tekstitiedostosta sanapareja sana-käännös.
Jokainen sana on tiedostossa omalla rivillään, Jokainen pariton
rivi esittää sanaa alkukielellä. Jokaista paritonta riviä
seuraava parillinen rivi on edellisen rivin sanan käännös.
Opiskeltuaan sanaston ohjelma reagoi jokaiseen käyttäjän
kirjoittamaan syöttöriviin (= sana alkukielellä) tulostamalla
näytölle kyseisen sanan käännöksen tai ilmoituksen, ettei
käännöstä löydy. Kun käyttäjä kirjoittaa tyhjän syöttörivin,
ohjelman suoritus päättyy.
Saat tyytyä pitämään "sanoina" yksittäisiä syöttörivejä sellaisinaan,
mutta muuten ohjelman on varauduttava virheisiin ja käsiteltävä poikkeukset.
Virheilmoitusten pitää olla havainnollisia.
Kaytä ratkaisussasi
HashMap<K,V>-luokkaa:
- public HashMap<K,V>() luo tyhjän HashMap-olion,
joka kuvaa K-tyyppisiä olioita V-tyyppisiksi olioiksi
- public V put(K key, V value)
liitää HashMap-olioon assosiaation key-->value;
jos avaimeen jo
liittyi assosiaatio, metodi korvaa sen uudella ja palauttaa arvonaan
vanhan merkityksen; jos avainta ei löytynyt, metodi
palauttaa arvon null
- public V get(Object key)
palauttaa arvonaan key-avaimeen liitetyn arvon;
jos avainta ei löydy, metodi palauttaa arvon null
- public boolean containsKey(Object key)
true jos avainten joukossa on key, muuten
false
- public V remove(Object key)
poistaa avaimen key ja siihen liittyneen arvon,
ts. assosiaatio key-->value poistetaan,
palauttaa arvonaan poistetun arvon value;
palauttaa null, jos avainta ei löydy
- public String toString()
tuottaa merkkiesityksen HashMap-oliosta,
komponentit muokataan niiden omilla toString()-metodeilla
(10 pistettä)