uhrung
Anwendungsbeispiel
Softwaretechnik 10
Object Constraint Language
Karsten Weicker
HTWK Leipzig
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einfuhrung
Motivation
Klassendiagramme konnen mehrdeutig sein
uber Invarianten komplexe Zusammenhange
beschreiben
Sequenzdiagramme fur grobe Ablaufe
notwendig
uber Vor-/Nachbedingungen Methoden
beschreiben
Code-Erzeugung aus Diagrammen hat noch
nicht richtig uberzeugt
Queries mathematisch beschreiben
model-driven architecture
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einfuhrung
Object Constraint Language
baut wesentlich auf den Klassendiagrammen
auf
seit 1995
Teil des offiziellen UML-Standards
seit OCL 2.0: auch lokale Variablen und weitere
Sprachkonzepte
Einf
uhrung
Anwendungsbeispiel
Einfuhrung
Einfaches Beispiel
Grundelemente:
Kontext: Klasse (self)
Formel: logisch-mathematische Formel (hier: als
Invariante)
context Flug
inv: self.passagiere->size()
<= self.plane.sitzanzahl
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Einfuhrung
OCL-Eigenschaften
gemeinsame Sprache fur Abfragen und
Constraints
auf mathematischer Grundlage, aber ohne
mathematische Symbole
stark typisiert
deklarative Sprache
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Einfuhrung
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Einfuhrung
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einfuhrung
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einfuhrung
Einf
uhrung
Anwendungsbeispiel
Anwendungsbeispiel
Verwaltung von Treue/Bonus-Programmen
Kunden konnen Treueprogramm beitreten
fur Einkaufe (Service) werden Punkte
gutgeschrieben
diese konnen gegen andere Leistungen
(Service) eingelost werden
bestimmte Leistungen hangen von einem
ServiceLevel (u.a. auch Farbe der Karte) ab
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Operation
oder
und
exklusives oder
Negation
gleich
ungleich
impliziert
Ergebnistyp
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Operation
gleich
ungleich
kleiner
groer
kleiner-gleich
groer-gleich
plus
minus
multipliziert
dividiert
Ergebnistyp
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Integer/Real
Integer/Real
Integer/Real
Real
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Operation
modulo
ganzzahl. div.
absoluter Wert
Maximum
Minimum
gerundet
abgerundet
Ergebnistyp
Integer
Integer
Integer/Real
Integer/Real
Integer/Real
Integer
Integer
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Operation
Konkatentation
Lange
in Kleinbuchst.
in Grobuchst.
Teilstring
gleich
nicht gleich
Ergebnistyp
String
Integer
String
String
String
Boolean
Boolean
Anneke.size() = 6
Anneke.toUpper() = ANNEKE
Anneke.concat(and Jos).substring(6,8) = e a
Einf
uhrung
Anwendungsbeispiel
Pfadname ::
Punkt und Pfeil . und ->
unare Operationen - und not
Multiplikation und Division * und \
Addition und Subtraktion + und Vergleiche <, >, <=, >=, = und <>
logische Operatoren and, or und xor
logische Implikation implies
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Ausgangs-Datentyp
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Kontext Flugzeug:
self.fluege
self.fluege.passagiere
self.fluege.passagiere.name
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufzahlungsdatentypen (Enumeration)
analog zu Klassenattributen
context Kunde
inv: geschlecht = Geschlecht::maennlich implies
anrede = Herr
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Gegenbeispiel:
context Kunde
inv: self.konten.isEmpty()
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Operation
Anzahl der Vorkommen
pruft ob nicht enthalten
analog
pruft ob enthalten
analog
pruft ob leer
pruft ob mind. 1 El.
Anzahl der Elemente
summiert Elemente
Ergebnistyp
Integer
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Integer
Interger/Real
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Operation
wandelt Coll. um
dito
dito
dito
fugt hinzu
entfernt
Vereinigung
Schnitt (nur Set/Bag)
Ergebnistyp
Bag
Set
OrderedSet
Sequence
Collection
Collection
Collection
Collection
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Operation
fugt an
liefert Element
erstes Element
letztes Element
liefert ersten Index
fugt ein
Teilmenge
Teilmenge
Ergebnistyp
Collection
Element
Element
Element
Integer
Collection
OrderedSet
Sequence
Einf
uhrung
Anwendungsbeispiel
Operation
Existenzquantor
liefert ein erfullendes El.
Allquantor
pruft Eindeutigkeit
existiert genau ein
alle erfullenden El.
alle nicht erf. El.
Ergebnistyp
Boolean
Element
Boolean
Boolean
Boolean
Collection
Collection
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Loop-Operationen: Bsp. II
context Bonusprogramm
inv: self.teilnehmer->forAll(k1, k2 |
k1 <> k2 implies k1.name <> k2.name )
context Treuekonto
inv: punkte > 0 implies transaktionen->exists(t |
t.points > 0)
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Aufgaben
Einf
uhrung
Anwendungsbeispiel
Aufgaben
Aufgaben