Files
nhplus_base/documentation/architektur_von_nh-plus_analysieren.md

50 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NH PLUS
1. Studiere das Klassendiagramm „Umsetzung des DAO-Pattern in NHPlus.jpg“ sowie die verlinkten Informationsblätter und beantworte in deiner Gruppe folgende Fragen:
![alt text](./src/Umsetzung%20des%20DAO-Pattern%20in%20NHPlus.jpg)
a. Erläutere das Zusammenspiel von DAOImp, PatientDAO und der Datenbanktabelle Patient, wenn die im Interface DAO definierte Methode void create(T t) throws SQLException aufgerufen wird, um einen neuen Patienten anzulegen.
ein Patient wird angelegt und die DAO schiebt die in die DB
b. Stelle dir vor, du sollst die Anwendung um ein Modul erweitern, das Pflegekräfte verwaltet. Innerhalb dieses Modus können Pflegekräfte angezeigt, angelegt, geändert und gelöscht werden. Was müsstest du dafür in dieser Architektur tun? Welchen Vorteil bietet diese Architektur im Vergleich zu einer Architektur, in der es zu jeder Modellklasse eine konkrete DAO-Klasse gibt, also das DAO-Interface und die abstrakte Klasse DAOImp nicht existierten? Gehe bei deiner Antwort auch darauf ein, weswegen eine generische Klasse (<T>) verwendet wurde.
PersonalDAO implements DAOimp<T> erstellen, Personal DB erstellen
c. Welche Aufgabe hat die Klasse ConnectionBuilder bzw. warum hält PatientDAO keine Datenbankverbindung?
Der ConnectionBuilder hat die Aufgabe eine Verbindung mit der DB aufzubauen sowie sie zu schließen und wenn es fehler gibt bei dem aufbau der Verbindung wirft es eine ´SQLException´
d. Welche Aufgabe hat die Klasse DAOFactory?
Die DAOFactory Klasse stellt sicher, dass nur eine Instanz von ihr existiert und diese auch immer zurückgegeben wird, zudem verhindert diese, dass Objekte von außen erstellt werden und erzeugt Data Access Objects für den Zugriff auf die DB.
e. Warum sind DAOFactory und ConnectionBuilder als Singleton implementiert?
Um sicherzustellen, dass nur eine Instanz der Klasse erstellt wird.
2. Erläutere das Zusammenspiel dieses Feldes in der AllPatientView.fxml: <TextField fx:id="textFieldSurname" minWidth="200.0" prefHeight="26.0" prefWidth="200.0" promptText="Nachname" GridPane.columnIndex="1" />
mit dieser Zeile im PatientController:
@FXML private TextField textFieldSurname;
a. AllPatientView.fxml ist das Frontend der Patienten Übersicht und dort gibt es das Textfeld: “textFieldSurname”, welches über den PatientController aufgerufen wird. Der PatientController kann dann auch auf den eingegebenen Text zugreifen und diesen somit auch in der Datenbank abspeichern.
3. Erläutere präzise, wie das Befüllen und Auslesen der Combobox in der AllTreatmentView.fxml funktioniert.
a. Zum Anzeigen wird die Methode “readAllAndShowInTableView” aufgerufen, welche sich mit der DAO alle Daten holt und einfach in die ComboBox setzt, die vorher geleert wurde.
b. Zum Auslesen der Auswahl wird “handleComboBox” aufgerufen, welches schlichtweg den ausgewählten Patienten sammelt und alle zur Behandlung abspeichert.
c. Zusätzlich gibt es noch die Methode “searchInList”, diese sorgt dafür, dass die Nachnamen der Patienten in der comboBox angezeigt werden und auswählbar sind.
4. Erkläre das Zusammenspiel der Klassen Patient, AllPatientController und AllPatientView.fxml im verwendeten MVP-Pattern im folgenden Anwendungsfall: Der Benutzer gibt im Bereich unter der Ansicht aller Patienten vollständig die Daten eines neuen Patienten ein und drückt den Button Hinzufügen. Erläutere, was genau in der View, im Modell und im Presenter nacheinander abläuft. Der Ablauf zum Speichern des neuen Patienten muss nicht beschrieben werden (siehe Aufgabe 1b). Worin liegt der Unterschied?
Patient ist so gesehen eine Entität/Objekt und hat somit einige Pre-Defined Attribute, welche wir im AllPatientController abrufen können. Die AllPatientView.fxml ist das Frontend und auch die Eingabe für die Erstellung eines neuen Patients. Die eingegebenen Werte gehen dann an den Controller im Backend und der Controller macht in diesem Fall einen neuen Patient, da er auch weiß was ein Patient beinhaltet.
Patient <-- AllPatientController <-- AllPatientView.fxml