581253-6 Java(TM)-ohjelmointi: loppukoe 8.10.1997/AW

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, henkilötunnuksesi ja allekirjoituksesi. Jokainen tehtävä on 12 pisteen arvoinen.

  1. Millaisiin käyttötarkoituksiin luokkia (class) käytetään ohjelmia rakennettaessa? Miten eri tapaukset ohjelmoidaan?

  2. Vertaile tiiviin täsmällisesti:
        olion luonti - luokan lataaminen
        korvaaminen (override) - kuormittaminen (overload)
        käännösyksikkö (compilation unit) - pakkaus (package)
    

  3. Tason piste voidaan esittää luokkana
        public class Piste {
          double x, y;
        }
    
    1. Määrittely ei ole kovin "olio-ohjelmointihenkinen". Tee luokasta uusi versio, jossa luokan kentät piilotetaan käyttäjältä ja tietoja käsitellään aksessoreilla (so. kenttiä tutkitaan ja muutetaan vain luokan julkisten metodien avulla). Laadi luokkaan myös parametriton konstruktori pisteen (0,0) luomiseen ja konstruktori annetun pisteen (x,y) luomiseen.

    2. Ohjelmoi aksessoreiden lisäksi luokkaan metodi etäisyys, joka palauttaa arvonaan pisteen etäisyyden parametrina annettuun pisteeseen. (Pisteiden (x,y) ja (u,v) etäisyys on neliöjuuri luvusta (x-u)2+(y-v)2.)

  4. Ei-tyhjiä merkkijonoja säilövä pino on määritelty abstraktina luokkana:
    abstract public class MjonoPino {
    
      abstract public void push(String jono); 
      // vie pinon päälle ei-tyhjän merkkijonon
      // (Operaatio push ei vie tyhjää merkkijonoa pinoon eikä tee mitään
      //  muutakaan tyhjällä merkkijonolla.)
    
      abstract public String pop();          
      // antaa päällimmäisen merkkijonon ja poistaa sen pinosta
      // (Jos pino on tyhjä, pop palauttaa tyhjän merkkijonon, 
      //  so. pinon tyhjyys tunnistetaan tästä.)
    }
    
    
    Laadi pinolle taulukkototeutus. Tiedetään, että merkkijonoja ei kuuna päivänä ole enempää kuin 500. Kaikki toteutuksen yksityiskohdat on kätkettävä pinon käyttäjältä.

  5. Laadi esimerkki rajapintaluokan käyttämisestä parametrivälityksessä. Selitä myös, mitä hyötyä tästä voi olla.