Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

ObjektKlasse

Del av et kjørende program som

  • inneholder data (tilstand)
  • kan utføre beregninger og operasjoner på dataene

Koden som bestemmer

  • hva slags data som et objekt av en bestemt type kan inneholde
  • hva en kan be objektet gjøre av beregninger og operasjoner

En godt forestille seg et objekt som et vesen, f.eks. en liten gnom med en liten tavle. På tavla kan gnomen skrive ned alt han må huske på, og dette tilsvarer tilstanden til objektet. Akkurat hva som står på tavla, dvs. hvordan tilstanden er representert, holder gnomen for seg selv, men du kan stille gnomen spørsmål om tilstanden og på den måten få innblikk i det. I tillegg kan du be gnomen om å oppdatere det som står på tavla, f.eks. øke et tall, legge til en tekst osv. For hver type gnom finnes det regler for hva du kan spørre om når og hvordan gnomen skal håndtere forespørslene, og dette sikrer at tilstanden alltid er gyldig. Alt dette utgjør gnomens (eller objektets) oppførsel og er beskrevet i en instruks som deles av alle gnomer av samme type. Du har sikkert allerede skjønt at instruksen tilsvarer klassen. Noen gnomer er mest opptatt av å huske og håndtere data, de er data- eller tilstandsorienterte, mens andre husker lite, men har til gjengjeld mange ferdigheter og kan kalles tjenesteorientert.

Forestill deg en app for håndtering og avspilling av musikk. Når du bruker app'en vil den vite om alle sangene (eller låtene/stykkene/sporene...), albumene (eller cd'ene/lp'ene...), artistene (eller gruppene/orkestrene...) og spillelistene. Hver av disse kan representeres som objekter, altså sang-objekter, album-objekter og spilleliste-objekter. Hvert sang-objekt vil vite navnet på sangen, lengden, lyddataene som må spilles av og hvilket album det tilhører. Hvert album-objekt vil vite hvilke sanger det inneholder, hvem som har skrevet (komponist) og hvem som fremfører (artist) sangene (kanskje vil også sang-objektene inneholde informasjon om komponist og artist, siden de jo kan varierer på samme album). Sang- og album-klassene, på den annen side, kan ses på som (koden som bestemmer) reglene for hva slags type data hvert sang- og album-objekt kan inneholde og hvordan disse håndteres, f.eks. at ett og samme sang-objekt ikke kan tilhøre mer enn ett album-objekt. Klassen må også sørge for at koblingen mellom sang-objekter og album-objekter er konsistent, slik at det altid er slik at et sang-objekt ligger i sang-lista til albumet det tilhører.

...