Klassen Light

Klassen Light ska representera ett trafiksignal.

En trafiksignal karakteriseras av följande egenskaper:

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
(För enkelhetens skull låter vi signalerna alltid starta med grönperioden.)

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!

bild
Anm: Om man vill testa klassen för sig, måste man på något sätt ge den en egen klocka. Den kan lagras som en instansvariabel och stegas med en stepmetod. Enklast är dock att testa den genom att bara placera den i TrafficSystem och köra Simulation.

Tillbaka

Valid CSS!