24
Geoinformation 3 1 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

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

Embed Size (px)

Citation preview

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

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

Page 2: Geoinformation3 123456789101112131415161718 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

Page 3: Geoinformation3 123456789101112131415161718 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

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

Page 4: Geoinformation3 123456789101112131415161718 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

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

Page 5: Geoinformation3 123456789101112131415161718 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

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

Page 6: Geoinformation3 123456789101112131415161718 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

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

Page 7: Geoinformation3 123456789101112131415161718 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

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"

Page 8: Geoinformation3 123456789101112131415161718 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

6

OCL-Syntax: Invarianten

• context <Klassenname> inv:<OCL-Ausdruck>

Page 9: Geoinformation3 123456789101112131415161718 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

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

Page 10: Geoinformation3 123456789101112131415161718 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

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

Page 11: Geoinformation3 123456789101112131415161718 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

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....

Page 12: Geoinformation3 123456789101112131415161718 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

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 ...

Page 13: Geoinformation3 123456789101112131415161718 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

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

Page 14: Geoinformation3 123456789101112131415161718 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

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)

Page 15: Geoinformation3 123456789101112131415161718 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

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

Page 16: Geoinformation3 123456789101112131415161718 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

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

Page 17: Geoinformation3 123456789101112131415161718 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

15

• abstrakte Klassen• rekursive Aggregation• abgeleitete Attribute und Assoziationen• Einschränkungen• Zusicherungen

– Invarianten– Vor- und Nachbedingungen

• Object Constraint Language OCL

Zusammenfassung: neue UML-Konzepte

Page 18: Geoinformation3 123456789101112131415161718 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

16

Vielen Dank für die Aufmerksamkeit.

Fragen?

Page 19: Geoinformation3 123456789101112131415161718 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

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

Page 20: Geoinformation3 123456789101112131415161718 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

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 .. *

Page 21: Geoinformation3 123456789101112131415161718 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

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

Page 22: Geoinformation3 123456789101112131415161718 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

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

Page 23: Geoinformation3 123456789101112131415161718 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

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.

Page 24: Geoinformation3 123456789101112131415161718 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

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