next up previous contents
Next: Klasse project Up: Dokumentation Previous: Dokumentation

Klasse math

Die Klasse math beinhaltet die eigentlichen Algorithmen in den Methoden ggt und fact. Zusätzlich wurden einige ältere Algorithmen, die zu einem späteren Entwicklungszeitpunkt verworfen wurden, zu Vergleichszwecken darin belassen. Obwohl aus Sicht der Datenkapselung keine Notwendigkeit zur Auslagerung dieser Methoden in eine eigene Klasse bestand, wurde dieser Weg gewählt, um die Wiederverwendbarkeit zu erhöhen, was unwesentlich später zu einer wesentlichen Vereinfachung der Implementation der Testprogramme timetest und timetest2 führte. Folglich besitzt die Klasse math keine interne Datenstruktur und dient einzig als Wrapper um die Methoden welche die Kernalgorithmen implementieren.

Zwei besondere Entwurfsentscheidungen bleiben zu bemerken:

Intern wird für die Darstellung beliebig großer ganzer Zahlen die Klasse BigInteger aus dem package java.math benutzt, da diese einmal vorhanden und getestet sind. Sicherlich wäre es auch möglich gewesen, die entsprechenden Routinen selbst zu schreiben, doch wäre das natürlich der angestrebten Wiederverwendung bereits vorhandenen Codes zuwidergelaufen und hätte unverhältnismässig viel Zeit verschlungen.

Die Methode fact wurde absichtlich so einfach gestaltet. Sicherlich hätte statt dieser einfachen Aneinanderreihung der zu berechnenden Größen auch ein allgemeiner Algorithmus für den ggT gefunden werden können, der quasi nebenher die Faktoren tex2html_wrap237 und tex2html_wrap238 erzeugt. Doch wurde absichtlich darauf verzichtet, um die Übersichtlichkeit und Nachvollziehbarkeit der Programmierung zu wahren. Auch hat dies den Entwicklungsprozeß erheblich beschleunigt, ohne eine absehbare Auswirkung auf die Geschwindigkeit zu haben. Vielmehr ist es wahrscheinlich, daß ein solcher verbesserter Komplett-Algorithmus bei höherer Komplexität des Codes ein schlechteres Zeitverhalten gezeigt haette.


next up previous contents
Next: Klasse project Up: Dokumentation Previous: Dokumentation

Michael Weiser
Fre Jan 7 00:42:53 CET 2000