Objektorientierte Software-Entwicklung



Ähnliche Dokumente
Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Unified Modeling Language (UML)

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

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

RUP Analyse und Design: Überblick

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Klassendiagramm. (class diagram)

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Software-Engineering SS03. Zustandsautomat

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Use Cases. Use Cases

Kapitel 6. Vererbung

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Software Engineering Klassendiagramme Einführung

Objektorientierte Programmierung OOP

Kapitel 6. Vererbung

Objektorientierte Programmierung. Kapitel 12: Interfaces

OO Softwareentwicklung

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick

Kapitel 6. Vererbung

Orientierte Modellierung mit der Unified Modeling Language

Assoziation und Aggregation

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

SWE5 Übungen zu Software-Engineering

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Objektorientierte Konzepte und Notation in UML. Objekt Klasse Attribut Operation

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Software Engineering Klassendiagramme weiterführende Konzepte

Einführung in die Programmierung für NF

Vorlesung "Software-Engineering"

3 Objektorientierte Konzepte in Java

Übung 4. Musterlösungen

SEQUENZDIAGRAMM. Christoph Süsens

Client-Server-Beziehungen

Klassenbeziehungen & Vererbung

7. Analyse-Phase: Datenmodellierung Software Engineering

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Grundbegriffe der Informatik

SEP 114. Design by Contract

Abschnitt 16: Objektorientiertes Design

Motivation. Motivation

Java Kurs für Anfänger Einheit 5 Methoden

Vgl. Oestereich Kap 2.7 Seiten

Übungen Workflow Management. Blatt 2

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

3. Konzepte der objektorientierten Programmierung

Softwaretechnik (Allgemeine Informatik) Überblick

Von der UML nach C++

5. Abstrakte Klassen

Datenbankmodelle 1. Das Entity-Relationship-Modell

Objektorientierte Programmierung

Grundlagen von Python

6. Modellierung von Informationssystemen. 6.1 Einleitung 6.2 Konzeptuelles Modell 6.3 OASIS Spezifikation 6.4 Execution Model 6.

Kapitel 4. Monitore und wechselseitiger Ausschluss

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

Arbeiten mit UMLed und Delphi

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

4. AuD Tafelübung T-C3

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Kapitel 04 Strukturiertes Entity-Relationship-Modell. 4 Strukturiertes Entity-Relationship- Modell

a) In der Aufgabenstellung war ein möglichst einfaches Klassendiagramm gefordert. Abb. 1 zeigt eine mögliche Lösung. * * * Aufbau 1..

4. Übung zu Software Engineering

1 Mathematische Grundlagen

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Client-Server Beziehungen

Einführung in Petri-Netze. Modellierung von Abläufen und Prozessen (1) Abhängigkeitsgraphen: Motivation. Petri-Netze

Grundlagen der Softwaretechnik

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

Prinzipien Objektorientierter Programmierung

GRAFISCHE BENUTZERSCHNITTSTELLEN

Produktskizze. 28. November 2005 Projektgruppe Syspect

VBA-Programmierung: Zusammenfassung

VU Objektorientierte Modellierung Übung 1

Übungen zur Softwaretechnik

Software Engineering in der Praxis

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Java: Vererbung. Teil 3: super()

Kapitel 2 Objektorientierte Modellierungstechniken

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Auktion name adresse pseudonym adresse /bewertungszahl. Gebot. höhe zeitpunkt bieter. initiiert

Vererbung & Schnittstellen in C#

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Programmieren in Java

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

DB2 Kurzeinführung (Windows)

Einführung in die Java- Programmierung

Objektorientierte Programmierung

6.2 Petri-Netze. kommunizierenden Prozessen in der Realität oder in Rechnern Verhalten von Hardware-Komponenten Geschäftsabläufe Spielpläne

Darstellung von Assoziationen

ISA Server 2004 Erstellen eines neuen Netzwerkes - Von Marc Grote

Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1

WhiteStarUML Tutorial

Objektorientierte Softwareentwicklung

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Einführung in die Programmierung mit Java. Hörsaalübung

Transkript:

Objektorientierte Software-Entwicklung Priv.- Doz Dr. Rolf Hennicker 04.10.2002

Kapitel 2 Objektorientierte Modellierungstechniken

