Helsingin yliopisto
/
Tietojenkäsittelytieteen
laitos
/
Java-ohjelmointi
/
Copyright © 2005 Arto Wikla.
582309 Ohjelmointitekniikka (Java), kurssikoe 5.4.2005/AW
Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen
päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi.
Kirjoita kukin vastaus omalle paperilleen.
Huom: Muistakaa että kurssilla on käytössä ns. koeleikkuri; hyväksytyn
suorituksen edellytyksenä on riittävän kokonaispistemäärän (30) lisäksi
myös vähintään puolet koepisteistä (14). Kannataa siis vastata
useampaan tehtävään.
Huom: Kurssin tulokset julkistetaan kurssisivulla ja ilmoitustaululla viimeistään
maanantaina 25.4. Palautetilaisuus on tiistaina 3.5. kello 17-18. Paikka
ilmoitetaan kurssisivulla.
- Selitä seuraavien luokkien perintähierarkia:
Error
,
Exception
, RuntimeException
,
Throwable
.
- Mitkä poikkeukset ovat checked-poikkeuksia, mitkä taas
unchecked-poikkeuksia? Miten ne eroavat toisistaan poikkeusten
käsittelemisen kannalta?
- Oletetaan, että luokalla
KauheaPoikkeus
on julkinen
parametriton konstruktori ja että kyseessä on
checked-tyyppinen poikkeusluokka. Laadi metodi
vaarallinen()
, joka aiheuttaa
KauheaPoikkeus
-poikkeuksen käsittelemättä sitä itse.
- Laadi metodi
toiveikas()
, joka kutsuu edellisessä
kohdassa laatimaasi metodia vaarallinen()
ja jollakin
tavoin käsittelee sen mahdollisesti aiheuttaman poikkeuksen. Metodi
toiveikas()
siis ei aiheuta mitään poikkeusta.
(6 pistettä)
- Käyttöliittymäelementteihin liitetään tapahtumankuuntelijoita,
jotka perinteisesti ohjelmoidaan toteuttamalla jokin tietty
rajapintaluokka, esimerkiksi
MouseListener
.
Tapahtumankuuntelijan voi ohjelmoida myös käyttäen sopivaa
adapteriluokkaa, esimerkiksi MouseAdapter
. Miten
adapteriluokkaa käytetään tapahtumankuuntelijan toteuttamisessa ja
mitä hyötyä adapteriluokan käyttämisestä voi olla verrattuna
rajapintaluokan toteuttamiseen?
- Voiko sama olio kuunnella useammantyyppisiä tapahtumia (esimerkiksi
tietyn painikkeen painamista ja tietyn valintaruudun
valitsemista)? Voiko samantyyppistä tapahtumaa (esimerkiksi tietyn painikkeen painamista)
kuunnella useampi olio? Perustele vastauksesi.
- Miksi pitkään kestävien asioiden tekeminen tapahtumankuuntelijassa
"hyydyttää" käyttöliittymän, toisin sanoen käyttöliittymä ei vaikuta
reagoivan esimerkiksi painikkeiden painamiseen?
- Oheisen koodin tarkoitus on näyttää ikkuna, jossa on tekstiä. Koodi
kääntyy ilman virheitä, mutta suoritettaessa koodi ei tee mitä sen
on tarkoitus tehdä. Miksei?
import javax.swing.*;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame("My Demo Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("My Demo Text");
}
}
(7 pistettä)
- Javan versio 1.5 toi mukanaan paljon uutuuksia, joista geneerisyys
kaikkine lisäyksineen (Autoboxing, For-Each, ...) oli merkittävin.
Selitä mistä on kysymys ja havainnollista pienin mutta valaisevin
ohjelmaesimerkein tätä uutta käännösaikaista tyyppiparametrointia.
- Oletetaan että tehtävänäsi olisi laatia ohjelma, joka saa syötteenään joukon sanoja.
Syöte voi koostua useista riveistä. Syötteen loputtua ohjelma tulostaa
aakkosjärjestyksessä sanat, joita syötteessä esiintyi ja jokaisen
sanan perässä esiintymisten lukumäärän. Selosta miten käyttäisit hyväksesi
java.util -paketin tarjoamia työkaluja ja Java-kielen uusia ominaisuuksia.
Täydellistä ohjelmakoodia ei tarvitse kirjoittaa, oleellista on
osata soveltaa edellämainittuja työkaluja ja ominaisuuksia annettuun
tehtävään.
(7 pistettä)
- 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
}
Selitä mistä on kysymys ja miksi keskeyttämistä on syytä
tutkia kahdella erilaisella tavalla.
(6 pistettä)
- Täytä erilliselle lomakkeelle
vakuutus kurssikyselyyn vastaamisesta.
Vastausaika päättyy 10.4.2005.
Kurssikysely löytyy laitoksen sivulta
http://ilmo.cs.helsinki.fi/kurssit/servlet/Valinta.
Tämän tehtävän pisteet todellakin saa siis vain jättämällä kyseisen
lomakkeen allekirjoitettuna koevastausten mukana. Laitoksella ei ole mitään keinoa
tarkastaa kurssikyselyyn vastanneiden henkilöllisyyttä.
Ole siis luottamuksen arvoinen! Uudenlaisesta kurssista kaivataan palautetta!
(2 pistettä)
Onnea kokeeseen
&
aurinkoista kevättä!