You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

Objekter og klasser er de sentrale begrepene i Objektorientert programmering, og kan oppfattes som to sider av samme sak. Objekter eksisterer ved kjøring av programmer, mens klasser er koden som styrer hvordan objektene oppfører seg. Objekter kan ses på som en måte å dele opp tilstanden til et kjørende program i logiske enheter, mens klasser kan ses på som en måte å dele opp koden i (tilsvarende) logiske enheter. Koden i hver klasse bestemmer hvordan tilstanden til en bestemt type objekt eller datakapsel oppfører seg, dvs. utvikler seg over tid.

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

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.

Sang-objektSang-klasse

Konkrete data om bestemt sang:

  • Tittel: Imagine
  • Artist: John Lennon
  • Lyddata: 011011...

Kan gjøre følgende beregninger/operasjoner på sine data

  • setTitle
  • play

Beskriver strukturen til alle Sang-objekter:

  • Tittel: tekst
  • Artist: referanse til Person-objekt
  • Lyddata: binære tall

Kode for beregninger/operasjoner

  • setTitle - endrer tittel
  • play - spiller av lyd-dataene

Oppdelingen av tilstanden til det kjørende programmet i objekter og av programkoden i klasser bestemmes av programmereren. Det er ofte ønskelig at strukturen av objekter tilsvarer/speiler vår oppfatning av virkeligheten, slik at strukturen av objekter/kode blir lettere å tenke ut/skrive og forstå/lese. Derfor er det viktig å være godt kjent med problemområdet før en setter seg ned og programmerer, i tillegg til at en kan generelle kodingsteknikker (se fotnote 1).

Sider om objekter og klasser

Oppgaver om objekter og klasser


1) Det fremheves ofte som en fordel med objektorientert programmering at koden tilsvarer (er en modell av) virkeligheten og derfor faller naturlig å skrive. Dette er i beste fall en grov forenkling av problemetstillingen, f.eks. oppfatter ikke alle virkeligheten likt og et program vil dessuten ofte kreve objekter/kode som ikke svarer til virkeligheten. Vi skal ikke ta denne debatten her, og oppfordrer istedet programmerere til bevissthet og edruelighet omkring fordeler og ulemper ved OOP i forhold til andre paradigmer.

  • No labels