Kapitel 2 Objektorientierte Modellierungstechniken 2 Ziele Klassendiagramme in UML erstellen können. Objektdiagramme in UML erstellen können. Das Vererbungsprinzip verstehen, insbesondere abstrakte Klassen und Operationen Schnittstellen dynamische Bindung Flache und hierarchische Zustandsdiagramme in UML erstellen können (einschl. Aktivitätsdiagramme). Zustände, Ereignisse und Transitionen verstehen.

Kapitel 2 Objektorientierte Modellierungstechniken 3 Grundidee Modellierung dient dazu, ein System zu verstehen, bevor es gebaut wird. Wesentliches Prinzip Abstraktion (auf wesentliche Aspekte konzentrieren, keine Details) Es werden i.a. verschiedene Sichten auf ein System modelliert: Statisches Modell: beschreibt strukturelle und datenbezogene Eigenschaften Dynamisches Modell: beschreibt das Verhalten der Objekte, deren Zustandsänderungen und Interaktionen. Notation UML (Unified Modelling Language), 1997 Version 1.0 (Booch, Rumbaugh, Jacobson), aktuelle Version 1.4

2.1 Statisches Modell (Objektmodell) 4 2.1 Statisches Modell (Objektmodell) 2.1.1 Klassen und Objekte Klassen Allgemeine Form: Beispiel: Klassenname operation operation(argumentenliste) operation(argumentenliste): Typ attribut attribut: Typ attribut: Typ = Defaultwert Kunde name: String adresse: String umsatz: Real getname(): String umsatzerhoehen(n: Real) Kurzform: Klassenname

2.1 Statisches Modell (Objektmodell) 5 Objekte Allgemeine Form: Beispiel: Objektname:Klassenname attribut = Wert attribut: Typ = Wert :Kunde name = "Fritz Meier" adresse = "München" umsatz = 4590,30

2.1 Statisches Modell (Objektmodell) 6 Bemerkungen Typen sind Standarddatentypen (Boolean, Integer, Real, String) oder Klassennamen. In der Analysephase sollten als Typen von Attributen nur Standardtypen verwendet werden. Operationen mit Ergebnistyp liefern nach Ausführung einen Wert dieses Typs. Der Rückgabewert kann auch ein Objekt sein. Operationen ändern i.a. den Zustand eines Objekts. Operationen, die den Zustand nicht ändern, nennt man Queries.

2.1 Statisches Modell (Objektmodell) 7 Weiterführende Begriffe und Notationen Ein Attribut, das zu jedem Zeitpunkt bei jedem existierenden Objekt der Klasse denselben Wert hat, heißt Klassenattribut und wird in UML unterstrichen. Beispiel: Kunde minumsatz: Real... Eine Operation, die vom Zustand konkreter Objekte unabhängig ist, heißt Klassenmethode und wird in UML unterstrichen. Beispiel: MathLib sin(x: Real): Real cos(x: Real): Real...

2.1 Statisches Modell (Objektmodell) 8 2.1.2 Assoziationen und Objektbeziehungen Eine Objektbeziehung (Link) ist eine semantische (physikalische oder konzeptionelle) Verbindung zwischen Objekten. Eine Assoziation beschreibt eine Menge gleichartiger Beziehungen zwischen Objekten bestimmter Klassen. Assoziationen Allgemeine Form: Klasse attribute operationen Assoziationsname Klasse attribute operationen Beispiel: Kunde bucht Reise name ziel

2.1 Statisches Modell (Objektmodell) 9 Objektbeziehungen Beispiel: :Kunde bucht :Reise name = "Fritz Meier" ziel = "Rom" bucht :Kunde bucht :Reise name = "Maria Müller" ziel = "Kairo" Ein UML-Diagramm mit Klassen und Assoziationen (und Vererbung) heißt Klassendiagramm. Ein UML-Diagramm mit Objekten und Objektbeziehungen heißt Objektdiagramm (oder Instanzendiagramm). Es stellt einen augenblicklichen Systemzustand ( Snapshot ) dar.

2.1 Statisches Modell (Objektmodell) 10 Multiplizitäten Geben an, wieviele Objekte einer Klasse mit wievielen Objekten einer (meist anderen) Klasse gemäß einer Assoziation in Beziehung stehen können. Notation: Bedeutung: Jedes Objekt von A steht in Beziehung mit A 1 B genau einem Objekt von B A 0..1 B keinem oder einem Objekt von B A 1..* B einem oder mehreren Objekten von B A * B keinem oder einem oder mehreren Objekten von B A 2..4, 7 B 2 bis 4 oder 7 Objekten von B Beispiel: Kunde * bucht * Reise

