Polynomials Calculator Doc¶
Einleitung¶
Über das Programm¶
Das Programm “Polynomials Calculator” ist ein reines Konsolenprogramm, welches dazu dient Polynome bis zum n Grad zu Addieren, Subtrahieren, Multiplizieren und Dividieren.
Es wird dem User ermöglicht Polynome in einer Json Datei zu sichern und zu laden um zu einen späteren Zeitpunkt weiter damit zu arbeiten.
Nach dem starten wird der Wizard-Modus gestartet um Polynome aus einer Json Datei zu laden und anschließend wird das Menü gestartet, welche sich so lange wiederholt bis der User das Programm über das Menü schließt.
In Menü kann der User Polynome hinzufügen, bearbeiten und löschen aber auch Mathematische Operationen Addieren, Subtrahieren, Multiplizieren und Dividieren ausführen sowie die Polynome als Json sichern oder neu von der Json einlesen.
Das Projekt wurde mit JUnit 4 tests getestete und die test Klassen befinden sich bei den Quellcode dabei.
- Quellcode: https://github.com/linuxluigi/polynomials-calculator
- Online Dokumentation: http://polynomials-calculator.readthedocs.io/de/latest/

Kompilieren¶
Das Projekt wurde via Maven 2 konstruiert und kann mit ein Konsolen Befehl in einer Jar Datei Kompiliert werden, dafür muss aber zuerst Maven 2 installiert werden, unter Ubuntu / Debian muss folgendes eingeben werden.
$ sudo apt-get install maven2
Jetzt wurde Maven 2 installiert und nun kann das Projekt die abhänigkeiten installiert werden, test ausgeführt und zur einer ausführbaren Jar ausgeben.
$ mvn clean install

Abhänigkeiten¶
Das Projekt wurde als Maven 2 Modul geschrieben und verwendet folgende Maven Module.
Maven Projekt Website: https://maven.apache.org/
Google GSON¶
Gson ist eine Java Bibliothek die es ermöglicht Klassen und Variablen als Json Datei aus zu geben oder ein String als Klasse oder Variable zu konvertieren.
JUnit¶
Junit ist ein unit testing Framework für Java von Erich Gamma und Kent Beck.
Bedienung¶
Wizard Modus¶
Bedienung¶
Der Wizard Modus wird nur am Start des Programmes ausgeführt und dient zum Initialesieren des Polynoms Array, Json Datei zu bestimmen und bei bedarf Polynome aus dieser Datei zu laden und zur späteren Verwendung auf zu bereiten.
Nach dem start wird als erstes der Name und die Version des Programmes angezegt. Anschließend wird abgefragt welche Json Datei zum sichern und laden der Polynome verwendet werden soll und anschließend ob diese Datei geladen werden wird.
Die Aussagen die in den Eckigen Klammern stehen sind die Standartwerte, die verwendet werden sobald der User nur Enter drückt, ohne eine weitere Eingabe zu tätigen.

