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

581325-0 Java-ohjelmointi, koe 10.12.2007/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 TasonPiste on määritelty:
    public class TasonPiste {
      private static int lkm=0;  // luotujen pisteiden laskuri
      private final int minä;    // pisteen yksilöllisyys
      private double x, y;       // koordinaatit
      public TasonPiste(double x, double y) {
        this.x = x; this.y = y;
        ++lkm; minä=lkm;
      }
      public int kuka() {return minä;}
      public void aseta(double x, double y) {
        this.x = x; this.y = y;
      }
      public String toString() {
        return "("+ minä + ")(" + x+"," + y + ")";
      }
    } 
    
    Ohjelmoi tälle luokalle aliluokka AvaruudenPiste, joka täydentää tason perittyjä koordinaatteja x ja y kolmannen ulottuvuuden koordinaatilla z. AvaruudenPiste-ilmentymiä luodaan konstruktoreilla: AvaruudenPiste-olioita halutaan käsitellä seuraavin aksessorein:

    Ohjelmoi luokkaan AvaruudenPiste vain tarpeelliset osat. Luokkaa TasonPiste ei saa muuttaa.

                                                                                  (17 pistettä)
    

  2. Selitä lyhyesti mutta täsmällisesti seuraavat:

    1. luokan lataaminen ja olion luonti
    2. luokkametodi ja ilmentymämetodi
    3. yliluokka ja aliluokka
    4. polymorfismi
                                                                                  (16 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 täsmälleen yksi sana. Syöttötiedoston nimi annetaan komentoriviparametrina. Jos alkukielinen sana ei ole yksikäsitteinen, viimeisin käännös jää voimaan. Koko tiedoston puuttumiseen ja muihin virhetilanteisiin on 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.

    Jos haluat, voit käyttää (mutta ei ole pakko!) luokan HashMap<K,V> ilmentymää tietorakenteena. Jos et käytä HashMap<K,V>-oliota, voit olettaa, ettei tiedostossa ole enempää kuin 10000 sanaparia. Jos käytät HashMap<K,V>-rakennetta, seuraavasta API-kuvauksen osasta voi olla hyötyä:

                                                                                 (17 pistettä)
    

Onnea kokeeseen & hauskaa joulua!