http://ovm-kassel.de | Lernsituation | |
---|---|
Lernsituation IT-AE-JA-LS-4.1 |
|
Code |
IT-AE-JA-LS-4.1 |
Autor |
André Bauer |
Datum |
3. Juni 2018 |
Links |
|
Verwandte Literatur |
|
Lizenz |
|
Ampelsteuerung
Die Smart Traffic Tech GmbH entwickelt u. a. Steuerungssysteme für Verkehrsampeln. Sie sollen dazu in der Entwicklungsabteilung eine Software-Komponente entwickeln.
1. Komponenten
Der für das Projekt verantwortliche Software-Architekt hat bereits einen Entwurf für die Komponenten und deren Abhängigkeiten entwickelt.
Der Projektleiter hat Ihnen und ihrem Teampartner zur Wahl gestellt, ob Sie
-
die zentrale Steuerungseinheit, den Controller
com.traffic_lights.controller
, -
eine Komponente zur graphische Anzeige, den View
com.traffic_lights.view
, oder -
die Komponente für die Eingabe über eine Grafische Benutzeroberfläche, den Input
com.traffic_lights.input
,
der Ampelschaltung entwickeln.
2. Schnittstellen
Die Komponenten sollen dabei über Schnittstellen verbunden werden und nur über diese Informationen austauschen. Dies soll die Integration der Komponenten aus den verschiedenen Teams erleichtern und ermöglichen, dass Komponenten auch ausgetauscht werden können.
Die Schnittstelle der beiden Komponenten Controller und View ist durch zwei Java-Interfaces definiert, die jeweils eine interne Aufzählung der möglichen Zustände enthalten, die den Ampelphasen für eine Standard-Ampelanlage mit vier Signalisierungszuständen bzw. einer zweiphasigen Fußgängerampel entsprechen.
Der Controller benutzt diese Schnittstelle,
indem er für die Steuerungskommandos an die Ampeln
mit der Methode turn(State)
die Java-Schnittstellen
PedestrianCrossingLights
sowie
TrafficLights
anstatt konkreter Java-Klassen verwendet.
In Abbildung 3 verwendet die Klasse
PedestrianCrossingController
die Schnittstellen zur
Kommunikation mit dem View.
Der View verwendet diese Schnittstelle durch Klassen,
die die Java-Schnittstellen
PedestrianCrossingLights
sowie
TrafficLights
implementieren,
also indem er Klassen bereitstellt,
die über eine passende Methode turn(State)
verfügen.
In Abbildung 3 implementieren die Klassen
SimpleTrafficLights
und
SimplePedestrianCrossingLights
diese Schnittstellen.
Die Komponenten Input und Controller kommunizieren über die Schnittstelle PedestrianInput.
3. Prototyp
Ein Team hat bereits einen Prototypen als Machbarkeitsnachweis entwickelt, der als Git-Repository und als ZIP-Archiv vorliegt und dessen Aufbau in Abbildung 5 als Klassen-Diagramm dargestellt ist.
PedestrianCrossingController
und
RandomUser
sind als
Runnable
implementiert, so dass diese in
nebenläufigen Threads
ablaufen können.
Die Klasse RandomUser
dient dabei als Test-Benutzer, der nach zufälligen Zeitabständen
den
Button
über die Methode push()
betätigt.
Eine Main-Klasse, die der Übersicht halber in Abbildung 5 nicht dargestellt ist, verbindet die Komponenten und startet das System.
4. Dokumentation
Die Dokumentation mit Javadoc wird in der Information IT-AE-JA-INFO-3.5 Quellcode dokumentieren näher erläutert.
Da die Ampelsteuerung aus mehreren Java-Paketen besteht, wird Javadoc
mit der Option -subpackages
mitgeteilt, dass auch für alle Unterpakete
die Dokumentation generiert werden soll.
$ javadoc -d doc -author -private -sourcepath src -subpackages com.traffic_lights
Die Dokumentation im Ordner doc
kann anschließend mit einem Browser
betrachtet werden.
$ firefox doc/index.html