3. Bruker-klassen
I Twitter-klonen vår representerer en bruker en person som har et brukernavn, kan skrive tweets og eier sine egne tweets.
classDiagram
class Bruker {
str brukernavn
list~Tweet~ tweets
lag_tweet(tekst: str) None
}
Bruker --* Tweet
Tweet --> Bruker
Diagrammet viser at:
- En bruker eier mange tweets (komposisjon)
- Hver tweet har en referanse tilbake til brukeren (assosiasjon)
Oppgave: Lag Bruker-klassen
Section titled “Oppgave: Lag Bruker-klassen”Lag klassen Bruker i Python.
Krav:
- Klassen skal ha en
__init__-metode __init__skal ta imot ett argument:brukernavn- Brukeren skal ha:
- en instansvariabel
brukernavn - en instansvariabel
tweetssom starter som en tom liste
- en instansvariabel
- Klassen skal ha metoden
lag_tweet(tekst: str)
Metoden lag_tweet() skal:
- opprette et nytt
Tweet-objekt med teksten ogselfsom bruker - legge tweeten til i
tweets-listen
Ved å sende self til Tweet kan tweeten vite hvilken bruker som opprettet den.
Løsningsforslag
class Bruker: def __init__(self, brukernavn: str): self.brukernavn = brukernavn self.tweets = []
def lag_tweet(self, tekst: str): tweet = Tweet(tekst, self) self.tweets.append(tweet)Sjekk at koden fungerer
Section titled “Sjekk at koden fungerer”b = Bruker("arsenal4ever")
b.lag_tweet("Fotball er skikkelig kult!")b.lag_tweet("Arsenal er best!")
assert b.brukernavn == "arsenal4ever"assert len(b.tweets) == 2assert b.tweets[0].tekst == "Fotball er skikkelig kult!"assert b.tweets[1].tekst == "Arsenal er best!"
# Sjekk at tweeten vet hvem som skrev denassert b.tweets[0].bruker is bassert b.tweets[0].bruker.brukernavn == "arsenal4ever"
print("Alt fungerer som det skal")Legg merke til de to siste testene. De viser at vi kan navigere fra en tweet tilbake til brukeren som skrev den. Dette er nyttig når vi skal vise tweets i en feed og trenger å vise brukernavnet.