Versions Compared

Key

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

...

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

Figur 1Image Modified

Figuren viser hvordan samme Counter-objekt går fra én tilstand (verdiene til counter og end) til en annen, når getCounter- og count-operasjonene utføres. Kallene til getCounter endrer ikke noen verdier, så derfor leder den til samme tilstand. Kallene til count, derimot, endrer telleren inntil den når slutt-verdien og gir en (heldigvis endelig) kjede med tilstander (se fotnote 1).

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 å øke telleren forbi slutt-verdien. Dette gir en nokså annen oppførsel og , som er førsøkt illustrert i diagrammet under.

Figur 2Image Added

Vi ser at ett kall til count(2) har samme effekt som to kall til count(1) og at det ikke lenger er lov å kalle count i den siste tilstanden, dsv. når telleren (counter) har nådd slutt-verdien (end). Kall til getCounter er utelatt, siden de (fortsatt) ikke endrer tilstand.

For den som bruker et objekt (eller klasse) er det viktig å vite hvordan et objekt oppfører seg, både for å vite om objektet passer til (løser) problemet og hvordan unngå å bruke det feil. For den som skal kode oppførselen i en klasse, er det selvsagt helt vesentlig å tenke gjennom hvilken oppførsel objektene skal ha, og eksempler som den i figurene er ofte nyttige, både for å tenke gjennom problemet før en koder og for å forklare andre hvordan koden virker (eller er ment å virke). Slike eksempler hjelper en også å skrive tester, som forklart i Oppførsel og enhetstesting.

Spørsmål til refleksjon

  1. Det står under den andre figuren at ett kall til count(2) har samme effekt som to kall til count(1), men dette er strengt tatt ikke riktig, hvorfor ikke?

 

...

1) For så enkel oppførsel som denne går det greit å lage et komplett diagram, men generelt kan det bli veldig mange tilstander (noen ganger uendelig) og veldig mange kombinasjoner/rekkefølger av kall. Derfor er et slikt diagram greit som illustrasjon på et eksempel, men ikke som en komplett beskrivelse av oppførklsen.