2.1 Statisches Modell (Objektmodell) 11 Assoziationsrollen Beschreiben, welche Funktionen die Objekte einer Klasse in einer Assoziation einnehmen. Beispiel: * mitarbeiter Person 1..* arbeitetbei 0..1 angestellte arbeitgeber Firma 0..1 chef Bemerkung: Assoziationsnamen und Rollennamen können weggelassen werden. Rollennamen sind dann implizit durch die kleingeschriebenen Klassennamen (evtl. im Plural) vorhanden.

2.1 Statisches Modell (Objektmodell) 12 Mehrstellige Assoziationen Verbinden drei oder mehr Klassen. Darstellung: A k l B m C Die Multiplizität einer Rolle in einer n-stelligen Assoziation spezifiziert, wieviele Objekte mit dieser Rolle mit fest gegebenen (fixierten) n-1 Objekten der anderen Klassen in Beziehung stehen können. Beispiel: SW Entwickler * verwendet 0..1 Programmiersprache * Projekt

2.1 Statisches Modell (Objektmodell) 13 Zugriff auf die Merkmale eines Objekts Wird durch die. -Notation ausgedrückt. Beispiel: Person alter: Integer radfahren() arbeitetbei 0..1 arbeitgeber Firma alter = 30 p:person arbeitetbei arbeitgeber Kaufhaus X p.alter = 30; p.arbeitgeber = Kaufhaus X; p.radfahren(); //Aufruf der Operation "radfahren" für das Objekt p

2.1 Statisches Modell (Objektmodell) 14 Aggregation Spezielle Form der Assoziation, die eine Gesamtheit-Teil -Beziehung ausdrückt. z.b. ICE-Lok besitzt 6 Motoren (physikalisch), Stundenplan umfasst mehrere Vorlesungen (konzeptionell) Darstellung: A Aggregationsklasse A B Teileklassen B1 B2... Bn

2.1 Statisches Modell (Objektmodell) 15 Komposition Spezielle Form der Assoziation: das Teil ist existenzabhängig vom Ganzen. Darstellung (Beispiel): Window 1 1 2 Header Body Scrollbar

2.1 Statisches Modell (Objektmodell) 16 Qualifizierte Assoziation Eine qualifizierte Assoziation unterteilt die Menge der Objekte auf einer Seite der Assoziation in Partitionen. Qualifizierer haben (wie Attribute) einen Typ, der auch eine Klasse sein kann. Beispiele: (1) Bank kontonr: Integer 0..1 konten Konto (2) Bank konto: Konto 1 Kunde (3) Zug klasse: Bahnklasse * Passagier

2.1 Statisches Modell (Objektmodell) 17 2.1.3 Vererbung Relation zwischen einer allgemeineren Klasse (Ober- bzw. Superklasse) und einer spezielleren Klasse (Unter- bzw. Subklasse). Jedes Objekt der Subklasse ist auch ein Objekt der Oberklasse. Beispiel: Stoppuhr, Standuhr, Armbanduhr, Digitaluhr sind Uhren Darstellung: A Oberklasse A B Unterklassen B1 B2... Bn A ist eine Generalisierung von B. B ist eine Spezialisierung von A.

2.1 Statisches Modell (Objektmodell) 18 Substitutionsprinzip Immer wenn ein Objekt einer Oberklasse erwartet wird, kann ein Objekt einer Unterklasse von A eingesetzt werden. Beispiel: Hafen 0..1 * flotte Boot geschwindigkeit Motorboot leistung Segelboot segelfläche Kieler Hafen m0: Motorboot s0: Segelboot Jede Unterklasse besitzt (erbt) alle Attribute, Assoziationen und Operationen der Oberklasse und kann eigene hinzufügen.

2.1 Statisches Modell (Objektmodell) 19 Abstrakte Klasse Klasse, von der keine Instanzen erzeugt werden können. Operation ohne Implementierung. Abstrakte Operation Beachte: Eine Klasse mit mindestens einer abstrakten Operation ist abstrakt. Beispiel: Boot {abstract} geschwindigkeit druckeinfo() {abstract} Motorboot Segelboot print geschwindigkeit; print leistung; leistung druckeinfo() segelfläche druckeinfo() print segelfläche; print leistung;

