Objektorientering - oppgaver
Identifisere deler av objekt
I testklassen under, finn f?lgende:
- Klassedefinisjon
- Metode
- Instansvariabel
- Magisk metode
- Konstrukt?r
- Lokal variabel
- Parameter til konstrukt?r
class Test:
def __init__(self, parameter1, parameter2):
self._variabel = parameter1
self._variabel2 = parameter2
def endre_verdi(self, ny_verdi):
self._variabel1 = ny_verdi
def hent_verdi(self):
return self._variabel1
def __str__(self):
v1 = self._variabel1
v2 = self._variabel2
return f"Dette er et testobjekt med verdiene {v1} og {v2}."
Hva skrives ut?
class Bil:
def __init__(self, bilmerke, eier):
self._bilmerke = bilmerke
self._eier = eier
def bytt_eier(self, ny_eier):
self._eier = ny_eier
def hent_eier(self):
return self._eier
bil1 = Bil("Mercedes", "Siri")
bil2 = Bil("Toyota", "Geir Kjetil")
bil1.bytt_eier("Geir Kjetil")
print(bil1.hent_eier())
Hva med n??
class Hus:
def __init__(self, farge):
self._farge = farge
def mal_om(self, ny_farge):
farge = ny_farge
def hent_farge(self):
return self._farge
hus1 = Hus("Bl?")
hus2 = Hus("R?d")
hu1.mal_om("Gr?nn")
print(hus1.hent_farge())
Enkelt objekt
Opprett en fil hilsen.py og skriv en klasse Hilsen, som skal ta et navn som parameter til konstrukt?ren. Klassen tilbyr f?lgende metoder:
standard(self), som skriver ut "Hei navn" til terminalen.
formell(self), som skriver ut "God ettermiddag, navn" til terminalen.
uformell(self), som skriver ut "Halla navn" til terminalen.
Opprett en fil test.py hvor du ?verst skriver "from hilsen import Hilsen". Opprett s? et nytt hilsenobjekt med (f.eks) ditt eget navn, og pr?v ? kalle p? metodene du skrev for ? se at hilsenene blir skrevet ut i terminal.
Personer i liste
I en fil person.py, opprett en klasse Person, som tar et navn og en alder som parameter til konstrukt?ren. Klasen skal ha metodene: hent_navn(self) og hent_alder(self).
I en ny fil (f.eks) test.py oppretter du fem Person-objekter med forskjellige navn og alder, og legger dem in i en liste. Skriv s? en prosedyre finn_person(navn), som skriver ut om personen finnes i listen eller ikke. Test prosedyren din med ulike navn, og sjekk at den fungerer.
Bonus: skriv en tilsvarende prosedyre finn_person2(alder) som sjekker om det finnes en person i listen som har en gitt alder. Test ogs? denne prosedyren.
Kredittkort
Opprett en klasse Kredittkort i filen kredittkort.py. Klassen skal ikke ta noe som parameter, men ha en instansvariabel self._saldo som begynner p? 1000. Klassen skal tilby f?lgende metoder: kjoep_mat(self), som trekker 200 fra saldoen og skriver ut "Uten mat og drikke duger helten ikke." til temrinalen; dra_paa_byen(self) som trekker 400 fra saldoen og skriver ut "Party time!" til terminalen; og dra_paa_jobb(self), som legger til 1000 til saldoen og skriver ut "Sukk..." til terminalen. Dersom det er for lite penger p? saldoen for ? kunne kj?pe mat eller dra p? byen, skal metodene skrive ut "Tomt for penger!" til terminalen. I en annen fil (f.eks test.py) skal du opprette et nytt kredittkort-objekt, og teste de ulike metodene.
Butikk med varer
Filer: test.py, butikk.py, vare.py
- Opprett klassen Vare, som skal ta inn varetype (som en en streng) og antall (som en int) som parametere til konstrukt?ren. Klassen skal ha metodene: antall_tilgjengelig(self), som returnerer hvor mange det er igjen av varen; kjoep(self, antall), som trekker fra antall fra hvor mange det er igjen av varen; og __str__(self), som returnerer en streng som beskriver varen og hvor mange det er igjen av den.
- Opprett klassen Butikk, som skal ha en liste over varer som instansvariabel. Klassen skal ha f?lgende metoder: legg_til_vare(self, vare, antall), som oppretter et nytt vareobjekt og legger det i varelisten til butikken; vis_varer(self), som skriver ut alle varene i butikken, og hvor mange det er igjen av hver vare. I tillegg skal du skrive metoden kjoep_vare(self, vare, antall), som f?rst sjekker om det er nok igjen av varen i butikken, og kjoeper deretter riktig antall av riktig vare. Hvis det ikke er igjen nok av varen, skal metoden skrive ut "Beklager, vi har bare antall vare igjen", hvor antall er hvor mye det er igjen av varen. Om det var igjen nok og kunden fikk kj?pt varen, skal metoden skrive ut "V?rs?god!".
- I test.py skal du n? opprette en ny butikk, og legge inn et par varer. Sjekk at du kan kj?pe varer ved ? kalle p? (f.eks) testbutikk.kjoep_vare("melk", 2), og sjekk ogs? at du ikke kan kj?pe for mange av en vare.