Helsingin yliopisto / Tietojenkäsittelytieteen laitos / Copyright © 2010 Arto Wikla.

Ohjelmoinnin perusteet, kurssikoe 19.10.2010/AW

Kirjoita jokaisen vastauspaperisi alkuun kurssin nimi ja kokeen päivämäärä sekä nimesi, opiskelijanumerosi (tai henkilötunnuksesi) ja allekirjoituksesi. Jokainen vastaus (1, 2, 3) kirjoitetaan omalle arkilleen! Saat vastata suomeksi, ruotsiksi tai englanniksi. Jos on tarpeen, saat jopa käyttää kaikkia näitä kieliä, kunhan vastaukset varmasti ovat ymmärrettävissä.


    1. Luotollinen tili voi olla positiivinen tai negatiivinen. Tilillä säilytetään vain kokonaisia euroja. Toteuta luotollinen tili luokkana LuTi.

      LuTi-API:

      • public LuTi() luo LuTi-olion, jonka alkusaldo on 0 euroa.
      • public LuTi(int saldo) luo LuTi-olion, jonka alkusaldo annetaan.
      • Aksessorilla pano tilille talletetaan rahaa.
      • Aksessorilla otto tililtä nostetaan rahaa.
      • Aksessori saldo palauttaa arvonaan tilin nykysaldon.

    2. Säätiöllä on kaksi tiliä. Toinen tili on omalle rahalle, toinen tili on Raha-automaattiyhdistykseltä saadulle tukirahalle. Kutsutaan tilejä nimellä "varat" ja "tuki". Tuki-tili ei saa koskaan olla negatiivinen. Varat-tili voi olla negatiivinenkin. Tilin negatiivinen arvo tarkoittaa, että säätiö on velkaa, positiivinen että säätiöllä on rahaa. Ohjelmoi luokka Saatio säätiön toteutukseksi. Tilien toteutuksessa on käytettävä a-kohdan luokkaa LuTi.

      Saatio-API:

      • public Saatio(int varat, int tuki) luo Saatio-olion, jonka tilien alkusaldot annetaan parametreina.

      • getVarat, getTuki ja getTase palauttavat arvonaan säätiön tilitietoja, viimeksimainittu tarkoittaa säätiön kokonaistilannetta eli tilien summaa.

      • public void varallisuusmuutos(int maara) muuttaa varat-tilin saldoa parametrin verran.
      • public boolean tukeaTulee(int maara) lisää tuki-tilin saldoa parametrin verran; vain positiivinen tuki kelpaa. Jos Raha-automaattiyhdistys yrittää ottaa rahaa säätiöltä "negatiivisen tuen" nimissä, metodi ei muuta tilin saldoa ja palauttaa arvon false, muuten metodi palauttaa arvon true.

      • public int siirraTukeaVaroihin(int maara) siirtää parametrin verran rahaa tuki-tililtä varat-tilille. Jos siirrettävää ei ole pyydettyä määrää, siirretään, mitä voidaan. Jos parametri on negatiivinen, mitään siirtoja ei tehdä — eihän varallisuutta voi ruveta tueksi kutsumaan. Arvonaan metodi palauttaa siirretyn määrän.
        [(21.10.) Huom: Tässä kohdassa oli erehdyksessä public double siirraTukeaVaroihin(int maara). Virhe tehtävässä otetaan huomioon arvostelussa.]

      • public String toString() palauttaa arvonaan selkeän merkkijonoesityksen säätiön tilasta

    3. Havainnollista Saatio-luokan käyttöä toteuttamalla luokka SaatioEsittely, jonka pääohjelma esittelee monipuolisesti luokan Saatio käyttöä. Ohjelman ei tarvitse eikä ole syytä lukea mitään.
                                                                                             (15 pistettä)
    

  1. Selitä selkeästi käsitteet parametri, kuormittaminen, kapselointi. Anna myös havainnollisia esimerkkejä.
                                                                                             (9 pistettä)
    
    

  2. Tee ohjelma, joka ensin kysyy syötettävien kokonaislukujen lukumäärän, sitten lukee tuon määrän lukuja taulukkoon ja lopuksi tarjoaa seuraavan palvelun: Ohjelmalle annetaan lukuja yksi kerrallaan ja ohjelma selvittää, löytyykö luku taulukosta. Etsimiseen on käytettävä binäärihakua. Saat olettaa, että kaikki syötteet ovat kelvollisia.
                                                                                             (12 pistettä)