forAll( k | k.vorbestraft = false and k.Alter >= 18) context Auftrag inv: Wert > 1000 implies Auftragnehmer -> exists( k | k.Bonität = "gut") A 3x">

Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software-Technik: (fortgeschrittene) Klassendiagramme

Ähnliche Präsentationen


Präsentation zum Thema: "Software-Technik: (fortgeschrittene) Klassendiagramme"—  Präsentation transkript:

1 Software-Technik: (fortgeschrittene) Klassendiagramme
Geoinformation III Vorlesung 6b Software-Technik: (fortgeschrittene) Klassendiagramme

2 OCL: Invarianten - Beispiel II
1 OCL: Invarianten - Beispiel II Auftrag Ware: String Wert: int Kunde Alter: int Bonität: String vorbestraft: bool 0..* 1..* Auftragnehmer Menge von Kunden context Auftrag inv: Ware = "Waffen" implies Auftragnehmer -> forAll( k | k.vorbestraft = false and k.Alter >= 18) context Auftrag inv: Wert > 1000 implies Auftragnehmer -> exists( k | k.Bonität = "gut") A 3x

3 2 OCL: Invarianten II Invarianten können sich auch auf eine Klasse beziehen, die mit einer mengenwertigen Assoziation zu der Klasse in Verbindung steht Multiplizität nicht 1, z.B. * oder 1..* Bedingung: Assoziationsname -> forAll(B) Assoziationsname -> exists(B) B ist Bedingung an die Klasse, zu der die Assoziation besteht forAll: Bedingung B muss für alle Objekte gelten exists: es reicht aus, wenn Bedingung B für ein Objekt gilt

4 Invarianten für Landkarten: Beispiel III
3 Invarianten für Landkarten: Beispiel III Landkarten-Axiom: Jede Masche wird von mindestens 3 Kanten begrenzt. Idee Wie sieht die Darstellung im UML-Diagramm aus? Masche Kante wird begrenzt von 2 3..* A 2x

5 Invarianten für Landkarten: Beispiel III
4 Invarianten für Landkarten: Beispiel III Landkarten-Axiom: Jede Masche wird von mindestens 3 gerichteten Kanten begrenzt. Hmm? Masche Kante auf linker Seite auf rechter Seite 1 3..* A 7x

6 size liefert Anzahl der Objekte
4 Invarianten für Landkarten: Beispiel III Landkarten-Axiom: Jede Masche wird von mindestens 3 gerichteten Kanten begrenzt. Hmm? Masche Kante auf linker Seite auf rechter Seite 1 0..* context Masche inv: auf_linker_Seite -> size + auf_rechter_Seite -> size >= 3 size liefert Anzahl der Objekte A 7x

7 Alle Instanzen der Klasse "Flurstueck"
5 Invarianten in ALKIS: Beispiel IV Flurstueck ID: int ..... intersects(Fläche): boolean zwei Flurstücke dürfen sich nicht überlagern Alle Instanzen der Klasse "Flurstueck" context Flurstueck inv: Flurstueck.allInstances->forAll (p1, p2 | p1.ID != p2.ID implies p1.intersects(p2) = false) A 1x

8 OCL-Syntax: Invarianten
6 OCL-Syntax: Invarianten context <Klassenname> inv: <OCL-Ausdruck>

9 OCL-Syntax (vereinfacht)
7 OCL-Syntax (vereinfacht) <OCL-Ausdruck> ist ein boolescher Operator (=,>,<,..) angewendet auf zwei arithmetischen Ausdrücke (Konstanten/Attribute/Methoden, die integer- oder real-Wert zurückliefern; auch mit Navigation, wenn eindeutig) ein boolesches Attribut/Methode (auch mit Navigation, wenn eindeutig) eine mengenwertige Navigation mit forAll(<OCL-Ausdruck>) exists(<OCL-Ausdruck>) <Klassenname>.allInstances(<OCL-Ausdruck>) Kombination mehrerer <OCL-Ausdruck> mit not, and, or, implies

10 Operatoren für Mengen (Collections)
8 Operatoren für Mengen (Collections) Operator Ergebnis-typ Beschreibung size integer Anzahl d. Elemente isEmpty boolean wahr, wenn Menge leer ist forAll(Bed.) wahr, wenn Bed. für jedes Element gilt exists(Bed.) wahr, wenn Bed. für mind. ein Element gilt select(Bed.) Menge Teilmenge, für die Bed. gilt includesAll (Menge2) wahr, wenn alle Elemente der Menge Menge2 enthalten sind

11 Ariane 5 Schaden: ca. 500 Mio. $ Ursache: Software-Fehler
9 Ariane 5 Schaden: ca. 500 Mio. $ Ursache: Software-Fehler Wiederverwendung eines Moduls von Ariane 4 Modul war korrekt für Ariane 4 nicht jedoch für Ariane 5, da Neigungswinkel größer Start am 4. Juni 1996 40 Sekunden später....

12 10 Problem bei Ariane 5 Eine Methode wurde verwendet, ohne deren Voraussetzungen zu beachten Lösung in UML: Explizite Formulierung der Vor- und Nachbedingungen von Methoden Formulierung: ebenfalls mit OCL Beispiel ...

