View
111
Download
0
Category
Preview:
Citation preview
Geoinformation31 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Geoinformation III
Software-Technik:
(fortgeschrittene)
Klassendiagramme
Vorlesung 6b
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
1
OCL: Invarianten - Beispiel II
context Auftrag inv:Ware = "Waffen" implies Auftragnehmer -> forAll( k | k.vorbestraft = false
and k.Alter >= 18)
Auftrag
Ware: StringWert: int
Kunde
Alter: intBonität: Stringvorbestraft: bool
0..* 1..*
Auftragnehmer
context Auftrag inv:Wert > 1000 implies Auftragnehmer -> exists( k | k.Bonität = "gut")
Menge von Kunden
A 3x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
2
• 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
OCL: Invarianten II
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
3
Invarianten für Landkarten: Beispiel III
Landkarten-Axiom: Jede Masche wird von mindestens 3 Kanten begrenzt.
Masche Kantewird begrenzt von2 3..*
Wie sieht die Darstellung im UML-Diagramm aus?Idee
A 2x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
4
Invarianten für Landkarten: Beispiel III
Landkarten-Axiom: Jede Masche wird von mindestens 3 gerichteten Kanten begrenzt.
Masche Kante
auf linker Seite
auf rechter Seite
1
1
3..*
3..*
Hmm?
A 7x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
0..*
0..*
4
Invarianten für Landkarten: Beispiel III
Landkarten-Axiom: Jede Masche wird von mindestens 3 gerichteten Kanten begrenzt.
Masche Kante
auf linker Seite
auf rechter Seite
1
1
Hmm?
context Masche inv:auf_linker_Seite -> size + auf_rechter_Seite -> size >= 3
size liefert Anzahl der Objekte
A 7x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
5
Invarianten in ALKIS: Beispiel IV
A 1x
zwei Flurstücke dürfen sich nicht überlagern
context Flurstueck inv: Flurstueck.allInstances->forAll (p1, p2 |
p1.ID != p2.ID implies p1.intersects(p2) = false)
Flurstueck
ID: int.....
.....intersects(Fläche): boolean.....
Alle Instanzen der Klasse
"Flurstueck"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
6
OCL-Syntax: Invarianten
• context <Klassenname> inv:<OCL-Ausdruck>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
8
Operatoren für Mengen (Collections)
Operator Ergebnis-typ
Beschreibung
size integer Anzahl d. Elemente
isEmpty boolean wahr, wenn Menge leer ist
forAll(Bed.) boolean wahr, wenn Bed. für jedes Element gilt
exists(Bed.) boolean wahr, wenn Bed. für mind. ein Element gilt
select(Bed.) Menge Teilmenge, für die Bed. gilt
includesAll (Menge2)
boolean wahr, wenn alle Elemente der Menge Menge2 enthalten sind
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
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
9
Start am 4. Juni 1996 40 Sekunden später....
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
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 ...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
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ümerpost : Fläche = Fläche@pre + f.Fläche
• Vorbedingung (pre) muss vor Ausführung der Methode gelten• Nachbedingung (post) muss nach Ausführung der Methode gelten• Fläche@pre: Wert des Attributs Fläche vor dem Aufruf der Methode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
14
Zurück zu Ariane 5
Start am 4. Juni 1996 40 Sekunden später....
• Vermeidung des Unfalls:explizite Spezifikation der Vorbedingung des wiederverwendeten Moduls:
pre: Neigungswinkel <= maximaler_Neigungswinkel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
15
• abstrakte Klassen• rekursive Aggregation• abgeleitete Attribute und Assoziationen• Einschränkungen• Zusicherungen
– Invarianten– Vor- und Nachbedingungen
• Object Constraint Language OCL
Zusammenfassung: neue UML-Konzepte
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
16
Vielen Dank für die Aufmerksamkeit.
Fragen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
18
Übungsaufgabe 1
Flurstück
NutzungEigentümer
Flächeninhalt
Formuliert OCL-Ausdrücke für folgende Bedingungen:
1. Der Flächeninhalt darf nicht negativ oder Null sein
2. Straßen (Nutzung=Verkehr) müssen der Gemeinde gehören
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
18
Übungsaufgabe 2
Flurstück
NutzungFlächeninhalt
Formuliert OCL-Ausdrücke für folgende Bedingungen:
1. Straßen (Nutzung=Verkehr) müssen der Gemeinde gehören
2. Baugrundstücke (Nutzung=Wohnen) müssen an einer Straße (Nutzung=Verkehr) liegen
Eigentümer
Name
0 .. * benachbart_zu
0 .. *
gehört1 .. *
0 .. *
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
18
Übungsaufgabe 3
Flurstück
NutzungFlächeninhalt
Formuliert OCL-Ausdrücke für folgende Bedingungen:
1. Flurstücke mit Gebäuden müssen an einer Straße (Nutzung=Verkehr) liegen
Gebäude
Name
0 .. * benachbart_zu
0 .. *
liegt_auf0 .. *
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
18
Übungsaufgabe 4
Flurstück
NutzungFlächeninhalt
Formuliert OCL-Ausdrücke für folgende Bedingungen:
1. Flurstücke mit Gebäuden und einer Fläche von mind. 500 m² müssen an einer Straße (Nutzung=Verkehr) liegen
Gebäude
Name
0 .. * benachbart_zu
0 .. *
liegt_auf0 .. *
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
Raum-bezogenes Elementar-
objekt(REO)
0 ..*
Repräsen-tation
17
Übungsaufgabe 5
Raum-bezogenes zusammen-gesetztes
Objekt(ZUSO)
0 .. *
1
0..1
besteht_ausStellen 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Geoinformation3
18
Übungsaufgabe 5Instanzendiagramm
Raum-bezogenes Elementar-
objekt(REO)
0 ..*
Repräsen-tation
Raum-bezogenes zusammen-gesetztes
Objekt(ZUSO)
0 .. *
1
0..1
besteht_aus
REO
ZUSO
NRW
Reg. Bez.D‘dorf
Reg. Bez.Köln
Kreis Rhein - Sieg
Kreis Euskirchen
Flurst. 12 Flurst. 444Flurst. 21Flurst. 1
Recommended