Ohjelmointi I Tentti 8.10.2001

 

  1. Selvitä seuraavat olio-ohjelmointiin/Javaan liittyvät käsitteet lyhyesti (parilla virkkeellä):
    (a) staattinen metodi,
    (b) ylikuormitus,
    (c) pakkaus,
    (d) appletti

  2. 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.]

 

 

  1. Kirjoita metodi, joka lomittaa (eli ’limittää’) kaksi nousevassa järjestyksessä olevaa koko­naislukutaulukkoa (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.

 

 

  1. Halutaan toteuttaa luokka Interval, jonka kukin esiintymä edustaa jotain kokonais­lukuvä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

 

  1. Selvitä seuraavat olio-ohjelmointiin/Javaan liittyvät käsitteet lyhyesti (parilla virkkeellä):
    (a) esiintymämuuttuja,
    (b) staattinen metodi,
    (c) arvoparametri,
    (d) ylikuormitus.

 

  1. Kerro, mitä tiedät Javan poikkeuksista. Mitä ne ovat? Mikä niiden rooli on Java-ohjel­moin­nin kannalta? Miten ne ilmenevät ohjelmissa?

 

 

  1. 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.)

 

 

  1. 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

 

 

 

  1. 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ä.