Ohjelmointi II Tentti 20.12.2000


1. Selvitä esimerkkien avulla, mitä tarkoittavat käsitteet
 (a)  korvaavuusperiaate
 (b) tunnisteen dynaaminen tyyppijoukko
 (c) yhden valinnan periaate
 (d) erikoistulkinta
 

2. Rutiini voi päättyä paitsi normaalisti, myös
virhetilanteeseen. Analysoi miten kutsujalle ilmoitetaan eri
tilanteista ja miten sopimuspohjaisuus ja poikkeukset nivoutuvat
kokonaisuuteen.
 

3. Luokka Työntekijä perii luokalta Henkilö
piirteet nimi, osoite, henkilötunnus ja syntymävuosi sekä
esittelee omat piirteensä ammattinimike, palvelukseentulovuosi
ja kkPalkka.  Tehtävänäsi on kirjoittaa yhtiötä mallintavaan
luokkaan rutiini, joka lajittelee kaikki työntekijät ensisijaisesti
nimen mukaan nousevaan järjestykseen ja toissijaisesti (siis
samannimiset työntekijät) palvelukseentulovuoden mukaan laskevaan
järjestykseen.
 

4. Toteuta luokka Tili, joka kuvaa kirjanpidon
tilikäsitettä. Tarpeellisia operaatioita ovat ainakin pano,
nosto, saldo ja viimeisetTapahtumat.  Kaikki panot ja otot on
talletettava tilin yhteyteen siten, että tilitapahtumat voidaan
milloin tahansa käydä läpi aikajärjestyksessä (viimeisetTapahtumat saa argumenttinaan kokonaisluvun k, joka
ilmaisee kuinka monta viimeistä tapahtumaa halutaan). Tilitapahtumaa ei voi
jälkikäteen pyyhkiä pois. Tilillä oleva saldo on voitava selvittää
käymättä tilitapahtumia läpi. Saldo ei saa mennä negatiiviseksi.
 

5. Toteuta Tili-luokan perijä Luottotili, jossa on
luottorajaan kohdistuvat operaatiot annaLuottoraja ja
asetaLuottoraja. Tililtäottojen yhteydessä saldo voi mennä
luottorajan verran negatiiviseksi. Mieti tarkkaan kuka saa asettaa
luottorajoja ja miten sitä kontrolloidaan.