Ohjelmoinnin jatkokurssi, koe 4.5.2010

Advanced Programming, exam 4.5.2010

Vastaa tehtävät 1, 2 ja 3 erillisille konsepteille. Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, nimi, nimikirjoitus ja opiskelijanumero. Vastaukset palautetaan tehtäväkohtaisiin pinoihin. Vaikka jättäisit johonkin tehtävään vastaamatta, tulee vastauspaperi siinäkin tapauksessa palauttaa.

Answer questions 1, 2 and 3 on to separate sheets. On each sheet write the name of the course, date, your name, your signature and student number. Answers to each question are returned on separate stacks. You have to return a answer sheet for each question with your details, even if you didn't answer to all questions.

Lyhennä metodien nimiä nopeuttaaksesi kirjoittamista: System.out.println();S.o.p();

You can shorten method names for faster writing: System.out.println();S.o.p();

Selvitys (7 p)

Matit ovat vielä vähän hukassa ohjelmoinnin jatkokurssilla nähtyjen käsitteiden kanssa. Auta heitä selvittämällä seuraavat käsitteet heille muutamalla lauseella. Anna jokaisesta oleellisen kohdan koodiesimerkki, ei siis koko luokkaa tms!

Kuvioita (11 p)

Käytössäsi on luokka Kuvio, jonka API, eli ohjelmointirajapinta, on seuraavanlainen.

Kuvio

Neliö

Ohjelmoi luokalle Kuvio (ei abstrakti) aliluokka Nelio, jonka API on seuraavanlainen.

Ympyrä

Ohjelmoi luokalle Kuvio (ei abstrakti) aliluokka Ympyra, jonka API on seuraavanlainen.

Olutmuistiot (12 p)

Opintopiste-nimisessä olutravintolassa pidetään kirjaa asiakkaiden juomista oluista. Asiakkaalle näytetään lista saatavilla olevista oluista. Asiakkaalta kysytään nimi ja oluen numero. Tämän jälkeen olutmuistioon lisätään asiakkaan nimelle juodun oluen nimi. Jos asiakas on jo juonut oluen, sitä ei lisätä muistioon. Tämän jälkeen olutmuistiossa asiakkaan juomat oluet näytetään (ei siis kaikkien asiakkaiden!) ja ohjelman kysely alkaa alusta, eli olutlistaus näytetään. Ohjelman suorituksen ei tarvitse päättyä.

Oluet ovat listassa seuraavasti. Tätä ei tarvitse kopioida vastauspaperiin. Merkitse tämän listan sijainti vaikka kommentilla.



ArrayList<String> oluet = new ArrayList<String>();

oluet.add("Arrogant Bastard Ale");
oluet.add("Weihenstephaner Hefe Weizen");
oluet.add("Avery Maharadja Imperial IPA");
oluet.add("Magister Pils");

Esimerkki tulostuksesta, kun ohjelma on jo ollut suorituksessa jonkin aikaa

Opintopiste
---------------------
1. Arrogant Bastard Ale
2. Weihenstephaner Hefe Weizen
3. Avery Maharadja Imperial IPA
4. Magister Pils

Nimesi: Matti L
Olut: 3

Olutmuistion sisältö
---------------------
Matti L
 - Arrogant Bastard Ale
 - Avery Maharadja Imperial IPA


Opintopiste
---------------------
1. Arrogant Bastard Ale
2. Weihenstephaner Hefe Weizen
3. Avery Maharadja Imperial IPA
4. Magister Pils

Nimesi: Arto V
Olut: 2

Olutmuistion sisältö
---------------------
Arto V
 - Weihenstephaner Hefe Weizen


Opintopiste
---------------------
...

Anna muutaman lauseen korkean tason selitys ohjelman rakenteesta ja toteuta Olutmuistio-ohjelma (koodi paperille).

HashMap

ArrayList