Fingerübungen OOP

A1- Quadratische Funktion

Das Projekt bluej-quadratische-funktion enthält eine Klasse, die eine quadratische Funktion modelliert.

Ersetzen an den Stellen, an denen noch TODO steht, den bestehenden Code durch deine Implementation. Klicke links auf "Tests starten", um automatisch 100 Testfälle ausführen zu lassen - so kannst du überprüfen, ob deine Lösung stimmt.

Lösungsvorschlag

A2 - Notenverwaltung

Das Projekt bluej-notenverwaltung enthält eine Klasse namens Klausur, die das Ergebnis einer Oberstufenklausur modelliert. Sie bietet die folgenden Methoden an:

Überlege dir, wie du das Ergebnis modellieren möchtest. Es sollen wie üblich keine Variablen nach außen hin sichtbar sein – der Zugriff darf nur über die oben aufgezählten Methoden geschehen.

Implementiere die Methoden, in denen noch TODO steht.

Klicke links auf "Tests starten", um automatisch 100 Testfälle ausführen zu lassen.

A3 - Brüche

Das Projekt bluej-brueche enthält eine Klasse namens Bruch, die einen Bruch repräsentiert. Sie bietet die folgenden öffentlichen Methoden an:

Die ersten vier Methoden führen die Grundrechenarten mit dem aktuellen Bruch (this) und dem übergebenen Bruch b aus. Das Ergebnis ist stets ein neues Objekt, d.h. this ändert sich durch einen Methodenaufruf nicht. Orientiere dich an der Methode multiplizieren, um zu sehen, wie ein neues Bruch-Objekt erzeugt und zurückgegeben wird.

Dazu kommen die (überladenen) Konstruktoren:

Der Nenner eines Bruchs muss immer positiv sein. Dafür sollte im Konstruktor gesorgt werden. Der Aufruf new Bruch(1,2) sollte also den gleichen Bruch erzeugen wie new Bruch(-1,-2).

Implementiere alle Stellen, an denen derzeit noch TODO steht.

Beispiele für die Verwendung:

Bruch a = new Bruch(1, 3); // repräsentiert die Zahl 1/3
Bruch b = new Bruch(1, 4); // repräsentiert die Zahl 1/4
Bruch c = a.addieren(b);
// c repräsentiert 1/3 + 1/4 = 7/12
// a ist weiterhin 1/3, b ist weiterhin 1/4

Lassen die 100 Testfälle in der Testklasse BruchTester ausführen, um deine Lösung zu kontrollieren.

Lösungsvorschlag

Bonusaufgabe für Fortgeschrittene:

Sorge dafür, dass deine Brüche immer vollständig gekürzt sind. Um kürzen zu können, benötigt man den größten gemeinsamen Teiler von Zähler und Nenner. Diesen erhält man effizient mit dem Euklidischen Algorithmus (→ Google oder Wikipedia). Lasse dann die Testfälle in der Testklasse BruchTester2 ausführen.

A4 - Ganzrationale Funktionen

Das Projekt bluej-ganzrationale-fkt enthält einige Klassen, die das Zeichnen von Funktionen sowie der Tangente ihres Schaubilds ermöglichen. Zunächst beschäftigen wir uns mit den ganzrationalen Funktionen, d.h. Funktionen der Gestalt:

$$ f(x)=a_n\cdot x^n + a_{n-1}\cdot x^{n-1} + a_{n-2}\cdot x^{n-2} + \ldots + a_2\cdot x^2 + a_1\cdot x + a_0$$

Die Klasse GanzrationaleFunktion repräsentiert eine solche Funktion. Sie bietet zwei Methoden an, die du implementieren musst:

Dem Konstruktor wird ein Array aus double-Werten übergeben, die die Koeffizienten $a_0§,$a_1$, u.s.w. repräsentieren sollen.

Die Klasse FunktionsTester ist zum Starten der graphischen Ausgabe da. Im Konstruktor wird ein Funktionsobjekt erzeugt (vgl. das vorhandene Beispiel). Um deine Implementation zu testen, erzeuge ein FunktionsTester-Objekt und rufe seine Methode anzeigen() auf.

Für Fortgeschrittene: Informiere dich sich über das Horner-Schema zur effizienten Berechnung von Funktionswerten von ganzrationalen Funktionen.