Klassen Light
Klassen Light
ska representera ett trafiksignal.
En trafiksignal karakteriseras av följande egenskaper:
- Period dvs antalet tidssteg mellan två växlingar från grönt till rött.
- Grönperiod dvs antalet tidssteg som signalen är grön.
Förloppet för en signal med period 7 och grönperiod 3 kan illustreras på detta sätt:
Tidssteg: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Tänkt intern klocka: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 1 |
Färg: | G | G | G | R | R | R | R | G | G | G | R | R | R | R | G | G |
Observera att den interna klockan inte behöver lagras som instansvariabel utan kan lätt
räknas ut med hjälp av den globala tidstegsklockan Simulation.getTime()
.
På så sätt slipper vi skriva en metod som stegar fram signalen.
Vi behöver kunna fråga signalen om den är grön eller ej men denna egenskap behöver inte heller lagras som instansvariabel utan räknas lätt varje gång frågan ställs.
Vi får alltså följande UML-diagram: Se specifikationen! |
![]() |
step
metod.
Enklast är dock att testa den genom att bara placera den i TrafficSystem
och köra
Simulation
.