Helsingin yliopisto / Tietojenkäsittelytieteen laitos / Java-ohjelmointi / Copyright © 2005 Arto Wikla.

581325-0 Java-ohjelmointi, koe 12.12.2005/AW

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi. Kirjoita jokainen vastaus omalle konseptiarkilleen! Tässä kokeessa saa poikkeuksellisesti käyttää "lunttilappua". Sen koko saa olla enintään A4.

  1. Luokka Piste on määritelty:
    public class Piste {
      private static int lkm=0;
      private int x=0, y=0;
      private final int minä;
      public Piste(int x, int y) {
        this.x = x; this.y = y;
        ++lkm; minä=lkm;
      }
      public int kuka() {return minä;}
      public void aseta(int x, int y) {
        this.x = x; this.y = y;
      }
      public String toString() {
        return "("+ kuka() + ")(" + x+"," + y + ")";
      }
    } 
    
    Ohjelmoi tälle luokalle aliluokka VarillinenPiste, joka on kuin piste täydennettynä väriä esittävällä double-arvolla. VarillinenPiste-ilmentymiä luodaan konstruktoreilla: VarillinenPiste-oliolle on käytettävissä aksessorit:

    Ohjelmoi luokkaan VarillinenPiste vain tarpeelliset osat. Luokkaa Piste ei saa muuttaa.

                                                               (17 pistettä)
    

  2. "Miksi ihmeessä tavallisen ohjelmoijan tarvitsisi tietää mitään joistakin 'abstrakteista' luokista ja 'rajapintaluokista'", vaikeroi ystäväsi kuunnellessaan tarinoitasi Java-ohjelmointi -kurssilta. Ystäväsi ymmärtää hyvin yliluokan, aliluokan ja periytymisen ideat, mutta abstrakti luokka (abstract class) ja rajapintaluokka (interface) ovat ystävällesi tuntemattomia ja käsittämättömiä. Auta ystävääsi ymmärtämään, mitä nämä käsitteet tarkoittavat ja mihin näitä välineitä voi käyttää ohjelmoinnissa. Laadi asiasta kirjallinen selitys (maksimipituus on 1 konseptiarkki, siis 4 sivua). Esimerkit ovat välttämättömiä näiden asioiden oppimisessa! Vastauksen arvioinnissa otetaan huomioon selostuksen ajateltu lukija. Älä siis kirjoita tarkastajalle, joka jo tuntee asian, kirjoita tuolle ystävälle! Älä myöskään viittaa vastauksessasi muihin vastauksiin, koska kaikilla vastauksilla on eri tarkastaja.
                                                               (19 pistettä)
    

  3. Tee ohjelma, joka tarjoaa seuraavan kielenkäänöspalvelun: Ensin ohjelma lukee tekstitiedoston, jossa rivillä 1 olevan alkukielisen sanan käännös on rivillä 2, rivillä 3 olevan alkukielisen sanan käännös on rivillä 4, jne. Siis jokaisen parittoman rivin alkukielisen sanan käännös on seuraavalla parillisella rivillä. Jos tiedostossa on pariton määrä rivejä, viimeisen rivin sana jätetään ottamatta huomioon. Saat olettaa, että kullakin rivillä on vain yksi sana. Koko tiedoston puuttumiseen ja muihin virhetilanteisiin on kuitenkin varauduttava.

    Muodostettuaan yllä kuvatulla tavalla itselleen sanakirjan ohjelma tarjoaa käännöspalvelun: Kun käyttäjä kirjoittaa sanan alkukielellä, ohjelma joko kertoo sanan käännöksen tai ilmoittaa, että kysytty alkukielinen sana oli tuntematon. Suunnittele ja toteuta itse ohjelman loppuminen.

    [Koetilanteessa annettiin lisäohjeita suomeksi ja englanniksi: 1. tekstitiedoston nimi pyydetään käyttäjältä, 2. jos alkukielinen sana ei ole yksikäsitteinen, viimeisin jää voimaan, 3. kyseessä ei siis ole assosiaatio "sana-sanalista" vaan "sana-sana".]

                                                               (17 pistettä)
    

Onnea kokeeseen & Hauskaa Joulua!