Versions Compared

Key

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

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

...

PlantUML Macro
object "~#1:Counter" as counter1 {
	counter = 1
	end = 3
}

counter1 ..> counter1 : getCounter() => 1
 
object "~#1:Counter" as counter2 {
	counter = 2
	end = 3
}
counter1 ..> counter2 : count()
counter2 ..> counter2 : getCounter() => 2
 
object "~#1:Counter" as counter3 {
	counter = 3
	end = 3
}
counter2 ..> counter3 : count()
counter3 ..> counter3 : getCounter() => 3
counter3 ..> counter3 : count()

Figuren til venstre 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. Hver boks er altså det samme objektet i ulike tilstander og pilene angir hvilket kall som leder til neste (eller samme) tilstand. Kallene til getCounter endrer ikke noen verdier, så derfor leder de til samme tilstand. Kallene til count, derimot, endrer telleren (counter) inntil den når slutt-verdien (end) og gir en (heldigvis endelig) kjede med tilstander (se fotnote 1).

Til høyre ser du kode som implementerer denne oppførselen.

Code Block
languagejava
public class Counter {
	int end;
	int counter = 0;


	Counter(int end) {
		this.end = end;
	}

	int getCounter() {
		return counter;
	}

	void count() {
		if (counter < end) {
			counter = counter + 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 (å prøve) å øke telleren forbi slutt-verdien. Dette gir en annen oppførsel, som er forsøkt illustrert i diagrammet under.

...