Vorlesung Informatik II

Ähnliche Dokumente
Vorlesung Informatik II

Sequenz- und Kommunikationsdiagrammen. Systemmodellierung mit SysML von Michel Manthey

OOA-Dynamische Konzepte

UML - Sequenzdiagramm

1. Erläutere ausführlich, welche Beziehung zwischen den Klassen bzw. Interfaces

Unified Modelling Language

Systemanalyse. - Folien zur Vorlesung für AI3 im Sommersemester Teil 8 -

Vgl. Oestereich Kap 2.7 Seiten

SEQUENZDIAGRAMM. Christoph Süsens

Sequenzdiagramme. Lebenslinie. Kathrin Gaißer, Jörg Depner Didaktik der Informatik

Übungsaufgaben UML Zertifizierung Fundamental-Level

7. Objektorientierung. Informatik II für Verkehrsingenieure

Übersicht. 1 Vorbemerkungen zu Sequenzdiagrammen. 2 Sequenzdiagramm aus Code ableiten. 3 Sequenzdiagramm konstruieren und in Java implementieren

Objektorientierte Analyse (OOA) Dynamisches Modell. Objektorientierte Analyse (OOA) Sequenzdiagramm

Interaktionsdiagramme in UML

Tabellarische Kurzreferenz der UML-Elemente

Wirtschaftsinformatik 6a: Modellierung. Hochschule für Wirtschaft und Recht SS 16 Dozent: R. Witte

Datenbanken. Teil 2: Informationen. Kapitel 7: Objektorientierte Sicht. UML-Diagramme. Vorstellung der unterschiedlichen UML-Diagramme

Teil II: OOP und JAVA (Vorlesung 9)

Besteht aus Aktoren (actors) und use-cases sowie deren Verbindungen.

UML 1.4 Referenz. Matthias Niete Dirk M. Sohn Orientation in Objects GmbH Weinheimer Str Mannheim

Unified Modeling Language (UML )

Inhalt. 1 Einführung 17. Strukturdiagramme. 2 Klassendiagramm 37

Software Engineering, SoSe 07, WSI, D. Huson, May 7,

Objektorientierte Modellierung (1)

Modellierung verteilter Systeme (Grundlagen der Programm- und Systementwicklung II)

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Christoph Kecher, Alexander Salvanos UML 2.5. Das umfassende Handbuch. Rheinwerk. Computing

Grafische Benutzeroberflächen

1 Klassen und Objekte

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel

Aktivitäts-, Sequenz- und Zustandsdiagramme

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Software Engineering in der Praxis

Grafische Benutzeroberflächen

Aktivitätsdiagramm. 1 b b,c a,d b,d b,d 2 a,b,d a,d a,c a,b,c b,c 3 a c,d a,b a,d a,b 4 c,d c b,c a,d d 5 c,d a,c a,b d c

Unified Modeling Language

Begriffe 1 (Wiederholung)

Unified Modeling Language 2

Software Engineering in der Praxis

Interaktionsdiagramme

Das UML Benutzerhandbuch

TEIL I Strukturdiagramme 1 Einführung Klassendiagramm Objektdiagramm Kompositionsstrukturdiagramm...

Software Engineering in der Praxis

2. Übung zu Software Engineering

Grafische Benutzeroberflächen

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Das umfassende Handbuch

Objektorientiertes Design

Aktivitäts-, Sequenz- und Zustandsdiagramme

UML. Weiteres Vorgehen im Projekt

Universität Karlsruhe (TH)

Vorlesung Programmieren

Bessere Service-Modellierung durch Kombination von BPMN und SoaML. Nürnberg, 24. Februar 2011

Vorlesung Software-Engineering I

Arbeitsgrundlagen Marktkommunikation

Einführung in die Programmierung mit Java

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

Softwareanforderungsanalyse

CARL HANSER VERLAG. Mario Jeckle, Chris Rupp, Jürgen Hahn, Barbara Zengler, Stefan Queins. UML 2 glasklar

ANWENDUNGSFALLDIAGRAMM:

UML (Unified Modelling Language) von Christian Bartl

UML 2.0 und die Modellierung von Realtime-Systemen

Mario Jeckle, Chris Rupp, Jürgen Hahn, Barbara Zengler, Stefan Queins. UML2 glasklar. UNIFIED MODELING LANGUAGE l HANSER

