DD1310/DD1314/DA3009 Programmeringsteknik 2013
Laboration 4
Läs Kap 8 i kursboken:
Klasser, metoder, objekt, konstruktor, attribut
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 egen klass.
Klassen ska ha
- Minst tre attribut
- Metoderna
__init__
och __str__
- Minst tre metoder utöver dessa
Viktigt! Använd olika namn för attribut och metoder.
- Skriv ett huvudprogram där du skapar en instans av din klass och testar att alla objektets metoder fungerar.
- Lägg upp din klass i Dropbox
- Kopiera någon annans klass till ditt program.
- Skapa en instans av den nya klassen, och
lägg till satser i ditt huvudprogram för att testa
det nya objektet.
- Lägg till sist upp ditt färdiga program i Dropbox.
Extrauppgifter:
- Läs mer om objekt i Pythons dokumentation
- Skriv sedan någon metod som använder flera objekt,
t ex
__lt__
(för att jämföra objekt med "<") eller __add__
(för att addera objekt med "+")
- Skriv ett huvudprogram som låter användaren mata in data
till objekten.
- Testa dina nya metoder.
Testning
Glöm inte att spara data från dina tester.
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 4:
- Din egen klass ska ha minst tre attribut och minst fem metoder, däribland
__init__
och __str__
.
- Klasser och funktioner ska stå överst i programfilen, övriga satser ska stå längst ner (blanda inte).
- Huvudprogrammet ska testa alla metoder i bägge klasserna.
- 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å.
- Testdata ska finnas med i kommentar sist i programmet.
- Programfilen ska kopieras till gruppens Dropbox-katalog.
Instuderingsfrågor
- Vad är det för vits med att definiera en klass?
- Vad ska finnas med i en klassdefinition?
- Kan man ha flera instanser av en klass?
- Vad är skillnaden mellan ett attribut och en lokal variabel?
- Vad är skillnaden mellan en metod och en funktion?
- När anropas
__init__
?
- Vad är
self
?
- Måste man ha med
self
när man anropar en metod?
- Vad händer om en metod och ett attribut i klassen har samma namn?
- Varför måste man ange objektet när man anropar en metod?
- Kan en metod ändra på objektets attribut?
- Varför har alla strängmetoder returvärden, men inte alla listmetoder?
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 nästa labb!