Labb 2: Från ADT till klasser

Labbinnehåll: Definiera en klass(er) och använda undantag

Om labben

Denna labb är uppdelad i två delar. I del 1 ska ni skapa en enkel klass med två instansvariabler och tre metoder. Se genomförande 1 för mer detaljerade instruktioner.

I del 2 får ni ett färdigt program, todo.py. Detta program kan köras från prompten och kan ladda, spara och manipulera att-göra-filer. Programmet är implementerat med hjälp av ADT:er. Er uppgift är att skriva om programmet så att det blir objektorienterat. Se genomförande 2 för mer detaljerade instruktioner.

Redovisning sker genom att ni skickar in den nya koden, samt ett dokument som innehåller er analys av orginalkoden, samt beskrivning av de klasser ni skapar i form av ett klassdiagram. Se redovisning nedan för mer detaljerade instruktioner.

Genomförande Del 1

  1. Skapa en fil som heter labb2-del1-liuid1-liuid2.py
  2. Välj ett djur och och skapa en klass som heter samma sak som ditt djur. Skapa t.ex. klassen Hund eller Elefant. För att skapa en klass räcker det med en rad! Använd bilderna från föreläsning 2 eller kap 16-17 i Think Python som referens.
  3. Lägg till konstruktorn, metoden __init__. I __init__ ska du sätta värdet på två instansvariabler, t.ex. en för djurets namn och på en med antal ben som djuret har. Se till att man via __init__ ska kunna välja mellan att ange inga eller alla parametrar som ett objekt ska initialiseras med.
  4. Lägg till metoden __str__ till klassen. Metoden ska returnera en strängrepresentation av ett djur-objekt, t.ex. 'Hej jag är en elefant som är 300 cm hög och har fyra ben.'. Kom ihåg att ta in argumentet self!
  5. Lägg till sist till en set-metod och en get-metod. Välj själv vilken av instansvariablerna som de ska vara kopplade till.

Genomförande Del 2

  1. Börja med att spara och läsa koden: todo.py, orientera er i den så att ni vet vilka funktioner som finns, samt vilka variabler som används. Ni kan också läsa den PyDoc-genererade dokumentationen här.
  2. Ni ska skapa två klasser, klassen Task och klassen Todolist. Rita klassdiagram över klasserna där ni beskriver vilka egenskapsvariabler och metoder de två klasserna ska ha. All funktionalitet finns i princip redan i todo.py, men ni kan behöva strukturera om lite. Glöm inte att läsa dokumentationen. Visa ert klassdiagram för er handledare innan ni sätter igång med implementationen!
  3. Skapa klasserna och implementera dem med hjälp av den existerande koden. Programmet ska fungera på samma sätt som innan er omstrukturering.
  4. Lägg till undantagshantering till metoden/funktionen load_tasks() så att den klarar av att man försöker ladda en fil som inte finns. Fånga undantaget IOError. Om man försöker öppna en fil som inte finns ska programmet meddela detta och sedan återgå till att fråga användaren efter ett kommando.
  5. Lägg till undantagshantering till metoden/funktionen save_tasks(). Denna gång ska ni inte specificera vilken typ av exception som fångas.
  6. Lägg till ytterligare ett undantagshanteringsblock i koden. Denna gång i select_task(). Fånga ett IndexError vid inmatningen.

Redovisning

  • Tre filer ska skickas in via e-post till er labbhandledare: kod till del 1, kod till del 2 och klassdiagram till del 2. Ingen papperskopia behöver lämnas in. Döp kodfilerna till labb2-del1-liuid1-liuid2.py och labb2-del2-liuid1-liuid2.py (där ni ersätter liuid1 och liuid2 med era egna liu-idn).
  • Se till att cc:a er labbpartner.
  • Använd följande ämnesrad: 729G06 Labb 2 abcde123 och qwert234 (där abcde123 och qwert234 ersätt med era liu-id:n). Genom att använda denna ämnesrad gör ni det lättare för er labbhandledare att hitta er inlämning! Vid komplettering, lägg till ett “kompl.” eller “komplettering”, och skicka inte in mer än en labb i samma e-post.

Sidansvarig: Jody Foo
Senast uppdaterad: 2013-01-16