Helsingin yliopisto / Tietojenkäsittelytieteen laitos / 581258-1 Johdatus ohjelmointiin
Copyright © 1997 Arto Wikla. Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin, kuten kaupallisilla tai muilla kursseilla, on kielletty.

581258-1 Johdatus ohjelmointiin: 2. välikoe 18.12.1997/AW

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, syntymäaikasi ja allekirjoituksesi.

Ohjelmointitehtävien ratkaisuissa saa käyttää Lue-luokan tarjoamia välineitä.

  1. Vertaile tiiviin täsmällisesti:
       alkeistyyppi (primitive type) - viittaustyyppi (reference type)
       käännösyksikkö (compilation unit) - pakkaus (package)
       olion luonti - luokan lataaminen
                                                                  (6 pistettä)
    
  2.                                                               (5 pistettä)
    

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

  4. Selitä täsmällisen tarkasti Javan ns. näkyvyyssäännöt (scope rules). Millaisia näkyvyysalueita kielessä on ja miten nimien näkyvyyttä säädellään? Jos metodissa käytetään nimeä "Nimi", niin mistä ja missä järjestyksessä tuolle nimelle etsitään merkitystä?
                                                                  (5 pistettä)
    

  5. Käytössäsi on luokka SyoTdsto syöttötiedoston lukemiseen. Luokalla on konstruktori:

    Luokassa on metodi rivin lukemiseen:

    Laadi luokkaa SyoTdsto käyttäen ohjelma, joka pyytää käyttäjältä syöttötiedoston nimen sekä korvattavan merkin (vanhaMerkki) ja korvaavan merkin (uusiMerkki). Ohjelma tulostaa kuvaruudulle syöttötiedoston sellaisena, jossa jokainen vanhaMerkki on korvattu merkillä uusiMerkki.

                                                                  (5 pistettä)