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ä.

  1. Selvitä seuraavat olio-ohjelmointiin/Javaan liittyvät asiat lyhyesti muutamalla virkkeellä:
    1. Dynaaminen sidonta.
    2. Sivuvaikutus.
    3. abstract-määre.
    4. Luokkamuuttuja.
    5. Konstruktori.
    6. Olion tila.
  2. 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.
  3. Mitä tiedät tyyppimuunnoksista? Millaisia tyyppimuunnoksia on? Mitä tyyppimuunnos tarkoittaa? Missä tilanteissa tyyppimuunnoksia tehdään Java-ohjelmissa?
  4. 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ä).
  5. 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.