Geoinformation3 123456789101112131415161718 Geoinformation III Software-Technik: (fortgeschrittene)...

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