Im Modifikationsschritt Mengen und Berechnungen haben wir eine Event-Regel hinterlegt, welche bei jeder Regelprüfung die Kalkulation eines Materials vornimmt.
Bei großen Produkten kommen so leicht einige 100 Berechnungen pro Regelprüfung zusammen, also bei jeglicher Änderung der Objektstruktur.
Dies kann verbessert werden, in dem wir eine Zustandsvariable in der Klasse Material anlegen, die anzeigt, dass eine neue Berechnung der Position erforderlich ist.
Wir legen zu diesem Zweck ein Merkmal mit dem Namen [Kalkulation erforderlich] vom Typ Boolean in der Klasse Material an.
Eine Neuberechnung ist dann erforderlich, wenn sich eines der Merkmale, die in der Berechnung angewandt werden, geändert hat.
Hier der aktuelle Inhalt der Kalkulation:
Function Kalkulation() As Void
Positionspreis := Anzahl * Preis * (1 + Deckungsbeitrag / 100)
End Function
Eine Neuberechnung ist also erforderlich bei Änderung der Merkmale Anzahl, Preis und Deckungsbeitrag.
Nun verfügen Merkmale über einen AfterLet-Event, der immer dann ausgeführt wird, wenn sich der Wert eines Merkmales ändert. Wir machen uns diesen Event zu Nutze, in dem wir dort unsere neue Zustandsvariable setzen:
Jetzt können wir die Event-Regel der Funktion Kalkulation anpassen:
Im Code der Funktion Kalkulation setzen wird die Zustandsvariable wieder zurück:
Function Kalkulation() As Void
[Kalkulation erforderlich] := False
Positionspreis := Anzahl * Preis * (1 + Deckungsbeitrag / 100)
End Function