Till KTH:s startsida Till KTH:s startsida

Labb 4

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

  1. Hitta på en egen klass.
    Klassen ska ha
    • Minst fem attribut
    • Metoderna __init__  och __str__
    • Minst tre metoder utöver dessa. Metoderna ska ha parameter och returvärden.
    Viktigt! Använd olika namn för attribut och metoder.
  2. Skriv ett huvudprogram där du skapar en instans av din klass och testar att alla objektets metoder fungerar.
  3. Lägg upp din klass i Dropbox.
  4. Kopiera någon annans klass till ditt program.
  5. Skapa en instans av den nya klassen, och lägg till satser i ditt huvudprogram för att testa det nya objektets metoder.
  6. Lägg till sist upp ditt färdiga program i Dropbox.

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

  1. Vad är det för vits med att definiera en klass?
  2. Vad ska finnas med i en klassdefinition?
  3. Kan man ha flera instanser av en klass?
  4. Vad är skillnaden mellan ett attribut och en lokal variabel?
  5. Vad är skillnaden mellan en metod och en funktion?
  6. När anropas __init__ ?
  7. Vad är self ?
  8. Måste man ha med self när man anropar en metod?
  9. Vad händer om en metod och ett attribut i klassen har samma namn?
  10. Varför måste man ange objektet när man anropar en metod?
  11. Kan en metod ändra på objektets attribut?
  12. 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!

Frivilliga 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.