Text: Added UML diagram, rewrote sections

This commit is contained in:
joss 2025-06-21 13:07:31 +02:00
parent a898582c41
commit 0e95431d70
3 changed files with 46 additions and 46 deletions

View file

@ -42,58 +42,22 @@ Ein weiterer Zentraler Punkt der Arbeit ist der Algorithmus zur Ressourcenvertei
.NH 2
Architektur
.LP
Die vorliegende Software ist in Java geschrieben und arbeitet stark mit Objektorientierung.
Auf externe Abhängigkeiten außerhalb des JDKs wurde der Einfachheit halber verzichtet.
.LP
Der gesamte Code der Anwendung befindet sich im Paket \fChsmw.jotto5.beleg\fR.
Direkt in diesem Paket befindet sich die Main-Klasse mit dem Einstiegspunkt.
Darunter befindet sich das Paket \fCviews\fR, in dem die Klassen für die einzelnen Views liegen, und das Paket \fCdata\fR, in dem alle Klassen implementiert sind die sich mit Datenverwaltung und Abfrage beschäftigen, zum Beispiel das Model.
.NH 3
Datenverwaltung
.LP
Die zentrale Klasse der Datenverwaltung ist die abstrakte Klasse \fCDataObject\fR.
Sie stellt die Superklasse für alle im Model verwalteten Objekte dar.
Ihre Implementation ist bewusst sehr einfach gehalten.
.TS
box center;
cb
-
l
l
-
l.
DataObject
+ displayName: String
+ uid: String
# DataObject(String uid, String displayName)
.TE
.PS
.so uml.pic
.PE
.LP
Die UID ist ein String, welcher eine eineindeutige Zeichenkette für das Objekt enthält.
Strukturiert werden kann sie als Hierarchie mit / als Trennzeichen, zum Beispiel \fCstudents/jotto5\fR.
Das ist nicht benötigt, aber einige Views verwenden diese Syntax für eine etwas bessere Übersicht.
Der DisplayName ist ein frei wählbarer String welcher einen menschenlesbare Namen für das Objekt enthält, im Fall einer Studierenden Person zum Beispiel eine Zeichenkette im Format \fCVorname, Nachname\fR.
.LP
Die Klasse enthält einen Konstruktor der die UID und den Anzeigenamen initialisiert.
Dieser ist bewusst protected gehalten, da die DataObject-Klasse abstrakt ist und nur als Superklasse dient.
Setter und Getter sind nicht vorgesehen, da die Felder public sein müssen.
.TODO Referenz auf Formular-Annotation-System!\"
.LP
Von dem DataObject erben nun mehrere Klassen, welche spezifischere Felder und Methoden beinhalten können, zum Beispiel die Klasse \fCStudent\fR oder die Klasse \fCGroup\fR.
Das hat den Vorteil dass das Model selber sich nur um die Verwaltung einer Liste von DataObjects kümmern muss ohne die genaue Semantik zu kennen oder eine Trennung zwischen verschiedenen Typen machen zu müssen.
Für das Verwenden der Objekte werden dann Javas Möglichkeiten der Reflexion bzw. Introspektion benutzt.
.LP
.TODO Mehr Informationen zum Model!\"
Das Model ist nun für die Verwaltung der DataObjects zuständig.
Es befindet sich in der Klasse \fChsmw.jotto5.beleg.data.Model\fR und ist als Interface konzipiert.
Dadurch ist das eigentliche Speichern der Daten unabhängig vom Rest des Codes, was zum Beispiel Anbindungen an Verzeichnisdienste oder relationale Datenbanken vereinfacht.
.TODO Klassendiagramm Model
.NH 3
Beabeiten von DataObjects
.LP
Ein Bearbeiten der gespeicherten Daten soll für Endbenutzer*innen auch möglich sein. Dafür ist ein Formular unter dem Endpunkt \fC/object/<uid>\fR vorgesehen, mit \fC<uid>\fR als UID des Objektes. Um ein manuelles Anpassen des Formulars an alle möglichen Kindklassen von DataObject wurde dafür auf Reflexion zurückgegriffen. Für eine Filterung der Felder der Objekte nach sichtbar und bearbeitbar wird die Annotation \fCDataObject.WebField\fR verwendet. Sie besitzt als Attribute den String \fCdisplayAs\fR welcher angibt wie das Feld im Formular benannt werden soll.
.TODO Eventuelle weitere Attribute WebField\"
.LP
Beim Aufruf des Endpunktes wird aus dem Model das Objekt mit der entsprechenden UID abgerufen. Mithilfe der \fCgetFields()\fR-Methode der Klasse \fCjava.lang.reflect.Class\fR wird eine Liste aller Felder des Objektes abgerufen, und dann danach gefiltert welche Felder die entsprechende Annotation besitzen.
Das vorliegende vereinfachte\**
.FS
\**eine genauere Beschreibung der Klassen befindet sich im Anhang.
.FE
UML Klassendiagramm beschreibt die Struktur der Datenverwaltung.
Dabei ist das DataObject die Basisklasse aller verwalteten Objekte.
.NH 3
Der Webserver und die Views
.LP

View file

@ -1,7 +1,7 @@
.HSMW
.ds title Entwicklung einer Studierendenverwaltungssoftware\"
.COVER "BELEGARBEIT" "Frau" "Jocelyn Rose Otto" "\*[title]" "2025"
.bp
.bp 0
.TITLE "Fakultät \fBAngewandte Computer- und Biowissenschaften\fR" "BELEGARBEIT" "\*[title]"
.TITLEITEM "Autorin:" "\fB\Jocelyn Rose Otto\fR"
.TITLEITEM "Seminargruppe:" "IF24wS2-B"

36
text/uml.pic Normal file
View file

@ -0,0 +1,36 @@
arrowhead = 0;
arrowwid = 0.1;
arrowht = 0.1;
down;
Model: box "\fBModel\fR" width 1.1;
{
move right 1.6 up 0;
box "<<interface>>" "\fBModel\fR" width 1.1;
arrow from Model.e to last box.w dashed;
}
line;
DataObject: box "\f(BIDataObject\fR" width 1.3;
move 0.75;
move left 1.75;
right;
Person: box "\fBPerson\fR" width 1.1;
{
move down 1 left 1.7;
right;
Student: box "\fBStudent\fR" width 1.1; move 0.1;
Lecturer: box "\fBLecturer\fR" width 1.1;
arrow from Student.n up 0.25 then right 0.6 then up 0.25;
line from Lecturer.n up 0.25 then left 0.6;
}
move 0.1;
Room: box "\fBRoom\fR" width 1.1; move 0.1;
Group: box "\fBGroup\fR" width 1.1;
{
move down 1 left 1.1;
right;
Module: box "\fBModule\fR" width 1.1;
arrow from Module.n to Group.s;
}
line from Group.n up 0.25 then left 1.2;
arrow from Room.n to DataObject.s;
line from Person.n up 0.25 then right 1.2;