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

Compare with Current View Page History

« Previous Version 2 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 (kodifiseringen av) 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 logiske enheter. Koden i hver klasse bestemmer hvordan tilstanden til en bestemt type objekt eller datakapsel oppfører seg, dvs. utvikler seg over tid.

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 hvilken informasjon hvert sang- og albumm-objekt inneholder og hvordan disse håndteres, f.eks. at ett og samme sang-objekt ikke kan tilhøre mer enn ett album-objekt. Koden må også sørge for at koblingen mellom sanger og album er konsistent, slik at det altid er slik at et sang-objektet ligger i sang-lista til albumet det tilhører.

Oppdelingen av i tilstanden til det kjørende programmet i objekter og 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 å ... (se fotnote 1).  

 


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