Verhaltensdiagramme. 3.5 Sequenzdiagramm 3.6 Kommunikationsdiagramm. Prof. Mario Jeckle

Techniken der Projektentwicklungen

Tag 7 Repetitorium Informatik (Java)

Kapitel Weitere UML-Diagrammtypen

Objektorientierte Modellierung

UML 2.0 Das umfassende Handbuch

Graphical User Interfaces

NACHRICHTENTECHNISCHER SYSTEME

Algorithmen und Datenstrukturen 06

Modellierungstipps für die Anwendungsfallmodellierung

Analyse und Modellierung von Informationssystemen

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Programmiertechnik Klassenvariablen & Instantiierung

Transkript:

Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 11. UML: Sequenzdiagramm 1

Motivation Es gibt verschiedene UML-Diagramme, um (noch programmiersprachenunabhängig) die Implementierung von Operationen zu modellieren Sequenzdiagramme: Berücksichtigen Nebenläufigkeit (kausale Unabhängigkeit) von Anweisungen Zustandsautomaten Aktivitätsdiagramme 2

Sequenzdiagramme veranschaulichen den Ablauf eines Teils der Anweisungen bei Abarbeitung einer Operation Einfachster Fall: Nur ein alternativer Ablauf ohne Verzweigungen und Wiederholungen wird modelliert Verallgemeinerungen: Mehrere alternative Abläufe zusammenfassen (mittels Verzweigungen und Wiederholungen) 3

Sequenzdiagramme zeigen grafisch die Interaktion zwischen mehreren Kommunikationspartnern Kommunikationspartner: Objekte, Klassen, Benutzer Interaktionen: Operationsaufrufe und Signale (Botschaften) Synchrone Botschaften: Sender wartet mit der eigenen Verarbeitung auf Beendigung der aufgerufenen Operation Asynchrone Botschaften: Sender wartet nicht mit der eigenen Verarbeitung auf Beendigung der aufgerufenen Operation Parallele Verarbeitung 4

Komponenten eines Sequenzdiagramms: Kommunikationspartner Aufrufer (Sender) und Ausführer (Empfänger) von Operationen Angegeben durch ihren Namen in einer rechteckigen Box Klassen: benutze Klassennamen Objekte: benutze Objektnamen oder :<Klassenname (anonymes Objekt) Benutzer hat den Namen Benutzer (User) Nach unten verlaufenden Lebenslinien ausgehend von jedem Kommunikationspartner Stellt Existenzzeit eines Kommunikationspartners dar Angegeben durch gestrichelte Linien 5

Komponenten eines Sequenzdiagramms: Botschaften Angegeben durch durchgezogenen Pfeil von Lebenslinie des Senders zur Lebenslinie des Empfänger Annotiert mit dem Namen (Operation: Benutze Prototyp) Werden von oben nach unten an die Lebenslinien notiert Interpretation: Obere Botschaft kausal vor unterer Botschaft 6

Komponenten eines Sequenzdiagramms: Synchrone Botschaft Durchgezogener Pfeil mit geschlossener Pfeilspitze Rückantwort erforderlich Botschaft kausal vor (oberhalb von) Rückantwort Rückantwort Gestrichelter Pfeil mit geschlossener Pfeilspitze Operationen: annotiert mit Rückgabeobjekt Asynchrone Botschaft: Durchgezogener Pfeil mit offener Pfeilspitze 7

Komponenten eines Sequenzdiagramms: Operationsabarbeitungsdauer Angegeben durch rechteckige Box, über die Lebenslinie gelegt Erlaubt Darstellung, dass bei der Abarbeitung einer Operation andere Operation aufgerufen werden Später: Kontrollstrukturen (Verzweigung, Wiederholung) 8

Komponenten eines Sequenzdiagramms: Anweisungen, die keiner Botschaft entsprechen, können nicht modelliert werden, z.b. Deklarationen Wertzuweisungen an Variablen primitiven Typs 9

Botschaften: Beispiele Synchrone Botschaften: Verwaltungsoperationen Ausnahmebehandlung (später) Asynchrone Botschaften: Konstruktoren Benutzeraktionen (Ereignisse) Aufrufe von Prozessen (später) 10

