Verkehrskontrolle

Bei Verkehrskontrollen werden Fahrzeuge von der Polizei aufgefordert, die Geschwindigkeit zu senken. Von einem ersten Beamten am Strassenrand werden die Autos in Augenschein genommen und dann je nach "Verdachtsmoment" in eine Kolonnen am Strassenrand herausgewunken. Dort kontrolliert ein weiterer Polizist die herausgewunkenen Fahrzeuge auf ihre Verkehrstauglichkeit.

Ein Fahrzeug zeichnet sich durch sein Modell, seine Farbe, sein Kennzeichen und seine Verkehrstauglichkeit aus. Über die Fahrzeugpapiere können alle Werte überprüft werden. In der Fahrzeugkolonne mit den zu kontrollierenden Fahrzeugen können sich Fahrzeuge von hinten anstellen oder vorne die Kolonne verlassen, weil sie vom Polizeibeamten weiter- oder herausgewunken werden.

Werden viele Fahrzeuge herausgewunken, so bildet sich vor dem zweiten Beamten eine Reihe von Autos, die auf ihre Kontrolle warten. Die gesamte Verkehrskontrolle wird so lange aufrechterhalten, bis eine Mindestzahl an Autos mit Mängeln gefunden oder eine Höchstzahl von Fahrzeugen kontrolliert wurde.

Die kontrollierenden Beamten können ein Fahrzeug herauswinken, seine Verkehrstauglichkeit feststellen und die Anzahl der Mängelexemplare und die Anzahl der kontrollierten Fahrzeuge angeben lassen. Die Verkehrskontrolle kann die Kolonne auflösen, indem sie alle Fahrzeuge daraus "entlässt". Die Kontrolle der herausgewunkenen Fahrzeuge wird jedoch immer beendet.

a) Für die Simulation der beschriebenen Kontrolle wird die Datenstruktur "Queue" gewählt. Erläutere, warum das eine gute Wahl ist.

b) Entwerfe ein Implementationsdiagramm der Simulation mit den Klassen Fahrzeug, Verkehrskontrolle und Queue. Die Klassen sollen auch die notwendigen Attribute und Methoden aus der Situationsbeschreibung besitzen. Füge weitere Attribute und Methoden hinzu, die dir sinnvoll erscheinen.

c) Implementiere eine Methode public void KolonneAufloesen() der Klasse Verkehrskontrolle, die alle Fahrzeuge nacheinander aus der Kolonne entlässt. Alle beim Aufruf der Methode in der Kolonne stehenden Fahrzeuge werden nacheinander aus der Kolonne entlassen, anschließend ist die Kolonne leer.

d) Implementiere die Methode public void herauswinken() der Klasse Verkehrskontrolle, die das erste Fahrzeug der Kolonne in den Kontrollbereich leitet.