#Oppgave 1 class Matbutikk: def __init__(self): self._varer = [] def hent_varer(self): return self._varer def legg_til_vare(self, ny_vare): self._varer.append(ny_vare) class Vare: def __init__(self, varenavn, vareid): self._varenavn = varenavn self._vareid = vareid def hent_id(self): return self._vareid def hent_varenavn(self): return self._varenavn def hovedprogram(): matbutikk = Matbutikk() vare1 = Vare("Tomat", 210) vare2 = Vare("Agurk", 130) vare3 = Vare("Paprika", 215) matbutikk.legg_til_vare(vare1) matbutikk.legg_til_vare(vare2) matbutikk.legg_til_vare(vare3) print(f"Vare1: {vare1.hent_varenavn()} {vare1.hent_id()}") print(f"Vare2: {vare2.hent_varenavn()} {vare2.hent_id()}") print(f"Vare3: {vare3.hent_varenavn()} {vare3.hent_id()}") #hente fra listen til matbutikk varer = matbutikk.hent_varer() for vare in varer: print(f"Vare: {vare.hent_varenavn()} {vare.hent_id()}") for indeks in range(len(varer)): print(f"Vare {indeks+1}: {varer[indeks].hent_varenavn()} {varer[indeks].hent_id()}") hovedprogram() ''' Utvid klassen Matbutikk, slik at den f?r en metode for ? hente lista varer. en metode for ? legge til et Vare-objekt i lista varer. Skriv klassen Vare, med instansvariabler vareid og varenavn. init-metoden (konstrukt?ren) tar inn vareid og varenavn. Vare skal ha to metoder; ¨Śn for ? hente vareid og ¨Śn for ? hente varenavn. Skriv et hovedprogram med en Matbutikk, og opprett og legg til tre Vare- objekter. Skriv ut vareid sammen med varenavn for de tre varene p? tre forskjellige linjer. Dere blir n?dt til ? kalle relevante metoder underveis. ''' #Oppgave 2 class Student: def __init__(self, navn, studieprogram): self._navn = navn self._studieprogram = studieprogram def hent_navn(self): return self._navn def endre_studieprogram(self, nytt_program): self._studieprogram = nytt_program ''' a) Hva er det self refererer til i init-metoden (konstrukt?ren) og i metodene hent_navn og endre_studieprogram? b) Hva slags variabler er navn, studieprogram og nytt_program? Hvordan skiller variablene i b) seg fra variablene _navn og _studieprogram? c) Hvorfor trenger vi self i metodene hent_navn og endre_studieprogram? d) Hvorfor trenger vi ikke ? inkludere self som argument n?r vi kaller metodene hent_navn og endre_studieprogram p? et Student-objekt? ''' # Oppgave 5 class KaffeLatte: def __init__(self, ant_espressoshots): self._antall_espressoshots = ant_espressoshots def hent_antall_espressoshots(self): return self._antall_espressoshots def hovedprogram(): bestillinger = [] #lagrer 5 objekter i listen dobbel_latte = KaffeLatte(2) for i in range(5): #dobbel_latte = KaffeLatte(2) bestillinger.append(dobbel_latte) for bestilling in bestillinger: #itererer gjennom listen og printer print(bestilling) hovedprogram() ''' a) Hva vil skrives ut i programmet? b) Endre programmet, slik at linjen dobbel_latte = KaffeLatte(2) st?r under linjen bestillinger = [] i stedet for inni for-l?kka. Hva skrives ut n?? Hvor mange objekter av klassen KaffeLatte finnes i hovedprogrammet i a), og hvor mange finnes det i hovedprogrammet i b)? Begrunn hvorfor. ''' ''' Oppgave 10 I en boligblokk bor det bare samboerpar. Hver av de to personene i paret identifiseres med et f?dselsnummer (f?dselsdato og personnummer). I tillegg har hver person et navn, som best?r av fornavn, mellomnavn og etternavn. Person-klassen ser slik ut: ''' class Person: def __init__(self, f?dselsnummer, navn): self._f?dselsnummer = F?dselsnummer(f?dselsnummer) self._navn = Navn(navn) def hent_f?dselsnummer(self): return self._f?dselsnummer def hent_navn(self): return self._navn def __str__(self): return f"{self._navn} ({self._f?dselsnummer})" ''' Skill ut f?dselsnummer og navn i egne objekter. Et f?dselsnummer skal holde p? f?dselsdato og personnummer. Navn skal holde p? fornavn, mellomnavn, etternavn. Person-objektene skal ha referanser til objekter av f?dselsnummer og navn. ''' class F?dselsnummer: #antar at argumentet til parameteren skrives som type string og p? dette formatet: #123456 12345 def __init__(self, f?dselsnummer): f?dselsnummer_delt = f?dselsnummer.split() #splitter p? mellomrom self._f?dselsdato = f?dselsnummer_delt[0] self._personnummer = f?dselsnummer_delt[1] def __str__(self): return f"{self._f?dselsdato} {self._personnummer}" class Navn: #antar at argumentet til parameteren skrives slik: #fornavn mellomnavn etternavn def __init__(self, navn): navn_delt = navn.split() #splitter p? mellomrom self._fornavn = navn_delt[0] self._mellomnavn = navn_delt[1] self._etternavn = navn_delt[2] def __str__(self): return f"{self._fornavn} {self._mellomnavn} {self._etternavn}" class Par: def __init__(self, person1, person2): self._person1 = person1 self._person2 = person2 def __str__(self): return f"{self._person1} er sammen med {self._person2}" def hovedprogram(): boligblokka = {} #kan bruke parameternavn=argument person1 = Person(f?dselsnummer="123456 12345",navn="Selma Kristine Narvik") person2 = Person("374826 13854","Hans Nilsen Hauge") person3 = Person("834943 34253","Ole Dahl Normann") person4 = Person("264536 23456","Kari Nilsen Norman") person5 = Person("283946 73825","Navn Mellomnavn Etternavn") person6 = Person("374832 76483","Tom Furuset Gress") person7 = Person("392052 46372","Nils Nilsen Torve") person8 = Person("857463 56473","Geir Folkeli Kanel") person9 = Person("849376 46734","Tiril Gj?vik Mj?sa") person10 = Person("283473 35263","Sara Bl?nisse Selsvik") par1 = Par(person1, person2) par2 = Par(person3, person4) par3 = Par(person1=person5, person2=person6) par4 = Par(person7, person8) par5 = Par(person9, person10) boligblokka["etasje 1"] = [par1, par2, par3, par4] boligblokka["etasje 1"].append(par5) for etasje in boligblokka: #for n?kler i ordboken print(etasje) for indeks in range(len(boligblokka[etasje])): #for alle parene i etasjen print(boligblokka[etasje][indeks]) #[n?kkel][indeks], print parene hovedprogram() ''' Legg til funksjonalitet for ? kunne opprette Par-objekter best?ende av to personer. Representer boligblokka parene bor i med en samling. Boligblokka best?r av fem etasjer. I hver etasje bor det fem par. Rekkef?lgen p? parene i hver av etasjene er vesentlig, siden hvert par alltid bor i den samme leiligheten (og ikke bytter). Lag et testprogram (hovedprogram), som legger par til i boligblokka og som skriver ut navn og f?dselsnummer p? personene i hvert par i hver etasje. Det er viktig at det kommer tydelig frem i utskriften hvilke personer som er i hvert par samt hvilke par som bor i hvilken etasje. NB!! Kombinert med pensum fra uke 9 __str__ '''