Till KTH:s startsida Till KTH:s startsida

Laboration 4

Klocka

Laboration 4

Läs Kap 10 i kursboken:
Klasser, objekt, attribut,  metoder, __init__, __str__

Uppgift 1: Läxa

Uppgift 2: 

Besök Pythonvisualiserare till Python 3, klistra in ditt program och kör steg för steg:

  • Hur ritas metoderna upp?
  • Hur ritas objekten upp? Ser man vilken klass det är?
  • Om en metod med parameter anropas - var syns parametervädet?
  • Om en metod med returvärde anropas - var syns returvärdet?
  • Vad returnerar en metod som inte har någon return-sats?

Uppgift 3: 

Skriv en klass Klocka:

  • Klockan ska ha metoden tick som tickar fram en minut när den anropas (inte synkat med riktig klocka)
  • ...och andra metoder som du tycker behövs.
  • Använd modulo (operatorn %) och heltalsdivision.
  • Utskriften av klockslag ska vara på formatet tt:mm, t ex 07:05

Uppgift 4:

  • Fundera noga över hur du ska testa att ett klock-objekt fungerar som det ska.
  • Skriv tre funktioner som testar olika fall.
  • Provkör och spara resultatet sist i programmet. Lägg upp i Dropbox som vanligt.

Krav

Krav för programmen i labb 4:

  • Din klass från läxan ska uppfylla de givna kraven
  • Din Klock-klass ska uppfylla de givna kraven, och ska vara testad enligt ovan.
  • Klasser och funktioner ska stå överst i programfilen, övriga satser ska stå längst ner (blanda inte).
  • Krav från tidigare labbar:
    • Programmet ska ha en kommentar överst med författarnas namn och datum.
    • Varje funktion/metod ska ha en förklarande kommentar.
    • Variabel-/funktions-/attribut-namn ska göra programmen lättare att förstå.
    • Testdata ska finnas med i kommentar sist i programmen.
    • Programfilerna 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.