13 5. Vor- und Nachbedingungen
11 5. Vor- und Nachbedingungen Bsp.: Methode zur Verschmelzung zweier Flurstücke: context Flurstück::verschmelze_mit(f: Flurstück) pre : Eigentümer = f.Eigentümer post : Fläche = + f.Fläche Vorbedingung (pre) muss vor Ausführung der Methode gelten Nachbedingung (post) muss nach Ausführung der Methode gelten Wert des Attributs Fläche vor dem Aufruf der Methode

14 "Programmieren durch Vertrag"
12 "Programmieren durch Vertrag" Beteiligte: Klasse: bietet Methode an Kunde: nutzt Methode Vertragspflichten des Kunden: vor Ausführung der Methode gilt die Vorbedingung Vertragspflichten der Klasse: wenn Methode bei gültiger Vorbedingung aufgerufen wurde, so gilt nach Ausführung die Nachbedingung Klare, exakte Verteilung von Verantwortlichkeiten Keine redundanten Prüfungen (vermindert Komplexität des Programmcodes)

15 Zusicherungen Oberbegriff für Invarianten und Vor-/ Nachbedingungen
13 Zusicherungen Oberbegriff für Invarianten und Vor-/ Nachbedingungen Formulierung in OCL Invarianten: gelten jederzeit für eine Klasse Vor-/Nachbedingungen: gelten für eine Methode Vorbedingung muss vor dem Aufruf gelten Nachbedingung gilt nach dem Aufruf Invarianten der Klasse ergänzen (implizit) die Vor- und Nachbedingungen der entsprechenden Methoden

16 14 Zurück zu Ariane 5 Vermeidung des Unfalls: explizite Spezifikation der Vorbedingung des wiederverwendeten Moduls: pre: Neigungswinkel <= maximaler_Neigungswinkel Start am 4. Juni 1996 40 Sekunden später....

17 Zusammenfassung: neue UML-Konzepte
15 Zusammenfassung: neue UML-Konzepte abstrakte Klassen rekursive Aggregation abgeleitete Attribute und Assoziationen Einschränkungen Zusicherungen Invarianten Vor- und Nachbedingungen Object Constraint Language OCL

18 Vielen Dank für die Aufmerksamkeit. Fragen?
16 Vielen Dank für die Aufmerksamkeit. Fragen?

19 Formuliert OCL-Ausdrücke für folgende Bedingungen:
18 Übungsaufgabe 1 Flurstück Nutzung Eigentümer Flächeninhalt Formuliert OCL-Ausdrücke für folgende Bedingungen: Der Flächeninhalt darf nicht negativ oder Null sein Straßen (Nutzung=Verkehr) müssen der Gemeinde gehören

20 Formuliert OCL-Ausdrücke für folgende Bedingungen:
18 Übungsaufgabe 2 0 .. * benachbart_zu Flurstück Nutzung Flächeninhalt Formuliert OCL-Ausdrücke für folgende Bedingungen: Straßen (Nutzung=Verkehr) müssen der Gemeinde gehören Baugrundstücke (Nutzung=Wohnen) müssen an einer Straße (Nutzung=Verkehr) liegen 0 .. * 0 .. * gehört 1 .. * Eigentümer Name

21 Formuliert OCL-Ausdrücke für folgende Bedingungen:
18 Übungsaufgabe 3 0 .. * benachbart_zu Flurstück Nutzung Flächeninhalt Formuliert OCL-Ausdrücke für folgende Bedingungen: Flurstücke mit Gebäuden müssen an einer Straße (Nutzung=Verkehr) liegen 0 .. * 1 liegt_auf 0 .. * Gebäude Name

22 Formuliert OCL-Ausdrücke für folgende Bedingungen:
18 Übungsaufgabe 4 0 .. * benachbart_zu Flurstück Nutzung Flächeninhalt Formuliert OCL-Ausdrücke für folgende Bedingungen: Flurstücke mit Gebäuden und einer Fläche von mind. 500 m² müssen an einer Straße (Nutzung=Verkehr) liegen 0 .. * 1 liegt_auf 0 .. * Gebäude Name

23 Übungsaufgabe 5 besteht_aus 0 .. * Stellen Sie im nebenstehenden UML-
17 Übungsaufgabe 5 besteht_aus 0 .. * Stellen Sie im nebenstehenden UML- Diagramm durch OCL-Ausdrücke sicher, dass ein ZUSO entweder nur durch REOs repräsentiert wird (mindestens eines) oder nur aus ZUSOs (mindestens einem) besteht. Nicht passieren darf also, dass ein ZUSO aus gar nichts besteht, oder dass ein ZUSO aus REO und ZUSO besteht. Raum- bezogenes zusammen- gesetztes Objekt (ZUSO) 0..1 1 Repräsen- tation 0 ..* Raum- bezogenes Elementar- objekt (REO)

24 Übungsaufgabe 5 Instanzendiagramm
18 Übungsaufgabe 5 Instanzendiagramm besteht_aus 0 .. * REO ZUSO Raum- bezogenes zusammen- gesetztes Objekt (ZUSO) NRW 0..1 Reg. Bez. Köln Reg. Bez. D‘dorf 1 Repräsen- tation 0 ..* Kreis Rhein - Sieg Kreis Euskirchen Raum- bezogenes Elementar- objekt (REO) Flurst. 12 Flurst. 1 Flurst. 21 Flurst. 444


Herunterladen ppt "Software-Technik: (fortgeschrittene) Klassendiagramme"

Ähnliche Präsentationen


Google-Anzeigen