T-106.1210 Ohjelmoinnin peruskurssi, osa 1

Kierros 4, tehtävä 4

Taso ja pistearvo:A 90
Lyhyesti:Luodaan pääohjelma, jonka avulla koekäytetään annettua pankkitililuokkaa.
Mitä opitaan:Luomaan ja käyttämään olioita, kutsumaan metodeja, testaamaan annetun luokan toimintaa.
Toteuttamisen vapaus:Vähäinen. Tässä seurataan vaihe vaiheelta annettua ohjetta.
Realistisuus:Työskentelytavan osalta korkea. Testiohjelman kirjoittaminen jonkin luokan testaamiseen on käytännön ohjelmoinnissa tarvittava taito. Tässä opetusesimerkkinä käytetty pankkitililuokka nyt ei toki ole realistinen; oikean elämän pankkisovellukset ovat tietenkin paljon mutkikkaampia.
Haastavuus:Ei kovin hankala, jos pohjatyö (eli edelliset tehtävät) on tehty ajatuksella.
Työläys:Kevyt tehtävä. Useimmat (ohjelmoinnin aloittelijatkin) selvinnevät tästä parissa tunnissa.

Tehtävänanto

Kirjoittakaa ohjelma, jonka avulla voi testata miten pankin asiakkaita ja tilejä kuvaavat luokat toimivat. Nuo kaksi luokkaa -- Customer ja Account -- annetaan valmiina. Teidän ei tarvitse kirjoittaa tai edes lukea niiden ohjelmakoodia. Projektin readme-tiedostosta löytyvän kuvauksen perusteella pystytte käyttämään luokkia ja tekemään tämän tehtävän vaikkette tiedäkään miten luokkien sisäinen toteutus toimii. Luokkien Customer ja Account sisäistä toteutusta tutkitaan ja muokataan myöhemmässä tehtävässä.

Tässä tehtävässä kirjoitettavan ohjelman pitäisi luoda olioita ja kutsua niiden metodeja täsmälleen tietyllä alla kuvatulla tavalla. Myöhemmissä tehtävissä pääsette vapaammin soveltamaan tässä ja aiemmissa tehtävissä oppimianne perusasioita. Tässä tehtävässä teidän kuitenkin tulee seurata seuraavia ohjeita täsmälleen ja järjestyksessä:

  1. Tuokaa projekti Account Eclipseen. Toimikaa siis samaan tapaan kuin aiemmin ladatessanne Butler-projektin: valitkaa File -> Import..., sitten Existing Projects into Workspace, Select archive file, valitse ope2012.zip ja sieltä projekti Account.
  2. Lukekaa projektin readme-tiedosto (readme.html), josta selviää, miten annettuja luokkia käytetään. (Alihakemistossa doc on myös dokumentaatiota luokista, mutta ÄLKÄÄ lukeko sitä vielä sillä se liittyy myöhempään tehtävään ja voi johtaa harhaan tämän tehtävän suorittamisessa.)
  3. Kokeilkaa luokkien Customer ja Account käyttöä Python-tulkin avulla (ei välttämätöntä). Muistakaa antaa ensin sopiva import-käsky, jotta voitte käyttää pakkauksesta account löytyviä luokkia. Käyttäkää readme-tiedoston kuvausta apuna tutkiaksenne, miten kukin luokkien metodeista toimii. Kun teillä on mielestänne riittävän hyvä käsitys luokkien käytöstä, edetkää seuraavaan kohtaan.
  4. Luokaa uusi moduuli nimeltä account_test.py kansioon account (sinne, missä account.py ja customer.py ovat).
  5. Lisätkää tiedoston alkuun rivit, joilla mukaan tuodaan account ja customer moduulit. (import)
  6. Kirjoittakaa rivit, jotka tekevät seuraavat kohdat täsmälleen annetussa järjestyksessä:
  7. Luokaa asiakasolio, jonka asiakasnumero (id) on 54321 ja jonka nimi on "Teemu Teekkari", ja asettakaa muuttuja viittaamaan tähän asiakasolioon.
  8. Luokaa tiliolio, jonka omistaja on edellä luotu asiakas. Tallentakaa viittaus tähän tiliolioon johonkin muuttujaan.
  9. Kysykää tilioliolta, mikä sen saldo on (siis kutsuu metodia get_balance) ja tulostakaa vastaus.
  10. Lisätkää metodikutsu, joka tallentaa 4000 euroa tilille.
  11. Tulostakaa tilin saldo.
  12. Lisätkää komento, joka ottaa 2500 euroa tililtä.
  13. Tulostakaa tilin saldo.
  14. Lisätkää komento, joka ottaa 2000 euroa tililtä.
  15. Tulostakaa tilin saldo. Huomatkaa, mitä tapahtuu, kun tilillä ei ole riittävästi rahaa. (tähän puututaan myöhemmässä tehtävässä).
  16. Lisätkää komento, joka luo toisen tiliolion, jolla on sama omistaja kuin ekalla tilillä. Tallentakaa johonkin muuttujaan viittaus tähän uuteen tiliin.
  17. Lisätkää komento, joka tulostaa juuri luodun tilin saldon.
  18. Lisätkää metodikutsu, joka siirtää 1800 euroa toiseksi luodulta tililtä ensin luodulle tilille.
  19. Lisätkää vielä kaksi tulostuskäskyä, jotka tulostavat kummankin tilin saldot. Tulostakaa kumpikin saldo omalle rivilleen, alkaen ensin luodusta tilistä.

Esimerkkiajo:

0
4000
1500
-500
0
1300
-1800
Vapaaehtoinen Mutta Erittäin Hyödyllinen Kohta: Koeajakaa ohjelmanne rivi riviltä debuggerityökalua apuna käyttäen. Ohjeet debuggerin käytöstä löytyvät kurssin kotisivuilta. Debuggerin käyttö on erittäin suositeltavaa! Ohjelman suorituksen tutkiminen askel askeleelta antaa konkreettisen kuvan ohjelman toiminnasta ja on suureksi avuksi niin uusia ohjelmointitekniikoita opeteltaessa, uusiin ohjelmakokonaisuuksiin tutustuttaessa kuin virheitä ohjelmasta etsittäessä. Debuggerin käytön opettelu vie hetken, mutta maksaa itsensä moninkertaisesti takaisin kurssin mittaan. Voitte myös pyytää harjoitusryhmän assistentilta apua debuggerin käytön opettelussa. Älä epäröi käyttää debuggeria apuna myös myöhemmissä tehtävissä ilman erillistä kehotusta!

Palauttaminen

Palauttakaa luomanne kooditiedosto account_test.py arvosteltavaksi Goblin-järjestelmään.

Ohjeita ja vinkkejä