2.1 Statisches Modell (Objektmodell) 20 Template Operation Operation, deren Implementierung eine oder mehrere abstrakte Operationen aufruft. Beispiel: Boot {abstract} geschwindigkeit druckeinfo() druckedetails() {abstract} print geschwindigkeit; druckedetails(); Motorboot Segelboot print leistung; leistung druckedetails() segelfläche druckedetails() print segelfläche;

2.1 Statisches Modell (Objektmodell) 21 Überschreiben Eine in einer Oberklasse implementierte Operation wird in einer Unterklasse neu implementiert (redefiniert). Bemerkung: Durch Überschreiben soll die Semantik einer Operation nicht verändert werden. Schnittstellen Sind abstrakte Klassen, deren sämtliche Operationen abstrakt sind und die keine Attribute besitzen. Darstellung: <<interface>> I operation_1() operation_2()...

2.1 Statisches Modell (Objektmodell) 22 Realisierung und Benutzung von Schnittstellen Schnittstellen bieten Dienste an, die von verschiedenen Klassen realisiert (implementiert) werden können und die von anderen Klassen genutzt werden können. Beispiel: <<interface>> I <<uses>> A operation_1() operation_2()... <<realizes>> Class... operation_1() operation_2()...

2.1 Statisches Modell (Objektmodell) 23 (Subtyp-)Polymorphismus Eine Operation einer Oberklasse (bzw. einer Schnittstelle) kann für alle Objekte von Unterklassen (bzw. realisierenden Klassen) aufgerufen werden. Beispiel: Hafen druckealleinfos() flotte * <<interface>> Boot druckeinfo() for all b in flotte do b.druckeinfo(); Motorboot geschwindigkeit leistung druckeinfo() Segelboot geschwindigkeit segelfläche druckeinfo()

2.1 Statisches Modell (Objektmodell) 24 Dynamisches Binden Beispiel: Boot b; Motorboot m; Segelboot s; int x;... "x einlesen"... if (x > 0) b = m; else b = s; (*) b.druckeinfo(); Zur Programmierzeit kann nicht festgestellt werden, welche Implementierung von druckeinfo() an der Stelle (*) gültig ist. Zur Laufzeit wird festgestellt, welchen Typ das mit b bezeichnete Objekt hat. Der in der entsprechenden Klasse implementierte Code wird dann ausgeführt.

2.1 Statisches Modell (Objektmodell) 25 Mehrfachvererbung Eine Subklasse hat mehr als eine (direkte) Oberklasse. Beispiel: Boot Motorboot Segelboot Motorsegelboot Vorteil: Zusammenfügen von Informationen aus mehreren Quellen.

2.1 Statisches Modell (Objektmodell) 26 Problem: Mögliche Konflikte... B op()... C op() D Welche Implementierung von op gilt für D-Objekte? Konfliktauflösung: D implementiert op neu durch Überschreiben oder op ist in B oder in C abstrakt.

2.1 Statisches Modell (Objektmodell) 27 Bemerkungen In Java ist Mehrfachvererbung nur bei Verwendung von Schnittstellen möglich. B <<interface>> C D Mehrfachvererbung von Klassen muss beim Entwurf aufgelöst werden, wenn die Zielsprache keine Mehrfachverebung unterstützt.

2.1 Statisches Modell (Objektmodell) 28 Vorteile des Vererbungsprinzips Konzeptionelle Vereinfachung durch Zusammenfassen gemeinsamer Merkmale verwandter Klassen in einer Oberklasse (Generalisierung) Wiederverwendung bereits vorhandener Klassen durch Subklassenbildung (Spezialisierung) Einfache Erweiterbarkeit von Vererbungshierarchien durch Hinzunahme von Subklassen (ohne Änderung der Umgebung)

Kapitel 2 Objektorientierte Modellierungstechniken 29 Zusammenfassung von Abschnitt 2.1 Klassendiagramme werden aus Klassen (einschl. Schnittstellen), Assoziationen und Vererbungsbeziehungen gebildet. Objektdiagramme werden aus Objekten und Objektbeziehungen gebildet. Mit Hilfe des Vererbungskonzepts kann spezialisiert und generalisiert werden. Es gilt das Substitutionsprinzip. Durch dynamische Bindung wird zur Laufzeit festgestellt, welchen Typ ein Objekt hat und der dementsprechende Code ausgeführt.

