|
|
||
Folge 4: Auto fahren |
||
Buch-VersionDie Folgen 1 bis 9 gibt es jetzt auch als Buch-Version. Noch nicht gedruckt, aber in Form von drei PDF-Dateien. Die Buch-Version sieht besser aus und enthält Themen, die ich aus Zeitgründen im regulären Kurs nicht behandeln kann, zum Beispiel das komplette Kapitel 6 sowie einige Exkurse. |
||
|
Wir wollen jetzt ein Programm schreiben, welches den Benzinverbrauch eines Autos simuliert. Unsere neue Klasse heißt demzufolge Auto.
|
||
Schritt 1 - Neue Klasse erzeugenErzeugen Sie - so wie in der Folge 2 gelernt - eine neues leeres Projekt und dann eine Klasse Auto. |
||
Schritt 2 - Quelltext abspeckenDoppelklicken Sie auf die Klasse Auto und entspecken Sie den Quelltext, so wie in Folge 3 gelernt. Entfernen Sie
|
Besonders experimentierfreudige Schüler(innen) kopieren sich eine eigene BlueJ-Version auf ihr persönliches Laufwerk und verändern die Template-Dateien (Vorlagen) entsprechend ihren Wünschen. |
|
Schritt 3 - Attribute definierenDie Klasse Auto hat noch keine Attribute. Die wollen wir jetzt definieren. Welche Attribute brauchen wir für eine solche Simulation überhaupt? Auf jeden Fall müssen wir wissen, wieviele Liter Benzin der Tank fasst (z.B. 70 l), dann muss der aktuelle Tankinhalt bekannt sein, mit dem das Auto startet (z.B. 30 l). Wichtig ist natürlich der km-Stand (z.B. 12.400) sowie der Verbrauch des Autos (z.B. 9 l / 100 km). Ergänzen Sie den Quelltext also folgendermaßen:
1 Die vier Attribute Die vier Attribute setzen wir vorsichtshalber auf den Datentyp double, damit wir später keine Probleme beim Rechnen bekommen. Den Konstruktor lassen wir erst mal leer, und öffentliche und private Methoden gibt es in diesem Stadium der Klasse noch nicht. |
Hinweis 1: Hinweis 2: |
|
Schritt 4 - Die KonstruktorenAls nächstes ergänzen wir den Konstruktor so, dass die Attribute mit sinnvollen Anfangswerten versehen werden. Ein solches Vorgehen bezeichnen wir auch als Initialisierung der Attribute.
2 Die Initialisierung der Attribute Es gibt zwei Möglichkeiten, ein Attribut zu initialisieren, die Abb. 2 zeigt die erste Möglichkeit: Erstens: Direkte Wertzuweisung an das Attribut. Das Tankvolumen wird hier zum Beispiel auf den Wert 70.0 gesetzt, und der Benzinverbrauch auf den Wert 8.6. Der Benutzer des fertigen Java-Programms hat keine Möglichkeit, hier andere Zahlen einzugeben, es sei denn, er schreibt eigene manipulierende Methoden hierfür. Zweitens: Der Konstruktor kann wie alle anderen Methoden auch Parameter einsetzen, um Informationen von außen zu holen.
3 Ein zweiter Konstruktor mit Parametern In Abb. 3 haben wir einen zweiten Konstruktor mit vier Parametern in die Klasse eingebaut. Hier kann der Benutzer der Klasse beim Erzeugen eines Auto-Objektes selbst die Startwerte der vier Attribute bestimmen, indem er dem Konstruktor vier Werte übergibt. Außerdem sehen wir hier, dass eine Klasse zwei, drei oder noch mehrere Konstruktoren haben kann. Allerdings müssen sich die Konstruktoren in ihren Parametern eindeutig voneinander unterscheiden. Man nennt diese technische Möglichkeit auch "overloading" von Methoden. Auch bei normalen sondierenden oder manipulierenden Methoden ist ein solches overloading erlaubt. |
Initialisierung: |
|
Übung 4.1 (3 Punkte)
4 Die neuen Methoden tanken und anzeigen Ergänzen Sie die Klasse Auto um die in Abb. 4 gezeigte Methoden tanken() und anzeigen(). Die Methode tanken() ist noch fehlerhaft. a) Warum ist die Methode noch fehlerhaft; was könnte man besser machen? (1 Punkt) b) Verbessern Sie die Methode entsprechend! (2 Punkte) |
||
Übung 4.2 (3 Punkte)Folgende Methode fahren() simuliert das eigentliche Autofahren:
5 Die erste Fassung der Methode fahren Auch diese Methode funktioniert noch nicht fehlerfrei. a) Wo liegt der Fehler (was kann theoretisch passieren?) (1 Punkt) b) Verbessern Sie diesen Fehler (und alle anderen, die Sie finden) (2 Punkte) |
|
|
Übung 4.3 (4 Punkte)Autofahren ist weitaus komplizierter, als die Übungen 4.1 und 4.2 es ahnen lassen. So hängt z.B. der Verbrauch von dem Gesamtgewicht des Fahrzeugs ab. Sitzt nur der Fahrer im Auto, so wird weniger Benzin verbraucht, als wenn er drei schwere Fahrgäste transportiert und auch noch deren Gepäck.Ergänzen Sie die Klasse Auto um die nötigen Attribute und Methoden, um ein solches Verhalten zu realisieren! Hinweise: Jedes Auto hat ein Leergewicht sowie ein zulässiges Gesamtgewicht. Außerdem können maximal vier Personen zusteigen. Jede Person wiederum hat ein bestimmtes Gewicht. Außerdem muss das Zuladen von Gepäck möglich sein. Für den Benzinverbrauch muss eine Formel entwickelt werden, bei der der Verbrauch pro 100 km mit dem Gesamtgewicht steigt. |
||
Übung 4.4 (4 Punkte)Das Thema Autofahren ist derart komplex und interessant, dass Sie sicherlich auch noch eine eigene Idee haben, wie man die Klasse Auto realistisch erweitern könnte. Da auch die eigene Kreativität in der Informatik eine Rolle spielen sollte, gibt es diese offene Aufgabe. Ergänzen Sie die Klasse Auto um Attribute und Methoden, die das Fahren noch realistischer machen! |
||
for-SchleifenDamit Sie mit den nächsten Übungen weitermachen können, müssen Sie zunächst den Theorieteil zum Thema for-Schleifen durcharbeiten. Wenn Sie damit fertig sind, kommen Sie wieder hierhin zurück. |
||
Übung 4.6 (5 Punkte)Ich formuliere diese Aufgabe mal etwas freier als die anderen. Sie haben doch sicherlich schon mal in einem Auto mit einem Bordcomputer gesessen. Da kann man sich dann z.B. nicht nur einfach die Geschwindigkeit und die gefahrenen Kilometer anzeigen lassen, sondern auch die Durchschnittsgeschwindigkeit seit dem Start, den aktuellen Benzinverbrauch, den durchschnittlichen Benzinverbrauch (seit dem Start) sowie die Reichweite des Autos in Kilometern. Ihre Aufgabe ist es jetzt, einen solchen Bordcomputer in einer Methode der Klasse Auto zu simulieren. Wie Sie das machen, und welche Daten Sie anzeigen, überlasse ich Ihnen. Wahrscheinlich werden Sie die vollen 5 Punkte nicht bekommen, aber zwei oder drei Punkte helfen ja vielleicht auch schon weiter. Übung 4.7 (5 Punkte)Damit Sie diese Übung erfolgreich bearbeiten können, müssen Sie die Übung 4.6 gelöst haben. Sie sollen nämlich mit dem Bordcomputer weitermachen. Der Benzinverbrauch eines Autos ist nicht konstant. In Übung 4.3 haben Sie bereits gesehen, dass er vom Gewicht des Autos abhängt. Ein mit vier erwachsenen Personen beladener PKW verbraucht deutlich mehr Benzin als ein Wagen, in dem nur ein dünner jugendlicher Fahrer sitzt. Außerdem hängt der Benzinverbrauch stark von der Temperatur des Motors ab. Je kälter der Motor, desto mehr Benzin wird verbraucht. Direkt nach dem Start können das schon mal 20 Liter / 100 km sein. Der Wert ist natürlich trügerisch, denn wenn Sie 100 km gefahren sind, ist der Motor schon längst warm, und der Verbrauch hat sich auf normale Werte eingependelt. Erweitern Sie die Klasse Auto jetzt um Attribute und Methoden, die den Bordcomputer perfektionieren und auch die Veränderungen des Benzinverbrauchs mit berücksichtigen. Beide Aufgaben, 4.6 und 4.7, können Sie nur dann lösen, wenn Sie an geeigneten Stellen for-Schleifen einsetzen. Eine Timer-Programmierung wäre natürlich schön, übersteigt aber die Fähigkeiten der meisten Kursmitglieder. Also geben Sie die Meldungen des Bordcomputers einfach in die Konsole aus, z.B. so: km-Stand 10.000 / Geschwindigkeit 55.3 / Verbrauch 15.4 km-Stand 10.001 / Geschwindigkeit 62.7 / Verbrauch 12.1 km-Stand 10.002 / Geschwindigkeit 33.8 / Verbrauch 11.2 km-Stand 10.003 / Geschwindigkeit 70.1 / Verbrauch 10.4 Und so weiter. Wenn Sie sich natürlich schon mit Java-Applets auskennen sollten, können Sie das Ganze gern aufwändiger gestalten, vielleicht mit einer richtigen Bordcomputer-Simulation (also auch vom Aussehen her). Dafür gibt es dann maximal 2 Sonderpunkte. |
||
Klassen- und Objektdiagramme (Klausur)Und die Theorie nimmt kein Ende. Wenn Sie den Theorieteil durchgelesen haben, machen Sie bitte mit der nächsten Folge weiter. |
||
weiter mit Folge 5: Java-Applets
|
||
|
Diese HTML-Seite wurde erstellt von Ulrich Helmich am 26. Januar 2005 und verändert am 3. September 2006. |
||
Sie sind Besucher Nr. seit dem Erreichen der 10-Millionen-Marke am 21.01.2010