05_Exception

1. Fitnessstudio

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      TrainingException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + TrainingException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃           Training           ┃━━━━━━┃              Fitnessstudio             ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - dauer: int                 ┃      ┃ - name: String                         ┃
┃ - bezeichnung: String        ┃      ┃ - trainings: ArrayList<Training>       ┃
┃ - trainer: String            ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Fitnessstudio(name: String)          ┃
┃ + Training(...)              ┃      ┃ + getTraining(index): Training         ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenGesamt(): float      ┃      ┃ + entfernen(...): boolean              ┃
┃ + kostenProEinheit(): double ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       PersonalTraining       ┃  ┃       GruppenTraining        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - preisProEinheit: float     ┃  ┃ - gesamtPreis: float         ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + PersonalTraining(...)      ┃  ┃ + GruppenTraining(...)       ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine TrainingException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Fitnessstudio

Fitnessstudio(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Training>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getTraining(index: int): Training
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(training: Training): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(training: Training): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(trainer: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Liefert die Anzahl jener GruppenTraining-Objekte, deren gesamtPreis unter maxPreisGesamt liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


2. Sprachschule

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      SprachKursException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + SprachKursException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          SprachKurs          ┃━━━━━━┃              Sprachschule              ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - sprache: String            ┃      ┃ - kurse: ArrayList<SprachKurs>         ┃
┃ - lehrkraft: String          ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Sprachschule(name: String)           ┃
┃ + SprachKurs(...)            ┃      ┃ + getKurs(index): SprachKurs           ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProStunde(): double   ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          EinzelKurs          ┃  ┃         IntensivKurs         ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stundenPreis: float        ┃  ┃ - paketPreis: float          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + EinzelKurs(...)            ┃  ┃ + IntensivKurs(...)          ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine SprachKursException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Sprachschule

Sprachschule(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<SprachKurs>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getKurs(index: int): SprachKurs
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(kurs: SprachKurs): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(kurs: SprachKurs): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(lehrkraft: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt alle IntensivKurs-Objekte, deren paketPreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


3. Hotel

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       BuchungException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + BuchungException(meldung)  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃           Buchung            ┃━━━━━━┃                 Hotel                  ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - naechte: int               ┃      ┃ - name: String                         ┃
┃ - gast: String               ┃      ┃ - buchungen: ArrayList<Buchung>        ┃
┃ - zimmer: String             ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Hotel(name: String)                  ┃
┃ + Buchung(...)               ┃      ┃ + getBuchung(index): Buchung           ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProNacht(): double    ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       StandardBuchung        ┃  ┃       PauschalBuchung        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - nachtPreis: float          ┃  ┃ - paketPreis: float          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + StandardBuchung(...)       ┃  ┃ + PauschalBuchung(...)       ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine BuchungException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Hotel

Hotel(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Buchung>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getBuchung(index: int): Buchung
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(buchung: Buchung): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(buchung: Buchung): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(gast: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
— Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


4. Autovermietung

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃        MieteException        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + MieteException(meldung)    ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃            Miete             ┃━━━━━━┃             Autovermietung             ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - tage: int                  ┃      ┃ - name: String                         ┃
┃ - fahrzeug: String           ┃      ┃ - mieten: ArrayList<Miete>             ┃
┃ - kunde: String              ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Autovermietung(name: String)         ┃
┃ + Miete(...)                 ┃      ┃ + getMiete(index): Miete               ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProTag(): double      ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          TagesMiete          ┃  ┃        PauschalMiete         ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - tagesPreis: float          ┃  ┃ - pauschale: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + TagesMiete(...)            ┃  ┃ + PauschalMiete(...)         ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine MieteException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Autovermietung

Autovermietung(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Miete>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getMiete(index: int): Miete
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(miete: Miete): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(miete: Miete): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(kunde: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
— Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


5. Musikschule

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       MusikUnterrichtException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + MusikUnterrichtException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       MusikUnterricht        ┃━━━━━━┃              Musikschule               ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einheiten: int             ┃      ┃ - name: String                         ┃
┃ - instrument: String         ┃      ┃ - unterrichte:                         ┃
┃ - lehrkraft: String          ┃      ┃   ArrayList<MusikUnterricht>           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + MusikUnterricht(...)       ┃      ┃ + Musikschule(name: String)            ┃
┃ + get-/set-Methoden          ┃      ┃ + getUnterricht(index):                ┃
┃ + preisGesamt(): float       ┃      ┃   MusikUnterricht                      ┃
┃ + preisProEinheit(): double  ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + toString(): String         ┃      ┃ + entfernen(...): boolean              ┃
┃ + weitere laut Angabe        ┃      ┃ + entfernen(...): int                  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┃ + anzahlPreisGesamt(...): int          ┃
               ┃                      ┃ + toString(): String                   ┃
            ┏━━^━━━━━━━━━━━━━━━━┓     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      EinzelUnterricht       ┃  ┃      GruppenUnterricht       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einzelPreis: float         ┃  ┃ - kursPreis: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + EinzelUnterricht(...)      ┃  ┃ + GruppenUnterricht(...)     ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine MusikUnterrichtException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Musikschule

Musikschule(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<MusikUnterricht>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getUnterricht(index: int): MusikUnterricht
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(unterricht: MusikUnterricht): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(unterricht: MusikUnterricht): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(lehrkraft: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


6. Nachhilfeinstitut

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       NachhilfeException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + NachhilfeException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          Nachhilfe           ┃━━━━━━┃            Nachhilfeinstitut           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - fach: String               ┃      ┃ - nachhilfen: ArrayList<Nachhilfe>     ┃
┃ - lehrer: String             ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Nachhilfeinstitut(name: String)      ┃
┃ + Nachhilfe(...)             ┃      ┃ + getNachhilfe(index): Nachhilfe       ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenGesamt(): float      ┃      ┃ + entfernen(...): boolean              ┃
┃ + kostenProStunde(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       EinzelNachhilfe       ┃  ┃      GruppenNachhilfe       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - preis: float               ┃  ┃ - gesamt: float             ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + EinzelNachhilfe(...)       ┃  ┃ + GruppenNachhilfe(...)      ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine NachhilfeException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Nachhilfeinstitut

Nachhilfeinstitut(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Nachhilfe>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getNachhilfe(index: int): Nachhilfe
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(nachhilfe: Nachhilfe): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(nachhilfe: Nachhilfe): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(lehrer: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


7. Parkplatz

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       ParkVorgangException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + ParkVorgangException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃         ParkVorgang          ┃━━━━━━┃               Parkplatz                ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - kennzeichen: String        ┃      ┃ - vorgaenge: ArrayList<ParkVorgang>    ┃
┃ - parkplatz: String          ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Parkplatz(name: String)              ┃
┃ + ParkVorgang(...)           ┃      ┃ + getVorgang(index): ParkVorgang       ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + gebuehrGesamt(): float     ┃      ┃ + entfernen(...): boolean              ┃
┃ + gebuehrProStunde(): double ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          KurzParker          ┃  ┃         TagesParker          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - tarif: float               ┃  ┃ - pauschale: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + KurzParker(...)            ┃  ┃ + TagesParker(...)           ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + gebuehrGesamt(): float     ┃  ┃ + gebuehrGesamt(): float     ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine ParkVorgangException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Parkplatz

Parkplatz(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<ParkVorgang>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getVorgang(index: int): ParkVorgang
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(vorgang: ParkVorgang): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(vorgang: ParkVorgang): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(kennzeichen: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


8. Fahrradverleih

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      FahrradMieteException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + FahrradMieteException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃        FahrradMiete          ┃━━━━━━┃             Fahrradverleih             ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - fahrrad: String            ┃      ┃ - mieten: ArrayList<FahrradMiete>      ┃
┃ - kunde: String              ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Fahrradverleih(name: String)         ┃
┃ + FahrradMiete(...)          ┃      ┃ + getMiete(index): FahrradMiete        ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProStunde(): double   ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃        StundenMiete          ┃  ┃          PaketMiete          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - preis: float               ┃  ┃ - paket: float               ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + StundenMiete(...)          ┃  ┃ + PaketMiete(...)            ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine FahrradMieteException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Fahrradverleih

Fahrradverleih(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<FahrradMiete>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getMiete(index: int): FahrradMiete
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(miete: FahrradMiete): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(miete: FahrradMiete): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(kunde: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


9. Kino

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       VorstellungException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + VorstellungException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃         Vorstellung          ┃━━━━━━┃                  Kino                  ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - tickets: int               ┃      ┃ - name: String                         ┃
┃ - film: String               ┃      ┃ - vorstellungen:                       ┃
┃ - saal: String               ┃      ┃   ArrayList<Vorstellung>               ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + Vorstellung(...)           ┃      ┃ + Kino(name: String)                   ┃
┃ + get-/set-Methoden          ┃      ┃ + getVorstellung(index): Vorstellung   ┃
┃ + preisGesamt(): float       ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisProTicket(): double   ┃      ┃ + entfernen(...): boolean              ┃
┃ + toString(): String         ┃      ┃ + entfernen(...): int                  ┃
┃ + weitere laut Angabe        ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┃ + toString(): String                   ┃
               ┃                      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      NormalVorstellung      ┃  ┃      SonderVorstellung      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - ticketPreis: float         ┃  ┃ - gruppenPreis: float        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + NormalVorstellung(...)     ┃  ┃ + SonderVorstellung(...)     ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine VorstellungException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Kino

Kino(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Vorstellung>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getVorstellung(index: int): Vorstellung
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(vorstellung: Vorstellung): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(vorstellung: Vorstellung): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(film: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


10. Museum

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      FuehrungException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + FuehrungException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          Fuehrung            ┃━━━━━━┃                Museum                  ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - teilnehmer: int            ┃      ┃ - name: String                         ┃
┃ - thema: String              ┃      ┃ - fuehrungen: ArrayList<Fuehrung>      ┃
┃ - guide: String              ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Museum(name: String)                 ┃
┃ + Fuehrung(...)              ┃      ┃ + getFuehrung(index): Fuehrung         ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProPerson(): double   ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       PersonenFuehrung       ┃  ┃       PrivatFuehrung        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - preis: float               ┃  ┃ - pauschale: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + PersonenFuehrung(...)      ┃  ┃ + PrivatFuehrung(...)        ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine FuehrungException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Museum

Museum(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Fuehrung>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getFuehrung(index: int): Fuehrung
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(fuehrung: Fuehrung): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(fuehrung: Fuehrung): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(guide: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


11. Schwimmschule

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       SchwimmKursException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + SchwimmKursException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃         SchwimmKurs          ┃━━━━━━┃             Schwimmschule              ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einheiten: int             ┃      ┃ - name: String                         ┃
┃ - niveau: String             ┃      ┃ - kurse: ArrayList<SchwimmKurs>        ┃
┃ - trainer: String            ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Schwimmschule(name: String)          ┃
┃ + SchwimmKurs(...)           ┃      ┃ + getKurs(index): SchwimmKurs          ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProEinheit(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃     EinzelSchwimmkurs       ┃  ┃     GruppenSchwimmkurs      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einzelPreis: float         ┃  ┃ - kursPreis: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + EinzelSchwimmkurs(...)     ┃  ┃ + GruppenSchwimmkurs(...)    ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine SchwimmKursException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Schwimmschule

Schwimmschule(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<SchwimmKurs>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getKurs(index: int): SchwimmKurs
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(kurs: SchwimmKurs): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(kurs: SchwimmKurs): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(trainer: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


12. Skischule

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       SkiKursException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + SkiKursException(meldung)  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃           SkiKurs            ┃━━━━━━┃               Skischule                ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - niveau: String             ┃      ┃ - kurse: ArrayList<SkiKurs>            ┃
┃ - skiLehrer: String          ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Skischule(name: String)              ┃
┃ + SkiKurs(...)               ┃      ┃ + getKurs(index): SkiKurs              ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenGesamt(): float      ┃      ┃ + entfernen(...): boolean              ┃
┃ + kostenProStunde(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       PrivatSkiKurs         ┃  ┃       GruppenSkiKurs        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stundenPreis: float        ┃  ┃ - kursPreis: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + PrivatSkiKurs(...)         ┃  ┃ + GruppenSkiKurs(...)        ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine SkiKursException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Skischule

Skischule(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<SkiKurs>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getKurs(index: int): SkiKurs
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(kurs: SkiKurs): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(kurs: SkiKurs): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(skiLehrer: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


13. Fotostudio

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      ShootingException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + ShootingException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃           Shooting           ┃━━━━━━┃              Fotostudio                ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - kunde: String              ┃      ┃ - shootings: ArrayList<Shooting>       ┃
┃ - fotograf: String           ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Fotostudio(name: String)             ┃
┃ + Shooting(...)              ┃      ┃ + getShooting(index): Shooting         ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenGesamt(): float      ┃      ┃ + entfernen(...): boolean              ┃
┃ + kostenProStunde(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       StundenShooting       ┃  ┃        PaketShooting        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stundenPreis: float        ┃  ┃ - paketPreis: float          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + StundenShooting(...)       ┃  ┃ + PaketShooting(...)         ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine ShootingException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Fotostudio

Fotostudio(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Shooting>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getShooting(index: int): Shooting
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(shooting: Shooting): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(shooting: Shooting): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(fotograf: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


14. Reinigungsfirma

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       ReinigungException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + ReinigungException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          Reinigung           ┃━━━━━━┃            Reinigungsfirma             ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - objekt: String             ┃      ┃ - reinigungen: ArrayList<Reinigung>    ┃
┃ - firma: String              ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Reinigungsfirma(name: String)        ┃
┃ + Reinigung(...)             ┃      ┃ + getReinigung(index): Reinigung       ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenGesamt(): float      ┃      ┃ + entfernen(...): boolean              ┃
┃ + kostenProStunde(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      StundenReinigung       ┃  ┃      PauschalReinigung      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stundenSatz: float         ┃  ┃ - pauschale: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + StundenReinigung(...)      ┃  ┃ + PauschalReinigung(...)     ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine ReinigungException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Reinigungsfirma

Reinigungsfirma(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Reinigung>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getReinigung(index: int): Reinigung
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(reinigung: Reinigung): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(reinigung: Reinigung): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(firma: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


15. Lieferdienst

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       LieferungException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + LieferungException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          Lieferung           ┃━━━━━━┃              Lieferdienst              ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - kilometer: int             ┃      ┃ - name: String                         ┃
┃ - ziel: String               ┃      ┃ - lieferungen: ArrayList<Lieferung>    ┃
┃ - fahrer: String             ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Lieferdienst(name: String)           ┃
┃ + Lieferung(...)             ┃      ┃ + getLieferung(index): Lieferung       ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenGesamt(): float      ┃      ┃ + entfernen(...): boolean              ┃
┃ + kostenProKilometer():      ┃      ┃ + entfernen(...): int                  ┃
┃   double                     ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + toString(): String         ┃      ┃ + toString(): String                   ┃
┃ + weitere laut Angabe        ┃      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃     KilometerLieferung      ┃  ┃      PauschalLieferung      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - kilometerPreis: float      ┃  ┃ - pauschalPreis: float       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + KilometerLieferung(...)    ┃  ┃ + PauschalLieferung(...)     ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine LieferungException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Lieferdienst

Lieferdienst(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Lieferung>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getLieferung(index: int): Lieferung
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(lieferung: Lieferung): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(lieferung: Lieferung): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(fahrer: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


16. Taxiunternehmen

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃        FahrtException        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + FahrtException(meldung)    ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃            Fahrt             ┃━━━━━━┃            Taxiunternehmen             ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - kilometer: int             ┃      ┃ - name: String                         ┃
┃ - start: String              ┃      ┃ - fahrten: ArrayList<Fahrt>            ┃
┃ - ziel: String               ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Taxiunternehmen(name: String)        ┃
┃ + Fahrt(...)                 ┃      ┃ + getFahrt(index): Fahrt               ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProKilometer():       ┃      ┃ + entfernen(...): int                  ┃
┃   double                     ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + toString(): String         ┃      ┃ + toString(): String                   ┃
┃ + weitere laut Angabe        ┃      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          TaxiFahrt           ┃  ┃        FixpreisFahrt         ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - kilometerPreis: float      ┃  ┃ - fixPreis: float            ┃
┃ - grundGebuehr: float        ┃  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┃ + FixpreisFahrt(...)         ┃
┃ + TaxiFahrt(...)             ┃  ┃ + get-/set-Methoden          ┃
┃ + get-/set-Methoden          ┃  ┃ + preisGesamt(): float       ┃
┃ + preisGesamt(): float       ┃  ┃ + toString(): String         ┃
┃ + toString(): String         ┃  ┃ + weitere laut Angabe        ┃
┃ + weitere laut Angabe        ┃  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine FahrtException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Taxiunternehmen

Taxiunternehmen(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Fahrt>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getFahrt(index: int): Fahrt
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(fahrt: Fahrt): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(fahrt: Fahrt): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(ziel: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


17. Paketdienst

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       VersandException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + VersandException(meldung)  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃           Versand            ┃━━━━━━┃              Paketdienst               ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - gewicht: int               ┃      ┃ - name: String                         ┃
┃ - empfaenger: String         ┃      ┃ - versand: ArrayList<Versand>          ┃
┃ - land: String               ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Paketdienst(name: String)            ┃
┃ + Versand(...)               ┃      ┃ + getVersand(index): Versand           ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenGesamt(): float      ┃      ┃ + entfernen(...): boolean              ┃
┃ + kostenProKg(): double      ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       GewichtsVersand       ┃  ┃       PauschalVersand       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - preisProKg: float          ┃  ┃ - pauschale: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + GewichtsVersand(...)       ┃  ┃ + PauschalVersand(...)       ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine VersandException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Paketdienst

Paketdienst(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Versand>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getVersand(index: int): Versand
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(versand: Versand): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(versand: Versand): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(empfaenger: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


18. Campingplatz

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      AufenthaltException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + AufenthaltException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          Aufenthalt          ┃━━━━━━┃             Campingplatz               ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - naechte: int               ┃      ┃ - name: String                         ┃
┃ - gast: String               ┃      ┃ - aufenthalte: ArrayList<Aufenthalt>   ┃
┃ - platz: String              ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Campingplatz(name: String)           ┃
┃ + Aufenthalt(...)            ┃      ┃ + getAufenthalt(index): Aufenthalt     ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProNacht(): double    ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       ZeltAufenthalt        ┃  ┃     WohnmobilAufenthalt     ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - nachtPreis: float          ┃  ┃ - paketPreis: float          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + ZeltAufenthalt(...)        ┃  ┃ + WohnmobilAufenthalt(...)   ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine AufenthaltException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Campingplatz

Campingplatz(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Aufenthalt>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getAufenthalt(index: int): Aufenthalt
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(aufenthalt: Aufenthalt): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(aufenthalt: Aufenthalt): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(gast: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


19. Hundeschule

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       HundeTrainingException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + HundeTrainingException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃        HundeTraining         ┃━━━━━━┃              Hundeschule               ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einheiten: int             ┃      ┃ - name: String                         ┃
┃ - hund: String               ┃      ┃ - trainings: ArrayList<HundeTraining>  ┃
┃ - trainer: String            ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Hundeschule(name: String)            ┃
┃ + HundeTraining(...)         ┃      ┃ + getTraining(index): HundeTraining    ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProEinheit(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       EinzelTraining        ┃  ┃       GruppenTraining       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einzelPreis: float         ┃  ┃ - kursPreis: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + EinzelTraining(...)        ┃  ┃ + GruppenTraining(...)       ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine HundeTrainingException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Hundeschule

Hundeschule(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<HundeTraining>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getTraining(index: int): HundeTraining
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(training: HundeTraining): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(training: HundeTraining): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(trainer: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


20. Reitschule

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      ReitKursException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + ReitKursException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          ReitKurs            ┃━━━━━━┃              Reitschule                ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einheiten: int             ┃      ┃ - name: String                         ┃
┃ - schueler: String           ┃      ┃ - kurse: ArrayList<ReitKurs>           ┃
┃ - pferd: String              ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Reitschule(name: String)             ┃
┃ + ReitKurs(...)              ┃      ┃ + getKurs(index): ReitKurs             ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProEinheit(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      EinzelReitstunde       ┃  ┃          ReitPaket           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einzelPreis: float         ┃  ┃ - paketPreis: float          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + EinzelReitstunde(...)      ┃  ┃ + ReitPaket(...)             ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine ReitKursException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Reitschule

Reitschule(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<ReitKurs>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getKurs(index: int): ReitKurs
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(kurs: ReitKurs): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(kurs: ReitKurs): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(pferd: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


21. Werkstatt

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       ReparaturException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + ReparaturException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          Reparatur           ┃━━━━━━┃               Werkstatt                ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - arbeitsStunden: int        ┃      ┃ - name: String                         ┃
┃ - fahrzeug: String           ┃      ┃ - reparaturen: ArrayList<Reparatur>    ┃
┃ - mechaniker: String         ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Werkstatt(name: String)              ┃
┃ + Reparatur(...)             ┃      ┃ + getReparatur(index): Reparatur       ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenGesamt(): float      ┃      ┃ + entfernen(...): boolean              ┃
┃ + kostenProStunde(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      StundenReparatur       ┃  ┃      FixpreisReparatur      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stundenSatz: float         ┃  ┃ - fixPreis: float            ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + StundenReparatur(...)      ┃  ┃ + FixpreisReparatur(...)     ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine ReparaturException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Werkstatt

Werkstatt(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Reparatur>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getReparatur(index: int): Reparatur
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(reparatur: Reparatur): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(reparatur: Reparatur): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(mechaniker: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


22. Supportfirma

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      SupportAuftragException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + SupportAuftragException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       SupportAuftrag         ┃━━━━━━┃              SupportFirma              ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - kunde: String              ┃      ┃ - auftraege:                           ┃
┃ - techniker: String          ┃      ┃   ArrayList<SupportAuftrag>            ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + SupportAuftrag(...)        ┃      ┃ + SupportFirma(name: String)           ┃
┃ + get-/set-Methoden          ┃      ┃ + getAuftrag(index): SupportAuftrag    ┃
┃ + kostenGesamt(): float      ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenProStunde(): double  ┃      ┃ + entfernen(...): boolean              ┃
┃ + toString(): String         ┃      ┃ + entfernen(...): int                  ┃
┃ + weitere laut Angabe        ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┃ + toString(): String                   ┃
               ┃                      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       StundenSupport        ┃  ┃        SupportPaket         ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stundenPreis: float        ┃  ┃ - paketPreis: float          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + StundenSupport(...)        ┃  ┃ + SupportPaket(...)          ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine SupportAuftragException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

SupportFirma

SupportFirma(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<SupportAuftrag>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getAuftrag(index: int): SupportAuftrag
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(auftrag: SupportAuftrag): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(auftrag: SupportAuftrag): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(techniker: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


23. Webagentur

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      WebProjektException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + WebProjektException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃         WebProjekt           ┃━━━━━━┃              Webagentur                ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - projektName: String        ┃      ┃ - projekte: ArrayList<WebProjekt>      ┃
┃ - entwickler: String         ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Webagentur(name: String)             ┃
┃ + WebProjekt(...)            ┃      ┃ + getProjekt(index): WebProjekt        ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + kostenGesamt(): float      ┃      ┃ + entfernen(...): boolean              ┃
┃ + kostenProStunde(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       StundenProjekt        ┃  ┃       FixpreisProjekt       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stundenSatz: float         ┃  ┃ - fixPreis: float            ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + StundenProjekt(...)        ┃  ┃ + FixpreisProjekt(...)       ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + kostenGesamt(): float      ┃  ┃ + kostenGesamt(): float      ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine WebProjektException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Webagentur

Webagentur(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<WebProjekt>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getProjekt(index: int): WebProjekt
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(projekt: WebProjekt): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(projekt: WebProjekt): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(entwickler: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


24. Druckerei

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      DruckAuftragException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + DruckAuftragException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃        DruckAuftrag          ┃━━━━━━┃               Druckerei                ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - anzahl: int                ┃      ┃ - name: String                         ┃
┃ - produkt: String            ┃      ┃ - auftraege:                           ┃
┃ - kunde: String              ┃      ┃   ArrayList<DruckAuftrag>              ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + DruckAuftrag(...)          ┃      ┃ + Druckerei(name: String)              ┃
┃ + get-/set-Methoden          ┃      ┃ + getAuftrag(index): DruckAuftrag      ┃
┃ + preisGesamt(): float       ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisProStueck(): double   ┃      ┃ + entfernen(...): boolean              ┃
┃ + toString(): String         ┃      ┃ + entfernen(...): int                  ┃
┃ + weitere laut Angabe        ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┃ + toString(): String                   ┃
               ┃                      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃         StueckDruck         ┃  ┃        PauschalDruck        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stueckPreis: float         ┃  ┃ - auftragPreis: float        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + StueckDruck(...)           ┃  ┃ + PauschalDruck(...)         ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine DruckAuftragException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Druckerei

Druckerei(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<DruckAuftrag>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getAuftrag(index: int): DruckAuftrag
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(auftrag: DruckAuftrag): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(auftrag: DruckAuftrag): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(kunde: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


25. CateringFirma

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       CateringAuftragException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + CateringAuftragException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       CateringAuftrag        ┃━━━━━━┃             CateringFirma              ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - personen: int              ┃      ┃ - name: String                         ┃
┃ - veranstaltung: String      ┃      ┃ - auftraege:                           ┃
┃ - kunde: String              ┃      ┃   ArrayList<CateringAuftrag>           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + CateringAuftrag(...)       ┃      ┃ + CateringFirma(name: String)          ┃
┃ + get-/set-Methoden          ┃      ┃ + getAuftrag(index): CateringAuftrag   ┃
┃ + preisGesamt(): float       ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisProPerson(): double   ┃      ┃ + entfernen(...): boolean              ┃
┃ + toString(): String         ┃      ┃ + entfernen(...): int                  ┃
┃ + weitere laut Angabe        ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┃ + toString(): String                   ┃
               ┃                      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      PersonenCatering       ┃  ┃      PauschalCatering       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - personenPreis: float       ┃  ┃ - pauschale: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + PersonenCatering(...)      ┃  ┃ + PauschalCatering(...)      ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine CateringAuftragException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

CateringFirma

CateringFirma(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<CateringAuftrag>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getAuftrag(index: int): CateringAuftrag
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(auftrag: CateringAuftrag): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(auftrag: CateringAuftrag): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(kunde: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


26. Veranstalter

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃        EventException        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + EventException(meldung)    ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃            Event             ┃━━━━━━┃              Veranstalter              ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - teilnehmer: int            ┃      ┃ - name: String                         ┃
┃ - bezeichnung: String        ┃      ┃ - events: ArrayList<Event>             ┃
┃ - veranstalter: String       ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Veranstalter(name: String)           ┃
┃ + Event(...)                 ┃      ┃ + getEvent(index): Event               ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProTeilnehmer():      ┃      ┃ + entfernen(...): int                  ┃
┃   double                     ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + toString(): String         ┃      ┃ + toString(): String                   ┃
┃ + weitere laut Angabe        ┃      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      TeilnehmerEvent        ┃  ┃        PauschalEvent        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - teilnehmerPreis: float     ┃  ┃ - pauschale: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + TeilnehmerEvent(...)       ┃  ┃ + PauschalEvent(...)         ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine EventException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Veranstalter

Veranstalter(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<Event>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getEvent(index: int): Event
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(event: Event): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(event: Event): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(veranstalter: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


27. Bootsverleih

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       BootMieteException      ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + BootMieteException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          BootMiete           ┃━━━━━━┃             Bootsverleih               ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - boot: String               ┃      ┃ - mieten: ArrayList<BootMiete>         ┃
┃ - kunde: String              ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Bootsverleih(name: String)           ┃
┃ + BootMiete(...)             ┃      ┃ + getMiete(index): BootMiete           ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProStunde(): double   ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃         StundenBoot         ┃  ┃         PauschalBoot        ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stundenPreis: float        ┃  ┃ - pauschale: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + StundenBoot(...)           ┃  ┃ + PauschalBoot(...)          ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine BootMieteException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Bootsverleih

Bootsverleih(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<BootMiete>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getMiete(index: int): BootMiete
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(miete: BootMiete): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(miete: BootMiete): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(kunde: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


28. Flugschule

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      FlugUnterrichtException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + FlugUnterrichtException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃        FlugUnterricht        ┃━━━━━━┃               Flugschule               ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stunden: int               ┃      ┃ - name: String                         ┃
┃ - schueler: String           ┃      ┃ - unterrichte:                         ┃
┃ - fluglehrer: String         ┃      ┃   ArrayList<FlugUnterricht>            ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + FlugUnterricht(...)        ┃      ┃ + Flugschule(name: String)             ┃
┃ + get-/set-Methoden          ┃      ┃ + getUnterricht(index):                ┃
┃ + preisGesamt(): float       ┃      ┃   FlugUnterricht                       ┃
┃ + preisProStunde(): double   ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + toString(): String         ┃      ┃ + entfernen(...): boolean              ┃
┃ + weitere laut Angabe        ┃      ┃ + entfernen(...): int                  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┃ + anzahlPreisGesamt(...): int          ┃
               ┃                      ┃ + toString(): String                   ┃
            ┏━━^━━━━━━━━━━━━━━━━┓     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          EinzelFlug         ┃  ┃          FlugPaket          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - stundenPreis: float        ┃  ┃ - paketPreis: float          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + EinzelFlug(...)            ┃  ┃ + FlugPaket(...)             ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine FlugUnterrichtException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Flugschule

Flugschule(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<FlugUnterricht>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getUnterricht(index: int): FlugUnterricht
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(unterricht: FlugUnterricht): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(unterricht: FlugUnterricht): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(fluglehrer: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


29. Kochschule

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      KochKursException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + KochKursException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃          KochKurs            ┃━━━━━━┃              Kochschule                ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einheiten: int             ┃      ┃ - name: String                         ┃
┃ - bezeichnung: String        ┃      ┃ - kurse: ArrayList<KochKurs>           ┃
┃ - koch: String               ┃      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┃ + Kochschule(name: String)             ┃
┃ + KochKurs(...)              ┃      ┃ + getKurs(index): KochKurs             ┃
┃ + get-/set-Methoden          ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + preisGesamt(): float       ┃      ┃ + entfernen(...): boolean              ┃
┃ + preisProEinheit(): double  ┃      ┃ + entfernen(...): int                  ┃
┃ + toString(): String         ┃      ┃ + anzahlPreisGesamt(...): int          ┃
┃ + weitere laut Angabe        ┃      ┃ + toString(): String                   ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
               ┃
            ┏━━^━━━━━━━━━━━━━━━━┓
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       PrivatKochkurs        ┃  ┃       GruppenKochkurs       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einzelPreis: float         ┃  ┃ - kursPreis: float           ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + PrivatKochkurs(...)        ┃  ┃ + GruppenKochkurs(...)       ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine KochKursException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Kochschule

Kochschule(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<KochKurs>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getKurs(index: int): KochKurs
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(kurs: KochKurs): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(kurs: KochKurs): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(koch: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt die passenden Objekte, deren Gesamtpreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


30. Fahrschule

Erweitern Sie die Implementierung um eine Exception-Klasse:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      FahrAusbildungException       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + FahrAusbildungException(meldung) ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓      ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃       FahrAusbildung         ┃━━━━━━┃              Fahrschule                ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einheiten: int             ┃      ┃ - name: String                         ┃
┃ - schueler: String           ┃      ┃ - ausbildungen:                        ┃
┃ - fahrlehrer: String         ┃      ┃   ArrayList<FahrAusbildung>            ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫      ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + FahrAusbildung(...)        ┃      ┃ + Fahrschule(name: String)             ┃
┃ + get-/set-Methoden          ┃      ┃ + getAusbildung(index):                ┃
┃ + preisGesamt(): float       ┃      ┃   FahrAusbildung                       ┃
┃ + preisProEinheit(): double  ┃      ┃ + hinzufuegen(...): boolean            ┃
┃ + toString(): String         ┃      ┃ + entfernen(...): boolean              ┃
┃ + weitere laut Angabe        ┃      ┃ + entfernen(...): int                  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛      ┃ + anzahlPreisGesamt(...): int          ┃
               ┃                      ┃ + toString(): String                   ┃
            ┏━━^━━━━━━━━━━━━━━━━┓     ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            ┃                   ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃      EinzelFahrstunde       ┃  ┃      FahrstundenPaket       ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ - einzelPreis: float         ┃  ┃ - paketPreis: float          ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫  ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ + EinzelFahrstunde(...)      ┃  ┃ + FahrstundenPaket(...)      ┃
┃ + get-/set-Methoden          ┃  ┃ + get-/set-Methoden          ┃
┃ + preisGesamt(): float       ┃  ┃ + preisGesamt(): float       ┃
┃ + toString(): String         ┃  ┃ + toString(): String         ┃
┃ + weitere laut Angabe        ┃  ┃ + weitere laut Angabe        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Sämtliche Fehler werfen eine FahrAusbildungException mit einer sprechenden Fehlermeldung.
Testen Sie alle Parameterprüfungen.

Fahrschule

Fahrschule(name: String)
Erzeugt ein Objekt mit dem übergebenen Namen und einer leeren ArrayList<FahrAusbildung>. Der Name darf weder null noch leer sein.

set-Methoden
Übergabeparameter dürfen nicht null sein. Strings dürfen nicht leer sein.

getAusbildung(index: int): FahrAusbildung
Liefert das Objekt am übergebenen Index zurück. Bei einem ungültigen Index wird eine Exception geworfen.

hinzufuegen(ausbildung: FahrAusbildung): boolean
Das Objekt darf nicht bereits vorhanden sein. Es können maximal 15 Objekte gespeichert werden. null darf nicht hinzugefügt werden. Bei einer erfolgreichen Hinzufügung wird true zurückgegeben.

entfernen(ausbildung: FahrAusbildung): boolean
null darf nicht übergeben werden. Das Objekt muss vorhanden sein. Bei erfolgreicher Entfernung wird true zurückgegeben.

entfernen(fahrlehrer: String): int
null und ein leerer String dürfen nicht übergeben werden. Entfernen Sie alle passenden Objekte und geben Sie die Anzahl der entfernten Objekte zurück. Wenn kein passendes Objekt gefunden wird, werfen Sie eine Exception.

anzahlPreisGesamt(maxPreisGesamt: float): int
Zählt alle FahrstundenPaket-Objekte, deren paketPreis unter dem Grenzwert liegt. Bei einem negativen maxPreisGesamt wird eine Exception geworfen.

JUnit

Erstellen Sie die zugehörigen JUnit-Tests. Testen Sie insbesondere alle gültigen Fälle, Grenzwerte und sämtliche Fehlerfälle mit assertThrows.


Code-Dateien

DateinameAktion
CODECode_Fahrzeug.zipDownload
CODECode_Fenster.zipDownload
CODECode_Mitarbeiter.zipDownload
CODECode_Tanzschule.zipDownload

Videos

DateinameAktion
VIDEOVideo_Fahrzeug_DAbspielen
VIDEOVideo_Fenster_Teil1_DAbspielen
VIDEOVideo_Fenster_Teil2_DAbspielen
VIDEOVideo_Mitarbeiter_DAbspielen
VIDEOVideo_Tanzschule_DAbspielen

Lernmaterialien

Ausgangslage

    @Override
    public void setPs(int ps) {
        if ((ps >= 70) && (ps <= 200)) {
            this.ps = ps;
        }
        else {
            System.out.println("Fehler: ungültige PS Anzahl! Bei einem Auto muss diese zw. 70 und 200 liegen!");
            this.ps = 100;
        }
    }

Es wurde im Fehlerfall:

  • Fehlermeldung ausgegeben

  • Zuweisung des Defaultwertes

Der Konstruktor lieferte eine gültige Objektreferenz - obwohl der Parameter falsch war.

ToDo

Exception Klasse

public class FahrzeugException extends Exception {
    public FahrzeugException(String meldung) {
        super(meldung);
    }
}

Wir bekommen die Funktionalität der Exception Klasse geschenkt.

setMethode

    @Override
    public void setPs(int ps) throws FahrzeugException {
        if ((ps >= 70) && (ps <= 200)) {
            this.ps = ps;
        }
        else {
            throw new FahrzeugException("Fehler: ungültige PS Anzahl! Bei einem Auto muss diese zw. 70 und 200 liegen!");
        }
    }

Nun liefert die setMethode eine Exception.

Änderungen:

  • throw new Fahrzeugexception mit der Fehlermeldung

  • Methodenkopf liefer auch eine Exception

Vaterklasse

    public abstract void setPs(int ps) throws FahrzeugException;

Auch hier gehört der Methodenkopf angepasst.

Die beiden Methodenköpfe müssen IDENT sein.

Aufrufe

001.png

Die ganze Aufrufhierarchie liefert eine Exception.

Erst in der Test-Klasse darf die Exception abgefangen werden.

Test

    @Test
    public void testAutoPSWenig() {
        Auto a = null;
        try {
            a = new Auto("Opel", 69, true, false);
            System.out.println(a);
            assertEquals(1,0);
        }
        catch (FahrzeugException e) {
            System.out.println(e.getMessage());
            assertEquals(1,1);
        }
    }

In der Testklasse wird die Exception abgefangen und die Fehlermeldung ausgegeben.

Struktur

Ausgangslage

    public void hinzufugen(int pos, Fahrzeug neu) {
        if (neu != null) {
            if ((pos >= 0) && (pos <= fahrzeuge.size())) {
                if (fahrzeuge.contains(neu) == false) {
                    fahrzeuge.add(pos, neu);
                }
                else {
                    System.out.println("Fehler: Fahrzeug schon vorhanden!");
                }
            }
            else {
                System.out.println("Fehler: ungültige Position!");
            }
        }
        else {
            System.out.println("Fehler: kein Fahrzeug!");
        }
    }

Eine Folge von if/else Statements.

Prüfung

pre condition check

    public void hinzufugen(int pos, Fahrzeug neu) throws FahrzeugException {
        if (neu == null)
            throw new FahrzeugException("Fehler: kein Fahrzeug!");
        if ((pos < 0) || (pos > fahrzeuge.size()))
            throw new FahrzeugException("Fehler: ungültige Position!");
        if (fahrzeuge.contains(neu))
            throw new FahrzeugException("Fehler: Fahrzeug schon vorhanden!");

        fahrzeuge.add(pos, neu);
    }

Zuerst werden die Fehlerfälle abgearbeitet.

Dann bleibt nur mehr der auszuführende Code übrig.