Fachhochschule Augsburg
Praktikum "Softwareentwicklung und Programmierung Teil 1"
Studiengang Interaktive Medien, 01.12.2008

Praktikum "Softwareentwicklung und Programmierung, Teil 1" im Studiengang Interaktive Medien

Aufgabe 8

Die Klasse Car soll ein einfaches Modell der Dynamik eines Autos realisieren.

Es soll folgendes Verhalten in Form von noch zu definierenden Methoden unterstützt werden. Denken Sie daran den Zustand des Autos über Instanzvariablen geeignet darzustellen.

    A) Motor starten und abstellen.

    B) Geschwindigkeit festlegen (Tempomat)

    Dies geht erst dann, wenn der Motor gestartet wurde.

    Es kann nur ein Wert zwischen 0 und einer maximalen Geschwindigkeit gewählt werden, welche für jedes Auto bei der Erzeugung festgelegt wird und anschließend nicht mehr verändert werden kann (kein nachträgliches Tuning).

    Verwenden Sie als Einheit für die Geschwindigkeit m/s. Dann sollten die zugehörigen Bewegungen auf dem Bildschirm vernünftig beobachtet werden können. (Zur Erinnerung: 1 m/s entspricht 3,6 km/h).

    C) Ortsänderung.

    Sie können vereinfachend davon ausgehen, daß die Bewegung nur auf einer geraden Linie (parallel zur x-Achse) erfolgt (Highway durch den amerikanischen mittleren Westen).

    Definieren Sie zu diesem Zweck eine private Methode, die bei jedem Aufruf auf Basis der aktuellen Geschwindigkeit und der seit dem letzten Aufruf vergangenen Zeit den neuen Ort des Autos berechnet. Zur Berechnung der vergangenen Zeit können Sie die Methode System.currentTimeMillis() verwenden. Diese liefert die aktuelle Zeit in Millisekunden zurück. Tipp: Verwenden Sie eine Instanzvariable um den letzen Zeitpunkt  zwischen zwei Methodenaufrufen abzulegen.
    Überlegen Sie, wann die Methode zur Berechnung des Weges jeweils aufgerufen werden sollte?

    Der momentane Aufenthaltsort eines Autos muss über die Methoden getX() und getY() abgefragt werden können. Diese Aufrufe sollten zu beliebigen Zeiten erfolgen können (also jeweils nach kurzen Zeitintervallen wie in der Animation oder z. B.auch erst nach einer halben Stunde). Auch wenn sich zwischendurch die Geschwindigkeit verändert hat, soll der richtige Ort zurückgeliefert werden.

    D) Spritverbrauch

    Das Auto verfügt über einen Tank mit einer maximalen Füllmenge (in Litern).
    In diesen Tank kann per Aufruf einer Methode tanken() mit geeignetem Übergabeparameter Sprit eingefüllt werden.

    Beim Fahren verbraucht das Auto Benzin. Verwenden Sie zur Berechnung der Abnahme des Tankinhalts eine Tabelle, in der (grob gerastert) für verschiedende Geschwindigkeiten der Verbrauch abgelegt ist.
    Verfahren Sie bei der Aktualisierung des Tankinhalts ähnlich wie bei der jeweiligen Neuberechnung des Aufenthaltsortes.

    Bitte nicht vergessen: Sobald der Tank leer ist, bleibt das Auto natürlich stehen, d. h. die Geschwindigkeit geht auf 0 zurück und der Motor "stirbt ab".

Zum Demonstrieren des Verhaltens Ihrer Auto-Implementierung verwenden Sie bitte den beiliegenden Testrahmen mit Animation.

Er umfaßt die Klassen in den Dateien Traffic.java, CarTest.java und eine "Auto-Rumpfimplementierung" in Car.java. Beachten Sie dabei, dass die Animation die in der Klasse Car definierten get-Methoden braucht, um die entsprechenden Attributwerte darstellen zu können. Ihre Aufgabe ist es, die Implementierungen der Methoden gemäß der Aufgabenstellung zu verändern. Die Klasse Traffic braucht in der Regel nicht angefasst zu werden.

Fügen Sie in der main()-Methode von CarTest den Aufruf der verschiedenen Car-Methoden in einer geeigneten Reihenfolge hinzu. Wenn zwischen den Aufrufen Zeit vergehen soll, so erreichen Sie das durch die Methode Traffic.waitAWhile().


Abnahme: definitiv späteste Abgabe am 22. 12. 2008