Informatik im Grundkurs 11

OOA und OOP am Projekt Arztpraxis - Tipps zur OOP mit Java

Strukturierter Datentyp Array, Gui-Komponente Frame und Dialog

Für ein Implementation (also die OOP) sind noch einige Aspekte zu klären:

(1) Wie werden die Patienten verwaltet, um auf jeden von Ihnen (z. B. für den Wartezimmeraufruf, die Behandlungszimmer-Anzeige) zugreifen zu können?

Hierzu ist ein neuer, strukturierter Datentyp Array sehr hilfreich:
Statt meinPatient1, meinPatient2 wird patienten[1], patienten[2] verwendet, in der Klammer kann auch eine Variable, ein Attributwert stehen.
Dieses Array muss ein Praxisattribut sein:
private Patient[] patienten; // privates Attribut als Array mit Komponenten vom Typ Patient mit Name patienten
und wird im Praxis-Konstruktor erstellt:
this.patienten = new Patient[iMaxPatienten]; // als neues Array mit der in iMaxPatienten stehenden Komponentenanzahl
Auf Methoden dieser Arrayobjekte wird dann so zugegriffen:
meineInfo = meinePraxis.patienten[aktuelleNr].getPatientenInfo()

(2) Wie werden die verschiedenen Interfaces (GuiAnmeldung, GuiBehandlung, GuiWartezimmer) implementiert?

Das Projekt benötigt nicht nur ein Interface (Frame, Java-Gui-Datei), sondern zusätzliche Interfaces (Dialoge, Java-Gui-Dateien).
Der Hauptframe könnte/sollte GuiPraxis sein (bisher in der Analyse noch nicht vorhanden!). Von hier aus wird das Projekt gesteuert, stellt also im Modell eine (real nicht vorhandene) Meta-Ebene dar.
Die zusätzlichen Schnittstellen (Gui-Interfaces) werden als Dialoge realisiert mit den Abhängigkeiten (gemeint sind Objekte!): GuiPraxis kennt GuiAnmeldung, GuiWartezimmer, GuiBehandlungszimmer.
Das GuiPraxis-Attribut wird also angelegt:
private GuiAnmeldung anmeldung;
und im GuiPraxis-Konstruktor so erzeugt:
this.anmeldung = new GuiAnmeldung(this, "Patienten-Anmeldung",true);
// Hinweis zu den Parametern:
// Owner (this) ist also der Hauptframe, 2. Parameter ist Name/Titel,
// der Dialog ist modal (true), sperrt also solange Tätigkeiten im Hauptframe,
// bis der Dialog wieder geschlossen wurde; mehr in den JavaDocs!
Präziser: ... bis der Dialog wieder unsichtbar ist - er darf nicht zerstört werden!!!
Dies sollte durch eine dortige ButtonAction geschehen:
this.setVisible(false);
Danach geht die Kontrolle (genauer der Fokus) wieder auf den Hauptframe über.

(3) Wie und wo werden die Daten der Anmeldung abgelegt?

Da GuiAnmeldung nicht GuiPraxis oder Praxis kennt (s. o.), müssen die neuen Patientendaten in einem GuiAnmeldung-Attribut (z. B. neuerPatient vom Typ Patient) zwischengespeichert und anschließend z. B. von einer GuiPraxis-Methode aus dem GuiAnmelde-Attribut in das Praxis-Attribut patienten (s. o.) übertragen werden.
Das Zwischenspeichern sollte vor dem 'Schließen' des Dialogs durch eine dortige ButtonAction geschehen:
this.neuerPatient = new Patient ( this.tf_vorname.getText(), this.tf_nachname.getText(), 19880101, false);
Hier wird ein spezieller Patientenkonstruktor eingesetzt, der nur die Benutzereingaben einträgt (keine Nr oder Zeit!). Das Umspeichern in meinePraxis.patienten geschieht dann in einer Praxis-Methode, die dieses temporäre Patientenobjekt übergeben bekommt, um Nr und Zeit anreichert und in this.patienten[] speichert.

(4) Wie kann man Daten dauerhaft ablegen, um sie beim späteren Programmstart wieder verfügbar zu haben?

Wir werden dies zum Anlass nehmen, die Datenspeicherung in einfachen Textdateien zu thematisieren und zu praktizieren.