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

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi. Jokainen vastaus omalle arkilleen!
  1. Julkisen ja yksityisen luokka- ja ilmentymäkaluston käyttötapoja voidaan havainnollistaa nelikentällä:
           |  static                      | ei-static
    -------|------------------------------|-------------------------
    public |                              |
    -------|------------------------------|-------------------------
    private|                              |
    -------|------------------------------|-------------------------
    
    
    Selitä millaisia käyttötapoja noilla neljällä erilaisella tapauksella on.
                                                               (14 pistettä)
    

  2. Luokka Yli on määritelty:
      public class Yli {
        public int[] iT;
        private double d;
    
        public Yli() {
          iT = new int[10]; d = 3.14;
        }
        void metA() {
          System.out.println(iT.length);
        }
        public int metB(int par) {
          return iT.length+par;
        }
        String metC(char c) {
          return ""+d+c;
        }
      }
    
    Tee luokalle Yli jokin aliluokka Ali, joka peittää (hides) kentän d, korvaa (overrides) metodin metC, perii (inherits) metodin metB ja kuormittaa (overloads) metodia metA. Miten peitettyjä, korvattuja, perittyjä ja kuormitettuja pääsee mahdollisimman helposti käyttämään luokassa Ali? Vai pääseekö niitä lainkaan käyttämään?
                                                               (10 pistettä)
    

  3. "Miksi ihmeessä tavallisen ohjelmoijan tarvisisi tietää mitään luokkien lataamisesta ja olioiden luomisesta?", parahtaa ystäväsi kuunnellessaan tarinoitasi Java-ohjelmointi -kurssilta. Ystäväsi on suorittanut Ohjelmoinnin perusteet -kurssin ja hän on jopa moneen kertaan kirjoittanut ohjelmaansa sanan static, tosin syytä tajuamatta. Auta ystävääsi ymmärtämään, mitä nuo operaatiot tarkoittavat ja miksi ne on hyvä ymmärtää. Laadi siis asiasta kirjallinen selitys (maksimipituus on 1 konseptiarkki). Muista että esimerkit auttavat oppimisessa. Vastauksen arvioinnissa otetaan huomioon selostuksen ajateltu lukija. Älä siis kirjoita tarkastajalle, joka jo tuntee asian, kirjoita tuolle ystävälle!
                                                               (14 pistettä)
    

  4. Käytössäsi on tekstitiedostojen lukemiseen luokka Syottotiedosto. Luokalla on konstruktori Syottotiedosto(String nimi). Parametrina annetaan tiedoston nimi. Rivejä luetaan luokan ilmentymämetodilla
      public String lueRivi()
    
    Tiedoston loppuminen ilmaistaan null-arvolla.

    Käytössäsi on myös tekstitiedostojen kirjoittamisen väline, luokka Tulostiedosto. Luokalla on konstruktori Tulostiedosto(String nimi). Parametrina annetaan tiedoston nimi. Rivejä kirjoitetaan ilmentymämetodilla

      public void kirjoitaRivi(String rivi)
    

    Poikkeuksiin on varauduttu näissä luokissa: Virheen sattuessa saadaan ilmoitus ja ohjelman suoritus keskeytyy.

    Laadi ohjelma KorvaaMerkki. Ohjelmalle annetaan komentoriviparametreina kaksi tiedoston nimeä. Aluksi ohjelma pyytää käyttäjältä korvattavan merkin ja korvaavan merkin. Sitten ohjelma tekee ensimmäisestä tiedostosta sellaisen kopion, jossa kaikki korvattavat merkit on korvattu korvaavalla merkillä. Kopiotiedoston nimi on tuo toinen komentoriviparametri.

    Ohjelman ei siis tarvitse itse käsitellä poikkeuksia, tiedostonkäsittelyluokat pitävät niistä huolen.

                                                               (14 pistettä)
    
Aurinkoista kesää!