Helsingin yliopisto
/
Tietojenkäsittelytieteen
laitos
/
Ohjelmointitekniikka (Java)
582309 Ohjelmointitekniikka (Java), kurssikoe 28.2.2008/AW
Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen
päivämäärä sekä nimesi, henkilötunnuksesi
ja myös allekirjoituksesi.
Kokeessa saa olla mukana A4-kokoinen "lunttilappu".
Muista kokeen jälkeen vastata kurssikyselyyn!
Linkki kyselyyn löytyy laitoksen opiskelusivulta ja
myös kurssin omalta sivulta!
- Poikkeukset:
-
Selitä luokkien Throwable, Error, Exception ja RuntimeException
luokkahierarkia. Mihin nämä eri luokat on tarkoitettu?
Selitä tarkistettujen (checked) ja tarkistamattomien (unchecked)
poikkeusten ero ohjelmoinnissa.
Miten ne sijoittuvat poikkeusten luokkahierarkiaan.
-
Milloin on syytä heittää tarkistettu, milloin tarkistamaton poikkeus?
Miksi?
Minkä poikkeusluokkien aliluokkina omat poikkeusluokat on syytä
toteuttaa?
(6 pistettä)
- Kokoelmat ja geneerisyys:
- Collections Framework -kirjasto jakautuu kahteen
tietorakenteiden päätyyppiin. Mitkä ne ovat?
Mitkä ovat näiden tyyppien oleelliset erot?
Missä suhteissa ne ovat samanlaisia?
- Kokoelmien joukossa on koko joukko rajapintaluokkia toteuttavia
abstrakteja luokkia. Selitä näiden luokkien olemassaolon tarkoitus.
-
Tarkastellaan luokkaa Pair:
[Huom: Tässä kohdassa koepaperissa oli virhe. Luokan Pair
otsikossa ei näkynyt tyyppiparametria <T>, koska olin
kirjoittanut väkkyrät sellaisinaan ja ilmauksesta tulikin
"html-tägi", joka ei sivulla näkynyt. Tällaista on "atk"... ;-)]
class Pair <T> {
public T first;
public T second;
public Pair (T f, T s) { first = f; second = s; }
public Pair () { first = null; second = null; }
}
Onko luokka
Pair <String>
luokan
Pair <Object>
aliluokka?
Jos on, miksi? Ellei ole, miksei?
Onko taulukko tyyppiä String [ ]
myös tyyppiä Object [ ]?
Jos on, miksi? Ellei ole, miksei?
Onko taulukko tyyppiä
Pair <String> [ ]
myös tyyppiä
Pair <Object> [ ]?
Jos on, miksi? Ellei ole, miksei?
(12 pistettä)
- Säikeet ja GUI:
-
Millä erilaisilla tavoilla säikeen voi luoda?
Miksi yleensäkään tarvitaan rajapintaluokkaa Runnable?
Miksei pelkkä Thread-luokka riitä?
- 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.
- Selitä mitä ovat event dispatch thread ja
worker thread.
(12 pistettä)
Muista siis kokeen jälkeen vastata kurssikyselyyn!
Linkki kyselyyn löytyy laitoksen opiskelusivulta ja
myös kurssin omalta sivulta!