Aufgaben

Werbung
Repetitorium Informatik (Java)
Wintersemester 2015/16
[email protected]
8. Übungsblatt
Aufgabe 8.1: Tiere: Overriding
Laden Sie die Klassen Tier, Hund und Fisch von der Internetseite herunter. Die Konstruktoren
der Klassen sowie die Signaturen der Methoden ausgabe() sind bereits vorhanden.
a) Implementieren Sie die Methode Tier.ausgabe(). Es sollen alle Attribute der Klasse ausgegeben werden. Pro Zeile soll jeweils der Name eines Attributs sowie dessen Wert ausgegeben werden.
b) Implementieren Sie die Methode Hund.ausgabe(). Zusätzlich zu den Attributen der Klasse
Tier sollen auch die spezialisierten Attribute der Klasse Hund ausgegeben werden. Denken
Sie daran, was sie über Overriding und die Verwendung des Schlüsselworts super gelernt
haben!
c) Implementieren Sie die Methode Fisch.ausgabe(). Zusätzlich zu den Attributen der Klasse Tier sollen auch die spezialisierten Attribute der Klasse Fisch ausgegeben werden. Denken Sie daran, was sie über Overriding und die Verwendung des Schlüsselworts super gelernt
haben!).
d) Laden Sie die Klasse Zoo von unserer Internetseite herunter und führen Sie diese aus, um Ihre
Implementierung zu testen.
Aufgabe 8.2: Pakete
Im Vortrag haben Sie die Verwendung von Paketen kennengelernt. In dieser Aufgabe sollen Sie ein
eigenes kleines Paket schreiben und von „außerhalb“ verwenden. Denken Sie daran, was Sie über
die notwendige Ordnerstruktur bei der Verwendung von Paketen gelernt haben!
a) Schreiben Sie eine Klasse Zahl, welche sich im Paket praktikum.tag8 befinden soll. Die
Klasse soll in der Lage sein, per Kontruktor einen int-Wert als Parameter entgegenzunehmen
und diesen als Attribut mit dem Namen „wert“ zu speichern. Achten Sie darauf das Attribut
public zu deklarieren!
b) Schreiben
Sie eine Klasse Berechnungen, welche sich ebenfalls im Paket
praktikum.tag8 befindet. Die Klasse soll die statischen Methoden addieren()
und multiplizieren() beinhalten, die jeweils zwei Zahl-Objekte entgegen nehmen
und eine Addition bzw. Multiplikation mit den in den Objekten gespeicherten Werten
durchführen. Das Ergebnis soll als neue Instanz der Klasse Zahl zurückgegeben werden.
c) Schreiben Sie eine Klasse Programm, welche sich im Paket praktikum befindet und die
Klassen Zahl und Berechnungen verwendet. Berechnen Sie mit Hilfe dieser Klassen den
Wert des Ausdrucks 2 ∗ 5 + 3. Geben Sie das Ergebnis auf der Konsole aus.
-1-
Repetitorium Informatik (Java)
Wintersemester 2015/16
[email protected]
Aufgabe 8.3: OwnMath
In dieser Aufgabe sollen Sie Teile der Klasse Math, die Sie bereits im Vortrag kennengelernt haben,
selbst implementieren.
a) Öffnen Sie die Dokumentation zur Java-API in einem Browser. Suchen Sie (beispielsweise
über die Übersicht über alle Klassen links unten) die Klasse Math aus dem Paket java.lang.
b) Definieren Sie - wie in der Klasse Math auch - die beiden Konstanten E (Euler-Zahl) und
PI. Sie können beispielsweise in Wikipedia nachschlagen, um die entsprechenden Werte zu
erhalten.
c) Lesen Sie in der Dokumentation die Beschreibungen zu den verschiedenen Überladungen
der Methode min() und implementieren Sie diese (alle 4!) als Klassenmethoden der Klasse
OwnMath.
d) Lesen Sie in der Dokumentation die Beschreibungen zu den verschiedenen Überladungen
der Methode abs() und implementieren Sie diese (alle 4!) als Klassenmethoden der Klasse
OwnMath.
e) Implementieren Sie die statische Methode sqrt(), welche aus einer Zahl a die Wurzel zieht
und als Ergebnis zurückgibt.
Verwenden Sie zur Berechnung der Wurzel das sog. Heron-Verfahren. Dabei handelt es sich
um ein Iterationsverfahren, welches bei einem Startwert x0 (hier: x0 = 1) beginnt und das
jeweils nächste Folgenglied nach der Iterationsvorschrift
xn+1 =
xn +
a
xn
2
berechnet. Berechnen Sie die einzelnen Folgenglieder in einer Schleife und brechen Sie diese
ab, sobald die (Absolut-)Differenz zweier direkt aufeinanderfolgender Folgenglieder kleiner
0.01 ist. Benutzen Sie hierzu Ihre Implementierung der Methode abs().
f) Lesen Sie in der Dokumentation die Beschreibung zu der Methode toDegrees() und implementieren Sie eine entsprechende statische Methode in Ihrer Klasse OwnMath. Benutzen
Sie Ihre eigene Definition der Konstante PI.
Sie können Ihre Implementierung mit der Klasse OwnMathTest testen, die Sie auf unserer Internetseite finden. Denken Sie daran, Assertions beim Aufruf von OwnMathTest zu aktivieren!
-2-
Repetitorium Informatik (Java)
Wintersemester 2015/16
[email protected]
Aufgabe 8.4: Lotto
Sie haben im Vortrag bereits die Klasse Scanner kennengelernt, die dazu benutzt werden kann,
Eingaben des Benutzers über die Standardeingabe zu lesen. In dieser Aufgabe sollen Sie eine Abwandlung des Lotto-Spiels implementieren. Dabei soll der Spieler nach und nach 5 Zahlen zwischen
1 und 24 „ankreuzen“ können. Anschließend werden 5 Zahlen „gezogen“ und dem Spieler mitgeteilt, wie viele Treffer er hat.
Laden Sie sich für diese Aufgabe die Datei Lotto.java von der Internetseite, welche bereits einen
Teil der Implementierung enthält.
a) Implementieren Sie zunächst die Methode zahlenAnkreuzen(). Diese übernimmt das Einlesen der Zahlen vom Spieler. Erzeugen Sie dazu zunächst ein int-Array in der entsprechenden Größe (verwenden Sie die Konstante ANZAHL), in welches die Zahlen gespeichert werden
sollen. Anschließend erzeugen Sie ein neues Scanner-Objekt, wie Sie es im Vortrag bereits
kennengelernt haben. In einer Schleife lesen Sie so viele Zahlen ein, wie es die Konstante
ANZAHL vorgibt. Sie können zwar davon ausgehen, dass nur Zahlen eingegeben werden, allerdings müssen die eingegebenen Zahlen auf Gültigkeit überprüft werden. Jede Zahl muss
zwischen 1 und 24 liegen und darf nur einmal angekreuzt werden. Die Überprüfung dieser
Randbedingungen soll in den Methoden zahlGueltig() und zahlBereitsVorhanden()
implementiert werden. Ist eine Eingabe ungültig, muss eine entsprechende Meldung an den
Spieler ausgegeben werden und die Zahl muss erneut eingegeben werden.
Geben Sie das erzeugte Array mit den Eingaben als Ergebnis der Methode zurück.
b) Implementieren Sie nun die Methode zahlenZiehen(). Diese Methode soll so viele Zahlen
„ziehen“, wie es die Konstante ANZAHL vorgibt, und in einem Array speichern. Dieses Array
wird als Ergebnis der Methode zurückgegeben. Für die Bestimmung einer Zufallszahl im
korrekten Intervall können Sie die Methode zufallszahl() benutzen. Stellen Sie auch hier
sicher, dass jede Zahl maximal einmal „gezogen“ wird.
c) Implementieren Sie zuletzt die Methode richtige(). Diese Methode nimmt als Parameter
zwei int-Arrays entgegen. Eines für die „angekreuzten“ Zahlen und eines für die „gezogenen“ Zahlen. Die Methode ermittelt, wie viele Zahlen des Spielers „gezogen“ wurden und
liefert das Ergebnis als int zurück. Überlegen Sie hierzu wie Sie feststellen können, ob eine
Zahl in einem Array vorkommt.
Testen Sie Ihre Implementierung, in dem Sie das Programm ausführen. Testen Sie auch, ob sich Ihr
Programm korrekt im Sinne der Aufgabenstellung verhält, wenn Sie ungültige Zahlen eingeben.
-3-
Herunterladen
Explore flashcards