Skip to content

Technik

JohnBryanSpieker edited this page Jun 21, 2020 · 17 revisions

In diesem Abschnitt wird die teschnische Umsetzung erläutert. Es wird zwischen Frontend(GUI) und Backend unterschieden. Auf beides wird nachstehend seperat eingegangen.

Frontend

Beim Frontend wurde sich für das Webframework Vaadin entschieden. Genutzt wurde die Version 14 die derzeit(11.4.20) die aktuellste Version ist.
Entschieden wurde sich für Vaadin, da es sich um ein freies Webframework handelt, welches untder der Apache-Lizen 2.0 läuft. Ein weitere entscheidender Punkt ist die persönliche Erfahrung welche ins Projekt mitgebracht worden ist. Vaadin zeichnet sich außerdem dadurch aus, dass der Quellcode komplett in Java geschrieben wird. Vaadin verwaltet die kompelierung zu HTML,CSS und Skript selber. Dies hat den großen Vorteil, dass das gesamte Projekt in Java geschrieben werden kann. Würde man sich beispielweise für das Webframework Angular entscheiden, so müsste man sowohl das CSS, HMTL und Skript seperat programmieren und wie in diesem Fall das Backend in Java.
Trotzdem wurden einige wenige Styleentscheidungen direkt in ein CSS festgelegt und importiert.

vaadin.png

Im Bild zu sehen ist eine Erstellung eines einfachen Button-Elements. Diesem wird ein Icon zugeordnet, welche Vaadin bereitstellt. Ebenfalls geben wir dem Button noch einen sogenannten "ClassName" was nichts anderes als ein CSS-Klassenname ist. Außderdem fügen wir dem Button noch eine Klick-Funktion hinzu. Es gibt auch die möglichkeit dem Button gewissen Styleanpassungen über Klassenmethoden zuzuordnen. Beispielsweise kann mit settingsBtn.setWidth("10px") dem Button eine Breite von 10 Pixeln zugeteilt werden

Backend

Als Backend wurde Spring Boot verwendet, welches ebendfalls auf Java basiert. Spring zeichnet sich dadurch aus, das es einen schnellen und einfachen Start ermöglicht. Ebenfalls ist es durch Spring einfacher einen Server mit einer Datebank lokal laufen zu lassen. Hierduch muss nicht extra noch eine Datenbank-Software auf dem Host laufen. Außerdem ermöglich es auch die Simple verwendung von Vaadin und benötigt auch hier kein seperaten Webapplikationsever.
Bei der Datenbankverwaltung wurde sich für eine File-Datenbank entschieden, weil bei einem Muliuser-Betrieb die Wahrscheinlichkeit das eine Memory-Datenbank ausreicht, sehr gering ist.

Seit Spring 4.3 ist es möglich eine Konstruktor-Injection durchzuführen. Dies ist jedoch nur möglich bei Klassen, in denen sich nur ein einziger Konsturkor befindet. Bei allen GUI-Views ist dies der Fall, daher befinden sich an den Variablen nicht die @Autowired-Anotation sondern der entsprechende Parameter im Konsturktor.

inject.png

Systemarchitektur

Bei der Systemarchitektur wurde sich am MVC-Model orientiert. Jede Maske besteht aus einer View welche ein zugeschnittenes ViewInterface beinhaltet. Die View hat einen zugeordneten Controller. Der Controller besitzt aber nicht den direkten Zugang zu Klasse sondern zu dem Interface, welches der View implementiert ist. Der Controller übernimmt die Logische abfolge von tätigkeiten die durchgeführt werden müssen, bei einer bestimmten Aktion (z.B. Schaltfläche wurde geklickt). Die View selber ist somit nur für die Darstellung von Daten zuständig. Ausnahmen sind jedoch die Forms, welche ebenfalls die Logik beinhalten. Diese sind aber überschaubar und beinhalten nur wenig Code (<160 lines). Die Models sind in diesem fall alle Entitäten die genutzt werden.

Quellen

https://reflectoring.io/constructor-injection/
https://de.wikipedia.org/wiki/Vaadin

Clone this wiki locally