Ergaenze UML-Diagramme fuer Gruppe D

main
Mirkan Guengoer 2026-06-13 22:26:37 +02:00
parent 6aaa409f49
commit c2bd6e1432
6 changed files with 171 additions and 12 deletions

View File

@ -3,7 +3,7 @@ title: "Pflichtenheft"
subtitle: "Desktop-Fakturierungsanwendung — Gruppe D: Programmoberfläche" subtitle: "Desktop-Fakturierungsanwendung — Gruppe D: Programmoberfläche"
author: author:
- Team 1 Gruppe D - Team 1 Gruppe D
version: "1.0" version: "1.1"
lang: de-DE lang: de-DE
toc: true toc: true
toc-depth: 3 toc-depth: 3
@ -14,7 +14,7 @@ fontsize: 12pt
linestretch: 1.5 linestretch: 1.5
mainfont: "Times New Roman" mainfont: "Times New Roman"
sansfont: "Arial" sansfont: "Arial"
monofont: "DejaVu Sans Mono" monofont: "Menlo"
header-includes: | header-includes: |
\usepackage{fancyhdr} \usepackage{fancyhdr}
\usepackage{lastpage} \usepackage{lastpage}
@ -22,7 +22,7 @@ header-includes: |
\fancyhf{} \fancyhf{}
\fancyhead[L]{Team 1 Gruppe D} \fancyhead[L]{Team 1 Gruppe D}
\fancyhead[C]{Pflichtenheft} \fancyhead[C]{Pflichtenheft}
\fancyhead[R]{Version 1.0} \fancyhead[R]{Version 1.1}
\fancyfoot[C]{\thepage\ /\ \pageref{LastPage}} \fancyfoot[C]{\thepage\ /\ \pageref{LastPage}}
\renewcommand{\headrulewidth}{0.4pt} \renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt}
@ -39,7 +39,7 @@ header-includes: |
+-----------------------------+-------------------------+-------------------------+ +-----------------------------+-------------------------+-------------------------+
| Gruppe D (Oberfläche) | Modulverantwortlicher | Modulverantwortlicher | | Gruppe D (Oberfläche) | Modulverantwortlicher | Modulverantwortlicher |
+-----------------------------+-------------------------+-------------------------+ +-----------------------------+-------------------------+-------------------------+
| 10.06.2026 | 10.06.2026 | 10.06.2026 | | 13.06.2026 | 13.06.2026 | 13.06.2026 |
+-----------------------------+-------------------------+-------------------------+ +-----------------------------+-------------------------+-------------------------+
**Freigabevermerk:** Dieses Dokument ist nach Prüfung und Freigabe durch den **Freigabevermerk:** Dieses Dokument ist nach Prüfung und Freigabe durch den
@ -51,6 +51,7 @@ und den Modultest der Komponente *Programmoberfläche*.
| Version | Datum | Autor | Grund der Änderung | | Version | Datum | Autor | Grund der Änderung |
|---------|------------|----------------------------------------------|---------------------| |---------|------------|----------------------------------------------|---------------------|
| 1.0 | 10.06.2026 | Mirkan Güngör, Moritz König, Mohammed Bouhki | Initiale Erstellung | | 1.0 | 10.06.2026 | Mirkan Güngör, Moritz König, Mohammed Bouhki | Initiale Erstellung |
| 1.1 | 13.06.2026 | Mirkan Güngör, Moritz König, Mohammed Bouhki | Einfügen der UML-Diagramme und Aktualisierung der Referenzen |
\newpage \newpage
@ -100,7 +101,7 @@ Kapitel 11.
### 1.5 Referenzen ### 1.5 Referenzen
- Lastenheft „Desktop-Fakturierungsanwendung", Team 1, Version 1.3, 09.06.2026 - Lastenheft „Desktop-Fakturierungsanwendung", Team 1, Version 1.3, 09.06.2026
- Project Charter, Team 1, Version 1.3, 14.05.2026 - Project Charter, Team 1, Version 1.3, 14.05.2026
- Pflichtenheft Gruppe A „Prozess / Dokumentenzyklus", Version 1.0, 09.06.2026 - Pflichtenheft Gruppe A „Prozess / Dokumentenzyklus", Version 1.1, 13.06.2026
- Pflichtenheft Gruppe B „Verwaltung von Produkten", Version 1.0, 10.06.2026 - Pflichtenheft Gruppe B „Verwaltung von Produkten", Version 1.0, 10.06.2026
- Pflichtenheft Gruppe C „Verwaltung von Kunden", Version 1.0, 10.06.2026 - Pflichtenheft Gruppe C „Verwaltung von Kunden", Version 1.0, 10.06.2026
- Vorlesungsunterlagen Software Engineering 1 (SoSe 2026), Foliensatz „Lasten- und Pflichtenheft" - Vorlesungsunterlagen Software Engineering 1 (SoSe 2026), Foliensatz „Lasten- und Pflichtenheft"
@ -333,10 +334,13 @@ auslösenden Aktionen an (F-07).
**Interne Schnittstellen (genutzte Dienste der anderen Komponenten), als Java-Interfaces **Interne Schnittstellen (genutzte Dienste der anderen Komponenten), als Java-Interfaces
skizziert:** skizziert:**
Hinweis: `PositionsEingabe` ist das UI-interne Modell der Gruppe D und wird im
Controller vor dem Aufruf der Gruppe-A-Schnittstelle in `Positionsangabe` umgewandelt.
```java ```java
// Gruppe A — Dokumentenzyklus (genutzt von F-06 bis F-15) // Gruppe A — Dokumentenzyklus (genutzt von F-06 bis F-15)
public interface DokumentService { public interface DokumentService {
Rechnung erstelleRechnung(String kundenNr, List<PositionsEingabe> positionen, Rechnung erstelleRechnung(String kundenNr, List<Positionsangabe> positionen,
LocalDate rechnungsdatum, LocalDate zahlungsziel); LocalDate rechnungsdatum, LocalDate zahlungsziel);
void storniere(String rechnungsnummer); void storniere(String rechnungsnummer);
List<Dokument> alleDokumente(); List<Dokument> alleDokumente();
@ -379,9 +383,7 @@ von GUI-Framework-Klassen und damit im Modultest ohne Oberfläche prüfbar.
### 7.1 Klassendiagramm ### 7.1 Klassendiagramm
<!-- TODO: UML-Klassendiagramm hier einfügen (Abbildung 1) --> ![UML-Klassendiagramm Programmoberfläche (Gruppe D)](diagramme/klassendiagramm_programmoberflaeche.png)
![Abbildung 1: UML-Klassendiagramm Programmoberfläche (Gruppe D)]
**Beschreibung zu Abbildung 1:** Das Klassendiagramm zeigt die View- und Controller-Schicht **Beschreibung zu Abbildung 1:** Das Klassendiagramm zeigt die View- und Controller-Schicht
der Oberfläche. Das `HauptFenster` (ein `JFrame`) verwaltet die Navigation (F-01, F-02): es der Oberfläche. Das `HauptFenster` (ein `JFrame`) verwaltet die Navigation (F-01, F-02): es
@ -398,9 +400,7 @@ einheitlich über die Klasse `Meldung` dargestellt (F-16, F-17).
### 7.2 Sequenzdiagramm ### 7.2 Sequenzdiagramm
<!-- TODO: UML-Sequenzdiagramm hier einfügen (Abbildung 2) --> ![UML-Sequenzdiagramm Rechnungserstellung (Gruppe D)](diagramme/sequenz_rechnungserstellung_wizard_gruppeD.png)
![Abbildung 2: UML-Sequenzdiagramm „Geführte Rechnungserstellung (Wizard)" (Gruppe D)]
**Beschreibung zu Abbildung 2:** Das Sequenzdiagramm stellt die Dialogfolge *geführte **Beschreibung zu Abbildung 2:** Das Sequenzdiagramm stellt die Dialogfolge *geführte
Rechnungserstellung* dar. Die Anwender:in startet den Wizard; der Rechnungserstellung* dar. Die Anwender:in startet den Wizard; der

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

View File

@ -0,0 +1,106 @@
@startuml
!pragma layout smetana
title UML-Klassendiagramm Programmoberflaeche (Gruppe D)
skinparam classAttributeIconSize 0
skinparam linetype ortho
package "gui" {
class HauptFenster {
- aktuellesModul : String
- wechsleZu(String)
}
interface ModulPanel {
+ aktualisiere()
+ hatUngespeicherteAenderungen() : boolean
}
class KundenPanel
class ProduktPanel
class DokumentListenPanel
class RechnungsWizardDialog
class StammdatenController {
+ kundenListe(String) : List<Kunde>
+ produkteListe(String) : List<Produkt>
}
class DokumentListenController {
+ gefiltert(DokumentStatus) : List<Dokument>
+ aktionenFuer(Dokument) : BelegAktionen
+ storniere(String, boolean) : Meldung
}
class RechnungsWizardController {
+ weiter() : boolean
+ zurueck()
+ erzeugeZusammenfassung() : String
+ speichern() : Meldung
}
class RechnungsWizardModel {
- aktuellerSchritt : WizardSchritt
- kundenNr : String
- positionen : List<PositionsEingabe>
- rechnungsdatum : LocalDate
- zahlungsziel : LocalDate
}
enum WizardSchritt {
KUNDE_WAEHLEN
POSITIONEN_ERFASSEN
DATEN_BESTAETIGEN
ZUSAMMENFASSUNG
SPEICHERN
}
class Meldung {
- typ : MeldungsTyp
- feldname : String
- text : String
}
class BelegAktionen
class PositionsEingabe
}
package "Schnittstellen Gruppen A-C" {
interface DokumentService
interface KundenService
interface ProduktService
}
package "gemeinsam" {
class EreignisBus
}
ModulPanel <|.. KundenPanel
ModulPanel <|.. ProduktPanel
ModulPanel <|.. DokumentListenPanel
HauptFenster *-- KundenPanel
HauptFenster *-- ProduktPanel
HauptFenster *-- DokumentListenPanel
KundenPanel --> StammdatenController
ProduktPanel --> StammdatenController
DokumentListenPanel --> DokumentListenController
RechnungsWizardDialog --> RechnungsWizardController
StammdatenController --> KundenService
StammdatenController --> ProduktService
DokumentListenController --> DokumentService
RechnungsWizardController --> DokumentService
RechnungsWizardController --> KundenService
RechnungsWizardController --> ProduktService
RechnungsWizardController *-- RechnungsWizardModel
RechnungsWizardModel --> WizardSchritt
RechnungsWizardModel *-- PositionsEingabe
RechnungsWizardController --> Meldung
DokumentListenController --> BelegAktionen
KundenPanel ..> EreignisBus : aktualisiert
ProduktPanel ..> EreignisBus : aktualisiert
DokumentListenPanel ..> EreignisBus : aktualisiert
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -0,0 +1,53 @@
@startuml
title UML-Sequenzdiagramm Gefuehrte Rechnungserstellung (Gruppe D)
autonumber
actor "Anwender:in" as Anw
boundary "RechnungsWizardDialog" as Dialog
control "RechnungsWizardController" as Controller
participant "KundenService\n(Gruppe C)" as Kunden
participant "ProduktService\n(Gruppe B)" as Produkte
participant "DokumentService\n(Gruppe A)" as Dokumente
Anw -> Dialog : Wizard starten
Dialog -> Controller : getModel()
Controller --> Dialog : aktuellerSchritt = KUNDE_WAEHLEN
Dialog --> Anw : Schritt 1: Kunde waehlen
Anw -> Dialog : Kunde suchen und auswaehlen
Dialog -> Kunden : suche(suchbegriff)
Kunden --> Dialog : List<Kunde>
Dialog -> Controller : weiter()
Controller --> Dialog : Schritt 2 anzeigen
Anw -> Dialog : Produktposition und Menge erfassen
Dialog -> Produkte : suche(suchbegriff)
Produkte --> Dialog : List<Produkt>
Dialog -> Controller : weiter()
alt Position fehlt oder Menge <= 0
Controller --> Dialog : Meldung mit Feldname
Dialog --> Anw : Feld markieren und Meldung anzeigen
else Eingabe vollstaendig
Controller --> Dialog : Schritt 3 anzeigen
end
Anw -> Dialog : Rechnungsdatum und Zahlungsziel bestaetigen
Dialog -> Controller : weiter()
Controller --> Dialog : Schritt 4 anzeigen
Dialog -> Controller : erzeugeZusammenfassung()
Controller -> Kunden : findeKunde(kundennummer)
Controller -> Produkte : findeProdukt(produktnummer)
Controller -> Dokumente : berechneSummen(positionen)
Dokumente --> Controller : Summen
Controller --> Dialog : Zusammenfassung
Dialog --> Anw : Zusammenfassung anzeigen
Anw -> Dialog : Speichern bestaetigen
Dialog -> Controller : speichern()
Controller -> Dokumente : erstelleRechnung(kundenNr, positionen,\nrechnungsdatum, zahlungsziel)
Dokumente --> Controller : Rechnung mit Rechnungsnummer
Controller --> Dialog : Erfolgsmeldung
Dialog --> Anw : Rechnungsnummer anzeigen
@enduml