DD1310/DD1314/DA3009 Programmeringsteknik 2012
Laboration 5
Läs i kap 8 om inkapsling ("Object Encapsulation") samt i kap 9 fram till avsnittet om arv ("Inheritance"):
Privata attribut, åtkomstmetoder, ändringsmetoder, objekt i en lista.
Labben redovisas på veckans övning. Det Pythonprogram du skriver
kan ge 0-2 bonuspoäng (beroende på hur väl det uppfyller kraven).
Instuderingsfrågorna redovisas med ett prov, som också kan ge max 2 bonuspoäng.
Program
- Hitta på en ny klass (eller modifiera din klass från labb 4)
- Klassen ska ha minst tre attribut, och alla attribut ska vara privata.
- Varje attribut ska ha en åtkomstmetod och en ändringsmetod.
- Metoderna
__init__
och __str__
måste också finnas med.
- Skapa ett objekt och testa att metoderna fungerar.
- Skapa flera objekt
- Skriv först ihop en textfil med data för flera objekt.
- Låt programmet läsa in data från textfilen...
- ... och skapa objekt som läggs i en lista.
- Gå igenom listan och anropa (minst) en metod för varje
objekt i listan. Se till att nåt syns på skärmen också!
- Lägg upp ditt färdiga program i Wuala
- Extrauppgifter:
- Lägg till en meny där man kan välja vad man vill göra.
- Skriv ut objekten på fil igen när programmet avslutas.
- Se till att programmet inte kraschar för felaktig inmatning.
- Inför metoden __lt()__ ("less than") och använd den för att sortera din lista.
Testning
Glöm inte att testa att ditt program fungerar som det ska.
Tips: Ett enkelt sätt att spara testdata är att köra programmet och kopiera
allt som syns på skärmen.
Krav
Krav för programmen i labb 5:
- Klassen ska ha minst tre privata attribut med åtkomst- och ändringsmetoder.
- Programmet ska läsa in data från en textfil och skapa objekt som läggs i en lista.
- Programmet ska gå igenom listan och anropa någon av metoderna för vaje objekt.
- och dessutom följande krav från tidigare labbar:
- Programmet ska ha en kommentar överst med författarnas namn och datum.
- Programmet ska vara uppdelat i funktioner med lämpliga parametrar och returvärden.
- Varje funktion/metod ska ha en förklarande kommentar.
- Inga globala variabler får förekomma (i funktioner eller metoder).
- Variabel-/funktions-/attribut-namn ska göra programmet lättare att förstå.
- Din egen klass ska ha minst tre attribut och metoderna
__init__
och __str__
.
- Klasser och funktioner ska stå överst i programfilen, övriga satser ska stå längst ner (blanda inte).
- Testdata ska finnas med i kommentar sist i programmet.
- Programfilen ska kopieras till gruppens Wuala-katalog.
Instuderingsfrågor
- Kan man komma åt ett privat attribut inuti klassen?
- Vad är en åtkomstmetod ("get method")?
- Vad är en ändringsmetod ("set method")?
- Rita ett objekt (med exempeldata) som är en instans av din klass.
- Varför är det praktiskt att lagra flera objekt i en lista?
- Rita din lista med objekt.
- Kan man skicka ett objekt som parameter till en funktion eller metod?
- Kan man definiera flera klasser i samma program?
- När ska man definiera metoden
__lt__
?
- Hur skriver man när man vill att en klass ärver från en annan?
- Ge ett exempel på polymorfism.
- Hur gör man en egen modul?
Efter labben
Hur tycker du att ditt eget arbete med labben fungerade?
Borde du ha gjort något annorlunda?
Fundera en stund, och skriv upp några tips till dig själv inför arbetet med P-uppgiften!