Laboration 4: En klass
- Inlämningsdatum 10 nov 2024 av 12:00
- Poäng 1
- Lämnar in en filuppladdning
- Filtyper py, pdf och txt
- Tillgänglig efter 30 sep 2024 kl 0:00
Innehåll:
- Python - kapitel 10 i kursboken: klass, objekt, attribut, metod, __init__, __str__
Bägge gruppmedlemmarna ska lämna in labben.
Prova att använda en klass
- Skriv in denna klass i en Pythonfil:
class Frö:
def __init__(self, namn, grobarhet, pris):
self.namn = namn
self.grobarhet = grobarhet # i procent (int)
self.pris = pris # i SEK (float)
def __str__(self):
return self.namn + " " + str(self.pris)
def pris_med_moms(self):
return self.pris*1.25
def etikett(self):
print(" -----", self.namn, "-----")
print("grobarhet:", self.grobarhet, "%")
print("pris:", self.pris)
def rea(self, reapris):
self.pris = reapris - Skriv ett huvudprogram och skapa ett Frö-objekt.
- Klassen har fem metoder. Vilka är det?
- Skriv satser som testar alla metoder.
- 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? Hur ser du vilken klass det är?
- När en metod med parameter anropas - var syns parametervädet?
- När en metod med returvärde anropas - var syns returvärdet?
Skriv en klass Klocka
- Klockan ska ha följande attribut:
- timmar
- minuter
- Klockan ska ha följande metoder:
- __init__(timmar, minuter)
- __str__()
- öka_timmar(xtimmar) # Ställer fram klockan xtimmar
- minska_timmar(xtimmar) # Ställer tillbaka klockan xtimmar
- öka_minuter(xminuter) # Ställer fram klockan xminuter
- minska_minuter(xminuter) # Ställer tillbaka klockan xminuter
- ...och om du vill lägga till fler metoder får du gärna göra det.
- Använd modulo (operatorn %) och heltalsdivision (operatorn //) där det behövs.
- Utskriften av klockslag ska vara på formatet tt:mm, t ex 07:05
Testning
Fundera noga över hur du ska testa att ett klock-objekt fungerar som det ska.
- Här är tre exempel på funktioner för att testa klassen. Lägg till tre egna test-funktioner.
def test1():
#Testar utskrift
klocka = Klocka(9,15)
print(klocka, " (borde skriva ut 09:15)")
def test2():
#Testar att gå över ett dygn med öka_timmar
klocka = Klocka(23,30)
klocka.öka_timmar(2)
print(klocka, " (borde skriva ut 01:30)")
def test3():
#Testar att gå över en timme med öka_minuter
klocka = Klocka(14,59)
klocka.öka_minuter(5)
print(klocka, " (borde skriva ut 15:04)") - Provkör och spara testkörningarna sist i programmet. Lägg upp i Canvas som vanligt.
KravKrav för programmen i labb 4:
|
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
- Testa om du kan få din klocka att fungera med detta grafiska gränssnitt: klockaGUI.py Download klockaGUI.py
- Justera färger och fonter för att få en finare klocka.
- Importera strftime från modulen time, och testa print(strftime('%H:%M')). Hur kan du använda detta i din klocka?
Matris
Inkludera en titel
Kom ihåg att 35 studenter redan har bedömts med den här matrisen. Om du ändrar den påverkas deras bedömningar.
Kriterier | Bedömningar |
---|---|
Vilka attribut har klassen Klocka?
|
|
Vilka metoder har klassen Klocka?
|
|
Har modulo och heltalsdivision använts?
|
|
Skrivs klockslag ut på rätt format?
|
|
Vilka fall har testats? Är det något mer som borde testas?
|
|
Står klassen och funktionerna överst i programfilen?
|
|
Vilka parametrar har funktionerna? Vilka returvärden?
|
|
Finns det en kommentar överst i programmet med författarnas namn och datum?
|
|
Är variabelnamnen lämpliga? Föreslå förbättringar!
|
|
Finns testdata med som kommentar sist i programmet?
|
|
Tips till nästa labb:
|