Modellierung und Produktkonfigurierung
Erweiterung des Hausratmodells
In diesem Abschnitt werden wir unser Hausratmodell vervollständigen. Die folgende Abbildung zeigt das Modell.
Jeder Hausratvertrag hat genau eine Grunddeckung und kann beliebig viele Zusatzdeckungen haben. Die Grunddeckung deckt immer die im Vertrag definierte Versicherungssumme. Darüber hinaus kann ein Hausratvertrag optional Zusatzdeckungen enthalten, typischerweise sind dies Deckungen gegen Risiken wie zum Beispiel Fahrraddiebstahl oder Überspannungschäden. Die Zusatzdeckung werden wir im zweiten Teil des Tutorials näher betrachten.
Wir öffnen die Klasse „HausratVertrag“
und definieren die Attribute der Klasse (analog zahlweise
):
Name : Datentyp | Beschreibung, Bemerkung |
---|---|
|
Postleitzahl des versicherten Hausrats |
|
Die Tarifzone (I, II, III, IV, V oder VI) ergibt sich aus der Postleitzahl und ist maßgeblich für den zu zahlenden Beitrag. → Achten Sie also bei der Eingabe darauf Typ des Attributs auf abgeleitet (Berechnung bei jedem Aufruf der Gettermethode) zu setzen! |
|
Die Wohnfläche des versicherten Hausrats in Quadratmetern. Der erlaubte Wertebereich ist min=0 und unbeschränkt. Den Wertebereich definieren Sie auf der zweiten Seite des Dialogs „Vorbelegung und Werte“. In der Auswahlbox „Typ der Wertemenge“ wählen Sie Bereich aus. Für „Minimum“ geben Sie eine 0 ein, Felder „Maximum“ und „Schrittweite“ lassen Sie leer. |
|
Vorschlag für die Versicherungssumme. Wird auf Basis der
Wohnfläche bestimmt. |
|
Die Versicherungssumme. |
Der Editor, der die Klasse „HausratVertrag“
anzeigt, sieht wie folgt aus:
Die abgeleiteten Attribute werden UML-konform mit einem vorangestellten Schrägstrich angezeigt.
Öffnen Sie nun die Klasse „HausratVertrag“
im Java-Editor und implementieren die Gettermethoden für die beiden abgeleiteten Attribute tarifzone
und vorschlagVersSumme
wie folgt:
/**
* Gibt den Wert des Attributs tarifzone zurueck.
*
* @generated NOT
*/
@IpsAttribute(name = "tarifzone", kind = AttributeKind.DERIVED_ON_THE_FLY, valueSetKind = ValueSetKind.AllValues)
public String getTarifzone() {
return "I"; // TODO wird spaeter anhand einer Tarifzonentabelle ermittelt
}
/**
* Gibt den Wert des Attributs vorschlagversSumme zurueck.
*
* @generated NOT
*/
@IpsAttribute(name = "vorschlagversSumme", kind = AttributeKind.DERIVED_ON_THE_FLY, valueSetKind = ValueSetKind.AllValues)
public Money getVorschlagversSumme() {
// TODO: Der Multiplikator wird spaeter aus den Produktdaten ermittelt.
return Money.euro(650).multiply(wohnflaeche);
}
Denken Sie daran, hinter @generated
ein NOT
zu schreiben, damit der manuell eingefügte Code nicht überschrieben wird!