Skip to article frontmatterSkip to article content

3Toestandsdiagrammen

3.1Ontwerpen met behulp van toestandsdiagrammen

Inleiding

In deze module leer je te werken met toestandsdiagrammen. Als introductie daarop kun je met de gehele klas de volgende opdracht doen.

Automaat bewaker

Toestanden

Wellicht heb je de volgende toestanden gevonden, ook al noem je ze waarschijnlijk anders

  1. Waakzaam, rondkijkend
  2. Alert, klar voor actie, rondkijkend
  3. Gealarmeerd, achter vijand aan lopend
  4. Verdwaasd, rondlopend
  5. Dood

Op basis van deze toestanden kun je een toestandsdiagram maken, waarin duidelijk wordt hoe de bewaker van de ene toestand in de andere komt. De getallen geven de toestanden aan zoals hierboven staat beschreven.

Je kunt in het toestandsdiagram bijvoorbeeld zien dat als de bewaker in toestand 1 is en hij ziet een vijand, dan wordt de toestand van de bewaker 2.

In de bovenstaande uitwerking zie je totaal 5 toestanden en 6 toestandsovergangen. Misschien zijn er wel meer hoor, alleen in dit korte fragment kun je ze niet allemaal zien.

Het losse pijltje naar toestand 1 betekent dat dit de begintoestand is, oftewel de initiële toestand.

Frisdrankautomaat

Hieronder zie je een voorbeeld van een onderdeel van een frisdrankautomaat. Dit onderdeel houdt bij hoeveel geld de gebruiker van de automaat heeft ingeworpen. Voor het gemak gaan we uit van slechts twee munten: 50 cent en 1 euro. En alle frisdranken in de automaat kosten 2 euro.

De bollen zijn toestanden. Dit toestandsdiagram kent dus vijf toestanden. De frisdrankautomaat begint in de starttoestand, dat is in dit geval de toestand ‘Start: 0 euro’. Bij elke toestand zie je enkele overgangen. Bijvoorbeeld de overgang van de starttoestand ‘0 euro’ naar ‘0,5 euro’. Die toestandsovergang vindt plaats als de gebruiker begint met het inwerpen van een muntstuk van 50 eurocent.
Je ziet dat een toestandsovergang ook naar dezelfde toestand kan gaan. Kijk maar bij de toestand ‘2 euro’. Na de toestandsovergang ‘Inworp 50 cent’ is de toestand nog steeds ‘2 euro’.

Je kunt er zelf even mee oefenen. Klik op het plaatje hieronder om te activeren. Via de blauw en oranje knop kun je zogenaamd 50 cent of 1 euro inwerpen en dan zie je in welke toestand de automaat terecht komt.

Een toestandsovergang wordt meestal uitgevoerd op basis van informatie uit één van de sensoren. Als iemand één euro in de frisdrankautomaat doet, wordt dat door één of meerdere sensoren gedetecteerd. Hoe dat precies werkt is hierbij niet belangrijk. Uit de toestandsdiagram kun je opmaken naar welke toestand de automaat moet gaan als iemand die euromunt inwerpt.

Solution to Exercise 3
  • 1
  • 2
  • niet

Acties in een toestandsdiagram

Het vorige toestandsdiagram is nog niet volledig, de gebruiker moet immers wel een frisdrank kunnen selecteren. In het volgende toestandsdiagram voegen we een overgang ‘selectie’ toe aan alle toestanden. ‘Selectie’ betekent dat de gebruiker een frisdrank kiest.

Aan een toestandsovergang kan een actie worden gekoppeld. Bij de frisdrankautomaat wordt de actie: ‘geef frisdrank’ uitgevoerd als de gebruiker een frisdrank selecteert en de toestand is: ‘2 euro’. Acties zijn altijd gekoppeld aan toestandsovergangen en niet aan toestanden. Een toestandsovergang mag één of meer acties hebben, maar dat hoeft niet. Voor het uitvoeren van acties worden vaak actuatoren gebruikt, zoals een lampje, display of motor.

In deze module gebruiken we steeds een dubbele punt om het onderscheid te maken tussen toestandsovergang en actie.

<toestandsovergang> : <actie>
Solution to Exercise 4

Uitleg

De automaat houdt bij hoeveel geld (50 cent en 1 euro-muntstukken) er is ingeworpen. Pas als het totaal gelijk is of meer dan 2 euro kan de gebruiker een frisdrank selecteren. De automaat geeft geen geld terug (niet een erg klantvriendelijke automaat dus).

3.2Voorbeelden

Inleiding

Voorbeeld: lichtregulering

Uitwerking opdracht a)

Uitwerking opdracht b)

Voorbeeld: tamagotchi

Voorbeeld: valdetectie

3.3Correcte toestandsdiagrammen

Tabel met alle toestandsovergangen

Voor het overzicht laten we de toestandsovergangen die naar dezelfde toestand verwijzen ook wel eens weg, zoals hieronder.

Het is echter wel verstandig om goed na te denken over wat er in alle gevallen gebeurt. Bijvoorbeeld, wat gebeurt er in toestand ‘1 euro’ als de gebruiker een frisdrank selecteert? Door over alle mogelijkheden na te denken voorkom je fouten die je later veel tijd kosten om te herstellen. Je kunt dat ook in een tabel weergeven door alle toestanden te combineren met alle mogelijke toestandsovergangen. Daarbij geef je voor alle mogelijkheden aan wat de nieuwe toestand wordt.

Toestand ↓ / Toestandsovergang →Inworp 50 centInworp 1 euroSelectie
Start:0 euro0,5 euro1 euro
0,5 euro1 euro
1 euro
1,5 euro
2 euro

In de bovenstaande tabel zie je alle toestanden in de linker kolom. Je ziet ook alle mogelijke gebeurtenissen in de bovenste rij. Voor iedere combinatie moet de tabel beschrijven wat de nieuwe toestand wordt. Dit kan dus ook dezelfde toestand blijven. De tabel hierboven is nog niet volledig ingevuld.

Solution to Exercise 5

Uitleg

Toestand ↓ / Toestandsovergang →Inworp 50 centInworp 1 euroSelectie
Start:0 euro0,5 euro1 euro
0,5 euro1 euro1,5 euro0,5 euro
1 euro2 euro2 euro1 euro
1,5 euro2 euro2 euro1,5 euro
2 euro2 euro2 euro2 euro

Regels voor een toestandsdiagram

Een toestandsdiagram is gebonden aan strenge regels: