Ohjelmointi I Tentti
8.10.2001
- Selvitä seuraavat olio-ohjelmointiin/Javaan liittyvät käsitteet lyhyesti (parilla virkkeellä):
(a) staattinen metodi,
(b) ylikuormitus,
(c) pakkaus,
(d) appletti
- Kerro, mitä tiedät Javan olioista. Pyri erityisesti vastaamaan
seuraaviin kysymyksiin:
- Miten oliot ilmenevät ohjelmissa?
- Miten olioiden rakenne
määräytyy?
- Miten olioita luodaan,
havainnoidaan, muutetaan ja poistetaan?
- Miten olioita suojataan
kontrolloimattomalta käytöltä?
3.
Merkkijono x on toisen merkkijonon
y alijono, jos x:n merkit löytyvät y:stä samassa
järjestyksessä, mutta ei välttämättä peräkkäin. Esimerkiksi merkkijonon
LUENTOSALI alijonoja ovat mm. LENTO, TOSI, ESA, UNI ja OSA;
sen sijaan esim. TULI ja LASI eivät ole, vaikka merkit löytyvätkin
kohdejonosta, sillä ne eivät esiinny siinä oikeassa järjestyksessä. Kirjoita
Java-metodi, joka testaa, onko merkkijono toisen merkkijonon alijono.
[Tehtäväpaperin kääntöpuolella on String-luokan kuvaus.]
- Kirjoita metodi, joka lomittaa (eli limittää) kaksi
nousevassa järjestyksessä olevaa kokonaislukutaulukkoa (int[])
yhdeksi uudeksi taulukoksi, jonka alkiot ovat niinikään nousevassa
järjestyksessä. Lomitettavat taulukot annetaan metodille parametreina, ja
tulos palautetaan kutsujalle. Esimerkiksi jos lomitettavat taulukot ovat
{1, 2, 4, 8} ja
{2, 3, 6, 6, 9}, niin tulostaulukko on {1, 2, 2, 3, 4, 6, 6, 8, 9}.
Huomaa, että alkuperäiset taulukot voivat olla erimittaiset. Alkuperäisiä
taulukoita ei saa muuttaa.
- Halutaan toteuttaa luokka Interval, jonka kukin esiintymä
edustaa jotain kokonaislukuväliä. Esimerkiksi [5, 8] on väli, joka
edustaa kokonaislukuja 5, 6, 7 ja 8. Erikoistapauksena on tyhjä väli,
jossa alaraja on suurempi kuin yläraja. Kirjoita Javalla luokka Interval,
ja siihen erityisesti
- esiintymämuuttujat,
- konstruktori(t),
- metodi, joka testaa, onko
parametrina annettu kokonaislukuväli tyhjä,
- metodi, joka määrää kahden
parametrina annetun kokonaislukuvälin leikkauksen
(= yhteisen alueen) ja
palauttaa sen tuloksena kutsujalle; esimerkiksi
-- välien [5, 8] ja [7, 12]
leikkaus on väli [7, 8]
-- välien [5, 8] ja [2,
10] leikkaus on väli [5, 8]
- metodi, joka kasvattaa välin
ylärajaa annetulla määrällä.
Ohjelmointi I Tentti 8.8.2000
- Selvitä seuraavat olio-ohjelmointiin/Javaan liittyvät käsitteet lyhyesti (parilla virkkeellä):
(a) esiintymämuuttuja,
(b) staattinen metodi,
(c) arvoparametri,
(d) ylikuormitus.
- Kerro, mitä tiedät Javan poikkeuksista. Mitä ne ovat? Mikä
niiden rooli on Java-ohjelmoinnin kannalta? Miten ne ilmenevät
ohjelmissa?
- Oletetaan, että merkkijono sisältää lauseen, jossa sanat on eroteltu
välilyönnein (ei muita välimerkkejä). Kirjoita Java-metodi, joka etsii
lauseen pisimmän sanan ja palauttaa sen tuloksena kutsujalle. (Paperin
kääntöpuolella on tärkeimpiä String- ja StringTokenizer-luokkien
metodeja.)
- Kokonaislukutaulukon int[] t alkiot halutaan partitioida
(= jakaa) kahteen osaan parametrin x suhteen siten, että taulukon
alkuun sijoitetaan x:ää pienemmät arvot, ja loppuun
suuremmat/yhtäsuuret arvot. Kirjoita partitiointimetodi Javalla.
Partitioinnin jälkeen taulukon t sisältö on siis seuraavan kuvan
mukainen:
t < x ³ x
- Halutaan toteuttaa luokka Interval, jonka kukin esiintymä
edustaa jotain kokonaislukuväliä. Esimerkiksi [5, 8] on väli, joka
sisältää kokonaisluvut 5, 6, 7 ja 8. Erikoistapauksena on tyhjä väli,
jossa alaraja on suurempi kuin yläraja. Kirjoita Javalla luokka Interval,
ja siihen erityisesti
- esiintymämuuttujat,
- konstruktori(t),
- metodi, joka testaa, onko
parametrina annettu kokonaislukuväli tyhjä,
- metodi, joka määrää kahden
parametrina annetun kokonaislukuvälin leikkauksen
(= yhteisen alueen) ja
palauttaa sen tuloksena kutsujalle; esimerkiksi
-- välien [5, 8] ja [7,
12] leikkaus on väli [7, 8]
-- välien [5, 8] ja [2,
10] leikkaus on väli [5, 8]
- metodi, joka kasvattaa välin
ylärajaa annetulla määrällä.