T-106.1212 Grundkurs i programmering

Rond 4, uppgift 3

Nivå och poängvärde:A 90
Kort beskrivning:Vi skapar en startmetod, med vilken vi provar den givna bankkonto-klassen.
Vad vi lär oss:Att skriva en startmetod, att spara en klass man skrivit själv, att testa funktionaliteten för en färdigt given klass.
Frihet i implementationen:Liten. Här följer man instruktionerna till punkt och pricka.
Realism:Tämligen hög. Att skriva en startmetod för att testa någon klass är någonting man måste göra ofta. I den här uppgiften är dock den givna klassen inte väldigt realistisk; riktiga bankprogram är givetvis mycket mer komplicerade.
Utmaning:Inte värst svår, om de tidigare uppgifterna är gjorda med eftertanke.
Arbetsmängd:Lätt. De flesta klarar denna uppgift på ett par timmar.

Uppgiftsbeskrivning

Skriv ett huvudprogram med vilket du kan testa hur klasserna som beskriver bankens kunder och konton fungerar. Dessa två klasser -- Customer och Account -- ges färdigt. Ni behöver alltså inte skriva eller ens läsa deras programkod. Utgående från beskrivningen i projektets readme-fil torde du kunna använda dessa klasser utan att veta hur de är implementerade. Klasserna Customer och Account kommer att granskas noggrannare i senare uppgifter.

I denna uppgift bör huvudprogrammet skapa objekt och anropa deras metoder exakt enligt instruktionerna nedan. Senare kommer det att finnas en större frihet att lösa en uppgift, men nu ska du bara göra som det står nedan:

  1. Hämta projektet Account till Eclipse. Gör alltså som förut då ni laddade Butler-projektet: välj File -> Import..., sedan "Existing projects into Workspace", "Select archive file", välj kursens zip-fil och därifrån projektet Account.
  2. Läs projektets readme-fil (readme.html), där det framgår hur de givna klasserna ska användas. (I mappen doc finns också dokumentation om klasserna, men läs INTE detta ännu, det får du göra i en senare uppgift.)
  3. Pröva använda klasserna Customer och Account med Python-tolken. Kom ihåg att först ge ett passligt import-kommando, så att ni kan använda klasserna i paketet src.account. I readme-filen står det hur de olika metoderna fungerar. När ni har förstått hur klasserna fungerar, gå vidare till nästa punkt.
  4. Skapa en ny modul med namnet account_test.py i mappen src.account. Klicka i Package Explorern på mappen account (inte projektnamnet Account) och med en högerklickning välj: New -> Pydev Module. Ge namnet och välj Module: Main
  5. I den nyskapta filen, lägg till kommandona för att importera modulerna account och customer (import).
  6. Skapa en ny huvudfunktion main() i er nyskapta modul account_test. (Instruktioner i kursmaterialet eller i någon lärobok.)
  7. I huvudfunktionen: skriv ett print-kommando, som skriver ut exakt följande text: "Creating a test client."
  8. Lägg till ett kommando i huvudfunktionen som skapar ett kundobjekt, vars kundnummer (id) är 54321 och vars namn är "Teemu Teekkari", och skapa en variabel som pekar på detta objekt. (Variabelns namn kan ni bestämma själva.)
  9. Lägg till ett print-kommando, som printar: "Creating an account. Its balance is now:"
  10. Lägg till ett kommando som skapar ett konto-objekt, vars ägare är kunden skapad ovan. Spara referensen till detta konto-objekt i någon variabel (namnet är igen fritt att välja själv).
  11. Lägg till en rad som frågar konto-objektet vad dess saldo är (dvs. anropar metoden get_balance) och printar ut svaret.
  12. Försäkra er om att det i slutet på filen finns en rad if __name__ == '__main__': och att det i den if-satsen anropas er main-funktion.
  13. Kör modulen ni skapat. Se till att ni har filen account_test.py vald i Package Explorern och välj sedan i menyn Run -> Run As -> Python Run. Titta i Console-fliken vad programmet skriver ut. Ser det ut som ni hade väntat er? Om inte, varför? Om programmet inte fungerar, korrigera felen. (Det är en bra idé att regelbundet testa att programmet går att köra. Om man skriver en lång kodsnutt utan att testa är det svårare att hitta eventuella fel.)
  14. Lägg till en utskriftssats, som skriver ut: "Depositing some money to the account. Balance is now:"
  15. Lägg till ett metodanrop, som sätter in 4000 euro på kontot.
  16. Lägg till ett kommando, som skriver ut kontots saldo (helt som tidigare).
  17. Lägg till en utskriftssats, som skriver ut: "Withdrawing money from the account. Balance is now:"
  18. Lägg till ett kommando, som tar 2500 euro från kontot.
  19. Lägg till ett kommando, som skriver ut saldot (igen).
  20. Lägg till en utskriftssats, som skriver ut: "Withdrawing some more money from the account. Balance is now:"
  21. Lägg till ett kommando, som tar 2000 från kontot.
  22. Lägg till ett kommando som skriver ut saldot. Notera vad som händer när det inte finns tillräckligt med pengar på kontot. (Detta ska ändras i en senare uppgift).
  23. Lägg till en utskriftssats som skriver ut: "Creating an other account for the same client. Its balance is now:"
  24. Lägg till ett kommando som skapar ett till konto-objekt med samma ägare som det förra kontot. Spara en referens till objektet i en variabel med valfritt namn.
  25. Lägg till ett kommando som skriver ut det nya kontots saldo.
  26. Lägg till en utskriftssats som skriver ut: "Transferring money from the second account to the first. Their balances are now:"
  27. Lägg till ett metodanrop som flyttar 1800 euro från det andra kontot till det första.
  28. Lägg ännu till två utskriftssatser, som skriver ut kontonas saldon. Printa saldona på var sin rad, börjandes med det första kontot.
  29. Kör programmet som i punkt 12.
  30. Frivillig men väldigt nyttig punkt: Pröva att köra ert program rad för rad med hjälp av debuggern. Instruktioner hur man använder detta verktyg finns på kursens hemsida. Det är varmt rekommenderat att använda den! Att kunna köra ett program rad för rad och granska vad som händer ger en mycket bättre bild över programmets struktur och är till stor hjälp när man lär sig nya programmeringstekniker, utforskar obekant kod eller söker fel. Det tar en stund att lära sig använda debuggern, men det betalar tillbaka sig mångfaldigt redan under denna kurs. Ni kan också be om hjälp av kursens assistent. Tveka inte heller att använda debuggern självmant i senare uppgifter!

Inlämning

Lämna in filen account_test.py till Goblin. Om ni behöver hjälp med inlämningen, läs kursens Goblin-guide.

Råd och vinkar