Fingerübungen OOP
A1- Quadratische Funktion
Das Projekt bluej-quadratische-funktion enthält eine Klasse, die eine quadratische Funktion modelliert.
- Überlege, welche Informationen gespeichert werden müssen, um eine quadratische Funktion vollständig zu beschreiben.
- Schreibe einen Konstruktor, um eine quadratische Funktion zu erzeugen.
- Die Klasse soll die folgenden Methoden anbieten:
getFunktionswert(double x)
: liefert den Funktionswert an einer Stelle xgetScheitelX()
: liefert den x-Wert des ScheitelsgetScheitelY()
: liefert den y-Wert des ScheitelsgetAnzahlNullstellen()
: liefert die Anzahl der Nullstellen
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.
A2 - Notenverwaltung
Das Projekt bluej-notenverwaltung enthält eine Klasse namens Klausur, die das Ergebnis einer Oberstufenklausur modelliert. Sie bietet die folgenden Methoden an:
getAnzahl()
– die Gesamtzahl der erfassten NotengetDurchschnitt()
– die Durchschnittsnote der erfassten NotengetBesteNote()
und getSchlechtesteNote() – die beste bzw. schlechteste erfasste NotenoteEintragen(int note)
– fügt eine neue Note zur Erfassung hinzureset()
– löscht alle bisher erfassten Einträge aus dem Kurs
Ü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:
Bruch addieren(Bruch b)
Bruch subtrahieren(Bruch b)
Bruch multiplizieren(Bruch b)
Bruch dividieren(Bruch b)
int getZaehler()
int getNenner()
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:
public Bruch(int zaehler, int nenner)
public Bruch(int wert)
– erzeugt einen Bruch mit dem Nenner 1.
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.
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:
double getFunktionsWert(double x)
– gibt den Funktionswert zu einer gegebenen Stelle x zurück.Funktion getAbleitung()
– gibt die Ableitungsfunktion der Funktion zurück. Die Ableitung einer ganzrationalen Funktion ist wieder eine ganzrationale Funktion, d.h. es wird ein neues Objekt der KlasseGanzrationaleFunktion
zurückgegeben.
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.