Ohjelmointi I tenttikysymykset 20.3.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ä:
- Instanssimuuttuja.
- final-määre periytymisen yhteydessä.
- Polymorfismi.
- Rajapintaluokka.
- Ylikuormittaminen.
- Sarjallinen olio.
- Oletetaan, että ylioppilaskirjoituksissa voi saada vain arvosanoja L (laudatur),
E (eximia), M (magna), C (cum laude), B (lubenter) ja A (approbatur).
Tee metodi, joka saa kirjaimia L, E, M, C, B ja A sisältävän
1-ulotteisen merkkitaulukon (jotka edustavat yksittäisiä arvosanoja) ja laskee
niiden perusteella yleisarvosanan. Kirjaimet voidaan
muuttaa numeroiksi L=6, E=5, ..., B=2, A=1, jolloin yleisarvosana
on arvosanojen keskiarvo pyöristettynä kohti lähimpää arvosanaa
(puolivälin kohdassa pyöristetään ylöspäin; esim. 4.5:tä vastaa E).
Toteuta metodi käyttäen monivalintarakennetta.
- Kerro, mitä tiedät Javan poikkeuksista.
Mitä ne ovat? Mikä niiden rooli on Java-ohjelmoinnin kannalta?
Miten ne ilmenevät ohjelmissa?
- Määrittele ja toteuta julkinen metodi removeDuplicates
luokkaan Luvut, jonka ainoa tietosisältö on kokonaislukutaulukko
alkiot (määrittely: private int[] alkiot;).
Luokassa Luvut taataan, että taulukko alkiot on
aina olemassa (siis se ei ole null) ja sen alkiot ovat
nousevassa suuruusjärjestyksessä.
Metodin tehtävänä on luoda sellainen uusi arvo instanssimuuttujaan
alkiot, että siinä ovat kaikki alkuperäisen taulukon alkiot,
mutta tasan kerran, eli peräkkäin esiintyvät mahdolliset duplikaatit
on poistettu.
- Luokalla Sotu halutaan esittää sosiaaliturvatunnusta.
Laillisessa sotussa XXXXXX-YYYZ (tai 1800-luvulla syntyneille
XXXXXX+YYYZ tai 2000-luvulla syntyneille XXXXXXAYYYZ)
viimeinen numero tai kirjain
Z muodostetaan laskemalla luvusta XXXXXXYYY jakojäännös jaettaessa luvulla
31. Jakojäännös 0-9 vastaa numeroa 0-9. Jäännös 10 -> A,
loput 11-30 -> B, C, D, E, F, H, J, K, L, M, N, P, R, S,
T, U, V, W, X, Y, vastaavasti. Tee luokka Sotu, jolla esitetään
laillisia sosiaaliturvatunnuksia. Toteuta luokalle konstruktorit sekä
3-4 erilaista havainnointimetodia. Mitä muita metodeja luokalla
Sotu voisi olla?