2.2 Dynamische Modellierung 30 Techniken 2.2 Dynamische Modellierung Interaktionsdiagramme: Beschreiben die Kommunikation und die Zusammenarbeit von mehreren Objekten. Zustandsdiagramme: Beschreiben das Verhalten eines Objekts einer bestimmten Klasse während seiner Lebenszeit. Aktivitätsdiagramme: Beschreiben den Fluss von (evtl. parallelen) Aktivitäten.

2.2 Dynamische Modellierung 31 Zustände Die aktuellen Attributwerte und Beziehungen eines Objekts zu einem Zeitpunkt bestimmen den aktuellen Objektzustand. Objektzustände, in denen Objekte qualitativ die gleichen Reaktionen auf ankommende Ereignisse haben, sind äquivalent. Sie werden zu einem (abstrakten) Zustand zusammengefasst. Beispiel: 4 Briefzustände Standard Kompakt Groß Maxi In jedem einzelnen Zustand wird dieselbe Briefmarke aufgeklebt.

2.2 Dynamische Modellierung 32 Ereignisse Ereignis = Vorfall, der zu einem bestimmten Zeitpunkt stattfindet. Ereignis 1 Ereignis 2 Ereignis 3 Zustand A Zustand B Arten von Ereignissen Empfang eines Signals: signal event (z.b. Button klicken, Telefonhörer abheben) Aufruf einer Operation: call event (z.b. mykonto.einzahlen(1000)) Eine Bedingung wird wahr: change event (z.b. when (temperature < 0)) Ablauf einer Zeit: time event (z.b. after(5 sec)) Beendigung einer Aktivität: completion event (z.b. WWW-Seite ist geladen) Zeit Beachte: Ereignisse haben keine Dauer (im Gegensatz zu Zuständen)!

2.2 Dynamische Modellierung 33 Gerichteter Graph mit Knoten = Zustände Kanten = Transitionen Flache Zustandsdiagramme Transition Beschreibt den durch ein Ereignis verursachten neuen Zustand. Übergang von einem alten in einen Ereignis ZA ZB