Die eingaben in dem Bild wird mit grüner Schrift dargestellt. Die Eingabe bedeutet in diesem Beispiel das die Json Datei save.json verwendet werden soll um die Polynome zu sichern und mit dem folgenden Y lädt das Programm die Polynome die in save.json hinterlegt sind.
In diesem Beispiel wäre es kein unterschied ob der User 2 mal einfach nur Enter gedrückt hatte oder eine vollstänge Eingabe getätigt hatte, da die Standart werde eingeben wurden.
Datei Laden und Sichern¶
Bei dem Laden von der Json Datei, wird überprüft ob die Datei vorliegt, falls nicht wird sie neu erzeugt und es wird ein Leeres Polynom Array zurückgeben. Falls die Datei exiestiert wird versucht den Inhalt, sobald einer vorhanden ist, als Polynom Array zu konvertieren.
Ein Json Beispiel für 5 Polynome.
[
{"polylist":[44.3,122345.0,-5.654,54.0,416.0,45.0]},
{"polylist":[5.0,-16.0,0.0,-9.0,10.0,4.0]},
{"polylist":[0.0,6.0,2.0]},
{"polylist":[0.0,6.0,2.0,3.0]},
{"polylist":[123.324,123.0,56.0,-5612.42332,654.234,5.0]}
]
Klassenbeschreibung¶
Polynomials Calculator¶
com.linuxluigi.polynomial¶
Main¶
-
public class
Main
¶ Main Klasse, die das Terminal und PolynomialList initialesiert, außerdem staratet es den Wizard Modus der den User fragt ob die Json Datei geladen werden soll und deren Pfad definiert. Anschließend wird das Usermenu gestartet welches in Endloschleife arbeitet bis der User das Programm über das Menu beendet.
Author: Steffen Exler
Polynomial¶
-
public class
Polynomial
¶ Eine Klasse welche einzelne Polynome enthält die ausgegeben werden können, in einzelnen Elemente INT oder als Array. Gespeichert oder geändert werden kann das Objekt auch als Array oder über einzelne Elemente INT. Um auf einzelne Elemente INT zu zu greifen / ändern ist es möglich diese via die Funktionen get / set und ein Variable INT möglich.
- 0 == x^0
- 1 == x^1
- 2 == x^2
- 3 == x^3
- 4 == x^4
- 5 == x^5
0 == Ergebnis, 1 == x^0, 7 == x^5
Author: Steffen Exler
Constructors¶
Methods¶
Derivation¶
get¶
-
public double[]
get
()¶ Gibt den Polynom als INT Array zurück
Rückgabe: Gibt komplettes Polynom zurück
get¶
-
public double
get
(int number)¶ Gibt ein Element des Polynomes zurück
Parameter: - number – Element nummer des Polynomes this.polylist[number]
Rückgabe: Wert des Polynom Element
get_as_human_readable¶
length¶
-
public int
length
()¶ Gibt die Länge des Polynomes zurück
Rückgabe: Int länge des Polynomes Array
PolynomialList¶
-
class
PolynomialList
¶ Ein Polynom Klasse Array welche mitunter folgende funktionen mitbringt:
- Einzelne Polynome aus den Polynom[] ausgeben
- Polynome miteinander multiplizieren, addieren und subtrahieren
- Einzelne Polynome löschen, bearbeiten oder neu hinzufügen
- Polynom[] bilden durch laden einer Json Datei
- Die eigene Klasse als Json Datei speichern
Constructors¶
Methods¶
add¶
-
public void
add
(Polynomial newPolynomial)¶ Hängt ein neues Polynomial an Polynomial[] an
Parameter: - newPolynomial – neues Polynomial welches angehängt werden soll
delte¶
-
void
delte
(int PolynomialNumber)¶ Löscht ein Element aus den Polynomial[]
Parameter: - PolynomialNumber – Element des Polynomial[] welches gelöscht werden soll
get_FileName¶
get_PolylList¶
-
Polynomial[]
get_PolylList
()¶ Gibt das Polynomial[] zurück
Rückgabe: Polynomial[]
get_Polynomial¶
-
Polynomial
get_Polynomial
(int PolynomialNumber)¶ Gibt ein einzelnes Polynomial aus dem Polynomial[] zurück
Parameter: - PolynomialNumber – Element des Polynomial[] welches zurück gegeben werden soll
Rückgabe: Polynomial Objekt
length¶
-
public int
length
()¶ Gibt die länge des Polynomial[] zurück
Rückgabe: Int länge des Polynomial[]
load¶
-
void
load
()¶ Ersetzt das vorhandene Polynomial[] mit der aus der this.file Json Datei angeben Werten Polynomial[]
mathAddSub¶
-
Polynomial
mathAddSub
(Polynomial Polynomial_1, Polynomial Polynomial_2, boolean operator)¶ Addiert oder Subtraiert 2 Polynome miteinander, gibt dieses als Polynomial Klasse zurück und fügt es in Polynomial[] hinzu
Parameter: - Polynomial_1 – Polynom 1 welche zu Polynom 2 addiert wird
- Polynomial_2 – Polynom 2 welche zu Polynom 1 addiert wird
- operator – 1 == +, 0 == -
Rückgabe: Neues Polynomial welches durch die Berechnung entstand
mathHorner¶
-
double
mathHorner
(Polynomial Polynomial, double divisor)¶ Polynomdivision nach dem Horner Schema, bei erfogreicher Division wird das neue Polynom Polynomial[] angehängt
Parameter: - Polynomial – Polynom welches dividiert werden soll
- divisor – Die Zahl mit der das Polynom dividiert werden soll
Rückgabe: Rest in Double
mathMultiply¶
-
Polynomial
mathMultiply
(Polynomial Polynomial_1, Polynomial Polynomial_2)¶ Multipliziert 2 Polynome miteinander und speichert das Polynom in PolylList
Parameter: - Polynomial_1 – Polynom 1 welches zu Polynom 2 multipliziert werden soll
- Polynomial_2 – Polynom 2 welches zu Polynom 1 multipliziert werden soll
Rückgabe: neues multipliziertes Polynom
randomPolynomial¶
-
Polynomial
randomPolynomial
(int length, boolean random)¶ Erstellt ein Polynomial mit der Länge length und wenn random wahr ist, mit festen Werten
Parameter: - length – länge des Beispiel Polynomes
- random – Polynom bekommt feste Werte zugewiesen mit [i] = i
Rückgabe: zufälliges neues Polynomial
randomPolynomialArray¶
-
Polynomial[]
randomPolynomialArray
(int arrayLength, int PolynomialLength, boolean random)¶ Erstellt ein Polynomial[] mit zufalls Zahlen und arrayLength länge, die länge der Polynome wird mit PolynomialLength bestimmt
Parameter: - arrayLength – Länge von Polynomial[]
- PolynomialLength – Länge des Polynomial
- random – Polynom bekommt feste Werte zugewiesen mit [i] = i
Rückgabe: zufälliges neues Polynomial[]
set¶
-
public void
set
(int ArrayNumber, Polynomial newPolynomial)¶ Überschreibt ein Polynomial aus Polynomial[] mit einen neuem Polynomial
Parameter: - ArrayNumber – Element nummer des zu überschreibenen Polynomial
- newPolynomial – Neues Polynomial welches das alte überschreiben soll
PolynomialListTest¶
-
public class
PolynomialListTest
¶ Created by Steffen Exler on 03.11.16.
Methods¶
add¶
-
public void
add
()¶ Erstellt ein PolynomialList Objekt und füllt es mit zufallswerten und überprüft ob die Ausgabe mit der Eingabe übereinstimmt, außerdem werden noch Vordefinierte double[] Werte als Polynom erstellt, PolynomialList angehängt und überprüft ob hier auch die Eingabe und Ausgabe übereinstimmt.
Wirft:
delte¶
mathAddSub¶
TerminalInterface¶
-
class
TerminalInterface
¶ User Terminal Interface Ausgabe Gibt ein Menu und sonstige nützliche Userinterface features aus Created by Steffen Exler on 18.10.16.
Methods¶
BoarderText¶
InputDouble¶
InputInt¶
InputString¶
-
String
InputString
(String TextError, String Default)¶ Ließt eine User Terminal eingabe und ueberprueft ob es sich um ein String handelt und gibt diesen zurück
Parameter: - TextError – Text der bei Falscher eingabe wiederholt wird
- Default – Return Wert wenn User keine eingabe tätigt
Rückgabe: User eingabe als String
Sonstiges¶
Lizenz¶
MIT License
Copyright (c) 2016 Steffen Exler
Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der zugehörigen Dokumentationen (die “Software”) erhält, die Erlaubnis erteilt, sie uneingeschränkt zu nutzen, inklusive und ohne Ausnahme mit dem Recht, sie zu verwenden, zu kopieren, zu verändern, zusammenzufügen, zu veröffentlichen, zu verbreiten, zu unterlizenzieren und/oder zu verkaufen, und Personen, denen diese Software überlassen wird, diese Rechte zu verschaffen, unter den folgenden Bedingungen:
Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien der Software beizulegen.
DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIEßLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.
Kontakt¶
Fragen? Kontaktieren sie Steffen.Exler@gmail.com
Dokumentation¶
- Die Dokumentation ist mit sphinx, javasphinx
- und Javadoc erstellt wordenden.
Gehostet wird die Dokumentation auf readthedocs.org welches durch ein Github hook mit jeden Push automatisch aktualisiert wird.
Dokumentation bearbeiten¶
Die Dokumentation Quelldaten befinden sich in den Ordner /docs/source und sind in reStructuredText Format geschrieben. Nach dem bearbeiten der Quelldaten müssen diese noch in HTML konvertiert werden, dieses wird über das Shell Script /docs/javasphinx.sh erledigt.
Dokumentation aktualisieren¶
Es wurde für Ubuntu 12.04, 14.04 und 16.04 mit Python 3 ein Shell Script zur automatischen konvertierung von Javadoc und reStructuredText Datein zur HTML integrierd, auf welches readthedocs.org zugreift sobald ein push auf Github gesendet wird.
Abhänigkeiten installieren¶
$ sudo apt-get build-dep python-lxml
$ sudo apt-get install texlive-full
Nur für Ubuntu 12.04 und 14.04
$ sudo apt-get install python-virtualenv
Für Ubuntu 16.04
$ sudo apt-get install python3-venv
Virtualenv anlegen und verwenden¶
wichtig >> folgene 2 Befehle im Wurzelverzeichnis des Projektes ausführen!
Virtualenv für Python 3 anlegen
$ virtualenv -p python3 env
In virtuelle Umgebung einloggen
$ source env/bin/activate
Python abhänigkeiten installieren¶
$ pip install -r docs/requirements.txt
Dokumentation erzeugen¶
Im Unterverzeichnis /docs wechseln und das Script javaspinx.sh ausführen
$ ./javasphinx.sh
Sobald das Script erfolgreich ausgeführt wurde sind in den Order /docs/build/ die Aktuelle Dokumentation in verschiedenen Formaten zu finden.
Dokumentation alternative Formate¶
Es ist über die Makefile in /docs wird die Dokumentation in mehreren Formaten ausgegeben:
- EPUB –> /docs/build/epub/PolynomialsCalculator.epub
- epub3 –> /docs/build/epub3/PolynomialsCalculator.epub
- latex –> /docs/build/latex/
- PDF –> /docs/build/latex/PolynomialsCalculator.pdf
- man –> /docs/build/man/polynomialscalculator.1
Hilfe¶
Wenn Sie hilfe brauchen email Steffen.Exler@gmail.com