Ohjelmointi I tenttikysymykset 21.2.2000
Arvostelussa kiinnitetään eniten huomiota ratkaisun ideoihin,
syntaksiin liittyvien yksityiskohtien merkitys on paljon vähäisempi
(joskaan ei merkityksetön). Jos aikapula yllättää ja sinun pitää
jättää jotakin kirjoittamatta, pyri siihen, että luokkien määrittelyn
kohdalla poisjäävä osa olisi metodien rungot (kirjoita metodeille
tuolloin vain otsikot). Kaikista tehtävistä saa 0 -- 6 pistettä.
- Selvitä seuraavat olio-ohjelmointiin/Javaan liittyvät asiat lyhyesti
muutamalla virkkeellä:
- Dynaaminen sidonta.
- Sivuvaikutus.
- abstract-määre.
- Luokkamuuttuja.
- Konstruktori.
- Olion tila.
- Tee metodi, joka saa parametrinaan Object-tyyppisiä alkioita
sisältävän 1-ulotteisen vektorin ja palauttaa tuloksenaan
taulukon, jossa ovat alkuperäisessä järjestyksessä kaikki ne
parametrina annetun vektorin alkiot, jotka eivät ole null.
- Mitä tiedät tyyppimuunnoksista? Millaisia tyyppimuunnoksia on?
Mitä tyyppimuunnos tarkoittaa? Missä tilanteissa tyyppimuunnoksia
tehdään Java-ohjelmissa?
- Luokalla Names on instanssimuuttuja private String[] nimet,
johon on talletettuna henkilöiden nimiä. Määrittele ja toteuta
luokkaan funktiotyyppinen metodi,
jolla tutkitaan onko parametrina annettu nimi taulukossa 'nimet'
(tulos on joko true tai false). Metodillasi tulee lisäksi
olla sivuvaikutus: Jos etsitty alkio on taulukossa, se tulee siirtää
taulukon viimeiseksi alkioksi (muiden järjestyksellä ei ole väliä;
ideana on nopeuttaa muiden nimien löytymistä).
- Tee luokka, jonka mukaiset oliot edustavat laillisia hissin
tiloja. Hissi voi olla jossakin kerroksessa, ovet suljettuina tai
ovet kiinni. Edelleen hissi voi olla myös ovet suljettuina kahden
peräkkäisen kerroksen välissä --- ollessaan kahden kerroksen välissä
hissin tilaan liittyy tieto siitä, onko se menossa ylös vai alas.
Huomaa, että hisseihin liittyy vain rajallinen määrä kerroksia.
Totetuta edelliset ominaisuudet mallintava luokka HissinTila.
Tee sille tarvittavat konstruktorit, havainnointimetodit ja tilan
muuttamiseen liittyviä metodeja.