Operationsaufrufe und Kommunikationspartner Empfänger ist dasjenige Objekt/diejenige Klasse, für das/die die Operationen aufgerufen wird Die Operation gehört zum Verhalten des Objekts/der Klasse Empfänger von Klassenoperationen sind Klassen Empfänger sonstiger Operationen sind Objekte Sender ist dasjenige Objekt/diejenige Klasse, bei dem eine Operationsabarbeitung den Operationsaufruf verursacht Sender ist eine Klasse bei Abarbeitung einer Klassenoperation Sender ist ein Objekt bei Abarbeitung sonstiger Operationen 11

Allgemeine grafische Veranschaulichung Lebenslinie <synchron <synchron <Rückgabeobjek Aufruf bei Abarbeitung <asynchron Botschaft an sich selbst <synchron <asynchron <asynchron <synchron Operationsabarbeitungsdauer 12

Beispiel: ActionListener registrieren (Teil der Implementierung des Konstruktors des Fensters) User new MeinFenster() :MeinFenster close:button new Button() add(close) addactionlistener(this) 13

Beispiel: Auf ActionEvent reagieren (zeigt eine alternative Ausführung) User :Button :MeinFenster System onclick new ActionEvent() e:actionevent actionperformed(e) getactioncommand() s dispose() exit(0) 14

Beispiel: Daten von der GUI in die Fachkonzeptklasse übertragen (Ausschnitt) User speichern:button :MeinFenster onclick new ActionEvent() actionperformed(e) e:actionevent getactioncommand() s new Student() subject:student save() name:textfield gettext() s setname(s) 15

Kausalität in Sequenzdiagrammen: Senden vor Empfangen von Nachrichten Operationsbeginn vor Operationsende Obere vor untere Aktion Nicht kausal geordnete Aktionen sind kausal unabhängig Solche Aktionen heißen nebenläufig 16

Abstraktion in Sequenzdiagrammen: Modellierung in mehreren Phasen: Operationen werden Top-Down verfeinert / implementiert 17

Darstellung verschachtelter Operationsaufrufe der Form <methodeaussen(<methodeinnen())(übergabe von Parametern durch Operationsaufruf) Alternative 1: Verzichte auf Darstellung von <methodeinnen() <methodeaussen(<methodeinnen()) 18

Darstellung verschachtelter Operationsaufrufe der Form <methodeaussen(<methodeinnen())(übergabe von Parametern durch Operationsaufruf) Alternative 2: Zerlege Anweisung in zwei Botschaften <methodeinnen() o <methodeaussen(o) 19

Konsistenz mit Klassendiagramm beachten: Alle Klassen von Kommunikationspartnern müssen im Klassendiagramm vorkommen Alle Operationen müssen in der richtigen Klasse im Klassendiagramm vorkommen Operationen dürfen nur konsistent zu den Navigierbarkeiten der Assoziationen im Klassendiagramm aufgerufen werde (Wer eine Operation eines Objekts aufruft, muss dieses Objekt kennen!) Oft muss das Klassendiagramm nochmal angepasst werden 20

Es gibt etliche Operatoren zur Kombination von Sequenzdiagrammen: Alternativen Wiederholungen u.v.m. 21

Alternative: alt-umgebung zur Unterscheidung mehrerer alternativer Ausführungen in Abhängigkeit von Bedingungen alt <botschaft [Bedingung1] <botschaft <botschaft <botschaft [Bedingung2] 22

Alternative: opt-umgebung zur optionalen Ausführung in Abhängigkeit von einer Bedingung <botschaft opt <botschaft <botschaft <botschaft [Bedingung] 23

Beispiel: Auf ActionEvent reagieren User :Button :MeinFenster System onclick new ActionEvent() e:actionevent actionperformed(e) getactioncommand() s opt [s.equals( close )] dipose() exit( ( 0 24

Wiederholung: loop-umgebung für n-fache Wiederholung <botschaft loop(n) <botschaft <botschaft <botschaft 25

Wiederholung: loop-umgebung für Wiederholung in Abhängigkeit von einer Bedingung <botschaft loop <botschaft <botschaft <botschaft [Bedingung] 26

Beispiel: Akualisierung eines Containers und der GUI nach Datenspeicherung :MeinFenster professoren:professorencontainer addprofessor(subject) update() professorenliste:list removeall() getprofessor(k++) p tostring() s add(s) p:professor loop [0<=k<anzahlProfessoren] 27