Sie sind auf Seite 1von 4

VU Objektorientierte Modellierung

188.391, SS2014

Ubung 3: Sequenzdiagramm
Ubungsgruppen: 07.04.2014 - 11.04.2014

Aufgabe 1: Verhaltensmodellierung mittels Sequenzdiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit Sequenzdiagrammen besch aftigt. Welche 4 Arten von Interaktionsdigrammen gibt es? Beschreiben Sie diese kurz. Wof ur werden Interaktionsdiagramme eingesetzt? Wie ist ein Sequenzdiagramm prinzipiell aufgebaut? Welche Elemente kann es enthalten? Beschreiben Sie die Unterschiede zwischen synchronen und asynchronen Nachrichten. Was ist ein aktives Objekt, was ist ein passives Objekt? Wie unterscheiden sich diese?

Aufgabe 2: Verhaltensmodellierung mittels Sequenzdiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit Sequenzdiagrammen besch aftigt. Was ist eine Zustandsinvariante im Kontext des Sequenzdiagramms? Wie k onnen Zeiteinschr ankungen angegeben werden? Welche Arten von Verzweigungen und Schleifen k onnen in Sequenzdiagrammen auftreten? Beschreiben Sie die entsprechenden Operatoren. Welche Operatoren stehen im Sequenzdiagramm zur Verf ugung, um parallele Abl aufe zu realisieren bzw. um Ordnungen im Ablauf festzulegen? Erkl aren Sie die kombinierten Fragmente aus der Gruppe Filterungen und Zusicherungen.

Aufgabe 3: Kommunikation im Sequenzdiagramm Handelt es sich in den folgenden Kommunikationsszenarien um synchrone oder asynchrone Kommunikation? Identizieren Sie die involvierten Interaktionspartner! Die Rezeptionistin informiert die neuen G aste u ber das Wellnessangebot des Hotels. Auf einem Infoscreen im Wellnessbereich werden die neuesten Massagen und Behandlungen eingeblendet. Eine Mitarbeiterin begleitet die Hotelg aste auf ihr Zimmer. Uber das Zimmerradio ert ont beruhigende Entspannungsmusik. Der Gast schaltet s amtliche Lichtquellen des Hotelzimmers per Touch-Screen ein. Ein Gast nutzt den Computer in der Hotellobby, um einem Freund ein E-Mail zu senden. Ein Gast beschwert sich per Telefon bei der Rezeption, dass ein Bademantel fehlt. Ein Gast postet seine Eindr ucke u ber das Hotel auf Facebook. Ein Ehepaar diskutiert, ob es zuerst die Nachmittagsjause oder den Fitnessraum in Anspruch nehmen soll. Vor der Abreise bezahlt ein Gast die Hotelrechnung mit Kreditkarte. 2 synchron 2 synchron 2 synchron 2 synchron 2 synchron 2 synchron 2 synchron 2 synchron 2 synchron 2 synchron 2 asynchron 2 asynchron 2 asynchron 2 asynchron 2 asynchron 2 asynchron 2 asynchron 2 asynchron 2 asynchron 2 asynchron

Aufgabe 4: Kombinierte Fragmente a) Aquivalenzen Gegeben sind jeweils zwei Ausschnitte eines Sequenzdiagramms. Kreuzen Sie an, ob die beiden Ausschnitte jeweils aquivalent oder nicht aquivalent sind. Begr unden Sie warum.
a) :A :B b) :A alt [else] b :B a c b b) :A par a c b b) alt :B quivalent nicht quivalent :B [x == 5] a quivalent nicht quivalent opt [x == 5] a b

a)

:A

a)

:A alt

:B [x == 5] a

:A [x == 5] a

:B quivalent nicht quivalent

[x == 3] b [else] c

[else] break

[x == 3] b c

b) Berechnung von Traces Beschreiben Sie alle m oglichen Ereignisfolgen des folgenden Diagramms.
:A :B :C :D :E :F

loop (*) [...]

h i

par strict f

critical a b

c d e

Aufgabe 5: Klassendiagramm aus Sequenzdiagramm Gegeben ist folgendes Sequenzdiagramm:


s1 :S s2:S r1:R r2:R t1:T t2:T

g k

f f

h("auto") h :19 k

k :123 f f k k:123 b b :"hallo" f f

Vervollst andigen Sie nachfolgendes Klassendiagramm. Operationsdenitionen mit Typangaben, soweit ersichtlich Beziehungen zwischen Klassen in Form von navigierbaren Assoziationen: Zeichnen Sie nur Navigationsrichtungen ein, die aus dem gegebenen Sequenzdiagramm ersichtlich sind.

Aufgabe 6: Darstellung von Programmabl aufen mittels Sequenzdiagramm Stellen Sie die Abl aufe von folgendem Programm mittels Sequenzdiagramm dar. Modellieren Sie auch allf allige Antwortnachrichten. Sie k onnen davon ausgehen, dass alle nicht explizit deklarierten Variablen bereits deklariert und initialisiert sind. ... markiert vernachl assigte Codeteile, die nicht modelliert werden m ussen. c l a s s Main { ... S t r i n g msg=r e a d ( ) ; while ( ! msg . e q u a l s ( e x i t ) ) { r e s p=s e r v e r . p o s t ( msg , forumid ) ; i f ( ! r e s p . e q u a l s ( ok ) ) { print ( Sending error ) ; e x i t ; // Programm w ird b e e n d e t } msg=r e a d ( ) ; } S t r i n g read ( ) { . . . } void p r i n t ( S t r i n g msg ) { . . . } } class Server { ... S t r i n g p o s t ( S t r i n g msg , int forumid ) { Worker w = new Worker ( ) ; w. s t a r t ( ) ; w . setMsg ( msg , forumid ) ; return ok ; } } c l a s s Worker extends Thread { ... void setMsg ( S t r i n g msg , int forumid ) { i f ( e x i s t s ( forumid ) ) { push ( msg , forumid ) ; } } boolean e x i s t s ( int forumid ) { . . . } void push ( S t r i n g msg , int forumid ) { . . . } }