---------------- KLASSEN GAVE -------------- class Gave: def __init__(self, gavenavn, pris): self._navn = gavenavn self._pris = _pris def hentPris(self): return self._pris def hentNavn(self): return self._navn def __str__(self): return self._navn + " kostet " + str(self._pris) + " kr." ---------------- KLASSEN BARN -------------- from gave import Gave: class Barn: def __init__(self, navn): self._navn = navn self._totverdi = 0 #ingen gaver åpnet når objekt opprettes self._gaver = [] #tom gaveliste når objekt opprettes def hentNavn(self): #Metode som returnerer barnets navn return self._navn def hentTotverdi(self):#Metode som returnerer totalverdien av alle gaver barnet har fått return self._totverdi def apneGave(self, gave): #param et gaveobjekt #oppdaterer totalverdien på barnets gaver self._totverdi += gave.hentPris() #bruker metoden til gave-objekter self._gaver.append(gave) def skrivBarn(self): print(self._navn + " har fått gavene: ") for gave in self._gaver: print(gave) #siden gave-objekter har str blir dette pent. print("Totalverdien til alle disse gavene: " + str(self._totverdi)) ---------------- KLASSEN JULEKALENDER -------------- from barn import Barn: from gave import Gave: class Julekalender: def __init__(self, navneliste, gavefil): self._gaveKalender = [] self._lesGaveFil(gavefil) #denne metoden skaper gaveKalenderen basert på informasjonen i filen self._apnere = [] for navn in navneliste: self._apnere.append(Barn(navn)) self._nesteApner = 0 self._dag = 0 def _lesGaveFil(self, filnavn): fil = open(filnavn) for linje in fil: linjeliste = linje.split(",") navn = linjeliste[0] pris = float(linjeliste[1]) self._gaveKalender.append(Gave(navn, pris)) fil.close() def nyDag(self): #sjekker om vi er ferdig / det er jul if self._dag > 23: #Bruker 23 fordi første dag er 0 (0 til 23 = 24) print("Alle gavene er åpnet!") return dagensApner = self._apnere[self._nesteApner] #vi finner barn-objektet som skal åpne gave dagensGave = self._gaveKalender[self._dag] #vi finner gave-objektet som skal åpnes #åpner gaven dagensApner.apneGave(dagensGave) #oppdaterer datastrukturen self._dag += 1 self._apner += 1 #sjekker om alle barna har fått gave til nå if self._apner >= len(self._apnere): self._apner = 0 #vi starter på nytt i listen med barn neste gang vi kaller nyDag() def gaveOversikt(self): print("Oversikt til nå: ") for barn in self._apnere: barn.skrivBarn() #skrivBarn metoden skriver navnet på barnet, hvilke gaver det har fått og totalprisen på alle gavene.