Versions Compared

Key

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

Et objekt har både tilstand og oppførsel. Tilstanden til et objekt er alle dataene den inneholder, mens oppførselen er hva objektet kan gjøre av beregninger og operasjoner på dataene og hvordan disse potensielt endrer tilstanden over tid.

Siden begrepet oppførsel er noe en knytter til levende vesener, kan 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.

Ta som eksempel et Counter-objekt som teller fra en start-verdi til en slutt-verdi. Slutt-verdien angis når objektet opprettes og kan variere fra objekt til objekt. Objektet må altså huske både teller-verdien og slutt-verdien (begge er heltall), så disse utgjør objektets tilstand. Objektet har to operasjoner, int getCounter(), som returnerer nåværende teller-verdi, og void count(), som øker telleren med 1 inntil den når slutt-verdien. Oppførselen defineres av disse to operasjonene, først og fremst ved hvordan count evt. endrer tilstanden, men også hvordan tilstanden leses av getCounter og dermed påvirkes av count.

En måte å illustrere oppførselen på er et diagram over hvordan tilstanden til objektet utvikler seg over tid, når ulike metoder blir kalt.

...

Generelt er tilstanden til et objekt verdien av alle attributtene, mens oppførselen er når en kan kalle de ulike operasjonene, hvilke argumenter som er gyldige og hva de returnerer og hvordan tilstanden endres av dem. I eksemplet er det alltid tillatt å kalle begge operasjonene, men en kunne tenke seg at count tok et argument som anga hvor mye telleren skulle økes og at det var ulovlig (å prøve) å øke telleren forbi slutt-verdien. Dette gir en annen oppførsel, som er førsøkt illustrert i diagrammet under.

...