Helsingin yliopisto / Tietojenkäsittelytieteen laitos / Java-ohjelmointi / Copyright © 2004 Arto Wikla.

582309 Ohjelmointitekniikka (Java), kurssikoe 26.3.2004/AW

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi. Kirjoita vastaukset 1-6 omille konseptiarkeilleen!

Vastausten kokomäärittelyissä "sivu" tarkoittaa yhtä A4-sivua. Perinteisesti on tavattu laskea, että yhdellä A4-sivulla on noin 2000 merkkiä. Maksimikokoa lyhyemmätkin vastaukset voivat olla täysin oikeita! Maksimi ei ole siis myös minimi. Toisaalta maksimin lievästä ylittämisestäkään ei rangaista.

  1. Vastaa lyhyesti (maksimikoko sivu/kohta) seuraaviin kysymyksiin:
    1. Jos aiheutuneen poikkeuksen tyyppi sopii monen catch-ilmauksen tyyppiin, millä perusteella catch-valitaan? Anna esimerkkejä.
    2. Jos poikkeuksen tyyppi ei ole yhteensopiva minkään catch-ilmauksen tyypin kanssa, mitä tapahtuu?
    3. Mihin vaittämälauseita (assert) käytetään? Miksi? Millaisissa tilanteissa on viisasta käyttää väittämiä, millaisissa taas tavanomaista poikkeusten heittämistä?
                                                                     (6 pistettä)
    

  2. Käyttöliittymäelementteihin liitetään tapahtumankuuntelijoita, jotka ohjelmoidaan joko toteuttamalla rajapintaluokka tai käyttäen ns. adapteriluokkia. Esimerkkeinä vaikkapa MouseListener ja MouseAdapter. Selitä näiden kahden tavan ja erityisesti adapterin idea. (Vastauksen maksimikoko on yksi sivu.)
                                                                     (5 pistettä)
    

  3. Selitä millainen on ns. Strategia-suunnittelumalli, kun se tulkitaan kooditason arkkitehtuurin malliksi. Millaiseen tilantenteeseen mallia voidaan luontevasti soveltaa? Anna pieni Java-esimerkki. (Vastauksen maksimikoko on kaksi sivua.)
                                                                     (5 pistettä)
    
  4. Vastaa lyhyesti (maksimikoko sivu/kohta) seuraaviin kysymyksiin:
    1. Mistä Javan kokoelmissa (Collection) on kysymys?
    2. Mikä on rajapintaluokkien rooli ja tehtävä kokoelmien määrittelyssä? Anna esimerkkejä.
    3. Luonnehdi seuraavien kolmen luonnetta ja keskinäistä suhdetta: Collection, Map ja Set.
                                                                     (6 pistettä)
    

  5. Selitä säikeen tilat NEW, RUNNABLE, BLOCKED ja DEAD. Miten näihin tiloihin joudutaan, ja miten niistä päästään pois? Vanhentuneista (depricated) operaatioista ei tarvitse kertoa. (Vastauksen maksimikoko on yksi sivu.)

                                                                     (5 pistettä)
    
  6. Seuraava ohjelmahahmo ("idiomi") on tyypillinen:
      void run () {
        try { 
          while (! interrupted () && hasMoreWork) 
            ... // may block and throw..
        }
        catch (InterruptedException e) ...
          // interrupted during sleep or wait 
          ...
        finally 
          ... // cleanup in any case
      }
    
    Mistä on kysymys? (Vastauksen maksimikoko on yksi sivu.)
                                                                     (5 pistettä)
    

Onnea kokeeseen & Hauskaa kevättä!