2.2 Dynamische Modellierung 34 Beispiel: Automatikgetriebe Leerlauf rück leer Rückwärts vor leer leer leer hoch hoch 1. Gang runter 2. Gang runter 3. Gang Bemerkungen Ein Ereignis, für das es von einem Zustand aus keine Transition gibt, wird in diesem Zustand ignoriert (bzw. es kann oder darf in diesem Zustand nicht auftreten, da es keine sinnvolle Verarbeitung gibt). Das Symbol Das Symbol Ablaufs). bezeichnet den Anfangszustand ( Pseudozustand ). bezeichnet einen Endzustand (zumeist nach Beendigung eines

2.2 Dynamische Modellierung 35 Wächter (guards) Eine Bedingung (boolescher Ausdruck) kann als Wächter für eine Transition verwendet werden. Die Transition feuert, wenn das Ereignis eintritt und die Bedingung erfüllt ist. Syntax: Ereignis[Wächterbedingung] ZA ZB Aktion Atomare, nicht unterbrechbare Tätigkeit. Kann als Reaktion auf ein Ereignis erfolgen. Syntax: Ereignis/Aktion ZA ZB Beachte: Aktionen werden meist in der Form von Statements (Anweisungen) geschrieben.

2.2 Dynamische Modellierung 36 Beispiel: Wächter und Aktionen einzahlen(b)[saldo+b<0]/saldo:=saldo+b Konto überzogen auszahlen(b)[saldo b<0]/saldo:=saldo b einzahlen(b)[saldo+b>=0]/saldo:=saldo+b Konto ausgeglichen einzahlen(b)/saldo:=saldo+b auszahlen(b)[saldo b>=0]/saldo:=saldo b

2.2 Dynamische Modellierung 37 Insbesondere gibt es: Sendeaktionen: Zielobjekt.Ereignis(Argumente) zusammengesetzte Aktionen: Aktion1; Aktion2 Beachte: Eine zusammengesetzte Aktion ist weiterhin atomar.

2.2 Dynamische Modellierung 38 Allgemeine Syntax von Transitionen Ereignis(Argumente)[Bedingung]/Aktion ZA ZB Allgemeine Syntax von Zuständen Zustandsname entry/aktion exit/aktion do/aktivität Ereignis/Aktion defer/verzögerte Ereignis Eingangsaktion Ausgangsaktion interne Transition: Ereignis löst keinen Zustandsübergang aus, entry/exit Aktionen werden nicht durchgeführt

2.2 Dynamische Modellierung 39 Eingangs-/Ausgangsaktionen Werden jeweils beim Eintritt bzw. Verlassen eines Zustands durchgeführt. Aktivität Tätigkeit, die Zeit in Anspruch nimmt und durch ein Ereignis unterbrochen werden kann. Wird von einem Objekt in einem bestimmten Zustand ausgeführt. Wird die Aktivität von selbst beendet, dann erfolgt ein Completion Event. W [not B] Z do/activity [B] V e X

2.2 Dynamische Modellierung 40 Beispiel: Telefon Klingelnd do/läuten after(1 min) Bereit abheben einhängen Verbunden

2.2 Dynamische Modellierung 41 Verzögertes Ereignis Z defer/e Erfolgt das Ereignis e im Zustand Z, dann wird es in eine Warteschlange des Objekts für eingehende Ereignisse ( event queue ) gestellt und erst dann verarbeitet, wenn ein Zustand erreicht ist, in dem es eine Transition mit diesem Ereignis gibt. Beispiel: Einelementiger Puffer leer defer/get put voll defer/put get

2.2 Dynamische Modellierung 42 Hierarchische Zustandsdiagramme Ein Zustand kann in Unterzustände verfeinert werden. 1. Sequentielle Unterzustände Leerlauf rueck Rückwärts vor leer leer Vorwärts hoch hoch 1. Gang 2. Gang 3. Gang runter runter Transition in einen Oberzustand (hier: Vorwärts) bedeutet Transition in den Anfangszustand des geschachtelten Diagramms (hier: 1. Gang). Transition aus einem Oberzustand bedeutet Transition ausgehend von jedem Unterzustand. Vorteil: Übersichtlichere Darstellung, Abstraktion

2.2 Dynamische Modellierung 43 2. Parallele Unterzustände Z A a B b C c D X E e fail Y Ein Objekt befindet sich gleichzeitig in mehreren Unterzuständen. Beim Eintritt in den Oberzustand befindet sich das Objekt gleichzeitig in den Anfangszuständen der einzelnen (parallelen) Regionen. Der Oberzustand wird verlassen, wenn in jeder Region ein Endzustand erreicht ist oder wenn eine Transition direkt nach außen führt.

2.2 Dynamische Modellierung 44 Aktivitätsdiagramme Spezielle Zustandsdiagramme, in denen (fast) nur Zustände, die Aktivitäten repräsentieren und Completion Events, die den Abschluss einer Aktivität anzeigen (evtl. mit Bedingung) vorkommen. Können zur Beschreibung der Abläufe von Geschäftsprozessen in Unternehmen Anwendungsfällen (Use Cases) oder von Operationen und Threads verwendet werden.

2.2 Dynamische Modellierung 45 Beispiel: Geschäftsprozess Auftragsbearbeitung Auftrag annehmen Synchronisations balken Rechnung stellen Artikel beschaffen Bezahlen Ausliefern

2.2 Dynamische Modellierung 46 Zusammenfassung von Abschnitt 2.2 Zustandsdiagramme beschreiben das Verhalten eines Objekts einer bestimmten Klasse während seiner Lebenszeit. Eine Transition beschreibt den durch ein Ereignis verursachten Zustandsübergang. Ereignisse sind im Gegensatz zu Zuständen zeitlos. Auf ein Ereignis kann eine (als zeitlos idealisierte) Aktion folgen. Aktivitäten dauern eine Zeit und werden von einem Objekt in einem bestimmten Zustand ausgeführt ( action state ). Zustandsdiagramme können hierarchisch strukturiert werden. Wir unterscheiden sequentielle Unterzustände parallele Unterzustände Aktivitätsdiagramme beschreiben Abläufe. Die Zustände repräsentieren Aktivitäten. MMISS: Kurztitel, October 23, 2002