581326-3 Java-ohjelmointi, koe 28.6.2006/AW (Avoin yliopisto)

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi. 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 pistettä kolmannen ulottuvuuden koordinaatilla z (double-arvo sekin). 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ä ja vertaile lyhyesti mutta täsmällisesti seuraavia asioita:

    1. luokan lataaminen ja olion luonti
    2. luokkametodi ja ilmentymämetodi
    3. yliluokka ja aliluokka
    4. abstrakti luokka ja rajapintaluokka
                                                                                             (18 pistettä)
    

  3. Toteuta ohjelma EriSanoja tekstitiedoston sana-analyysiin. Aluksi ohjelma pyytää analysoitavan tiedoston nimen käyttäjältä. Ohjelman tehtävä on tulostaa kuvaruudulle kaikki tiedostossa esiintyneet erilaiset sanat aakkosjärjestyksessä. Kukin sana tulostetaan siis vain kerran. Ohjelman on varauduttava virheisiin ja käsiteltävä poikkeukset. Virheilmoitusten pitää olla selkeitä.

    "Sana" tarkoittaa tässä tehtävässä mitä tahansa merkkien jonoa, joka ei sisällä välilyöntiä tai rivinvaihtoa. "Aakkosjärjestykseksi" kelpuutetaan tässä tehtävässä String-luokan compareTo-aksessorin määrittelemä järjestys.

    Vihjeitä: Ratkaisussa saa (mutta ei ole pakko!) kayttää luokkaa Vector<E>. Jos et käytä Vector-oliota, voit olettaa, ettei erilaisia sanoja ole enempää kuin 10000. Jos käytät Vectoria, seuraavasta Vector<E>-luokan API-kuvauksen osasta voi olla hyötyä:

                                                                                             (17 pistettä)
    

Onnea kokeeseen ja hauskaa kesää!