Objektorientering - oppgaver

Identifisere deler av objekt

I testklassen under, finn f?lgende:

  1. Klassedefinisjon
  2. Metode
  3. Instansvariabel
  4. Magisk metode
  5. Konstrukt?r
  6. Lokal variabel
  7. 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

  1. 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.
  2. 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!".
  3. 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.