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

Ähnliche Dokumente
0/78. Software-Entwurf. Andreas Zeller. Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken

Objektorientierte Analyse (OOA) Strukturmodellierung

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

UML -Klassendiagramme

Unified Modelling Language

Objektorientierte Modellierung (1)

Unified Modeling Language (UML)

Teil II: OOP und JAVA (Vorlesung 9)

Objektorientiertes Design

Muster in der Software Technik. Grundlegende Konzepte der Software Entwicklung und Objekt Orientierung

Software Engineering in der Praxis

4. Übung zu Software Engineering

Klassendiagramm. (class diagram)

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

Von der UML nach C++

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

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

Analyse und Modellierung von Informationssystemen

Tabellarische Kurzreferenz der UML-Elemente

UML (Unified Modelling Language) von Christian Bartl

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

Vorlesung Programmieren

UML - Sequenzdiagramm

UML. Weiteres Vorgehen im Projekt

OOA-Dynamische Konzepte

Das UML Benutzerhandbuch

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Objektorientierter Entwurf. Grundlagen des Software Engineerings

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

Objektorientiertes Programmieren

Begriffe 1 (Wiederholung)

Aufgabe 1: Strukturmodellierung mittels Klassendiagramm Wiederholen Sie das Kapitel aus der Vorlesung, das sich mit dem Klassendiagramm beschäftigt.

NACHRICHTENTECHNISCHER SYSTEME

SEQUENZDIAGRAMM. Christoph Süsens

Rückblick: Entity-Relationship-Modell

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

Klassen und ihre Beziehungen I: Assoziation und Aggregation

Media Engineering. Objektorientierte Modellierung. Verhaltensmodellierung. R. Weller University of Bremen, Germany cgvr.cs.uni-bremen.

Objektorientierung. Objekte

Vorlesung Informationssysteme

Geoinformation I Datenmodellierung

Software Engineering in der Praxis

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

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Assoziation und Aggregation

Software Engineering in der Praxis

Informatik II Modellierung Übung 5 Petrinetze/Klassendiagramme

Blöcke. Block Definitionsdiagramm. Dr. Beatrice Amrhein

5.2 Entity-Relationship-Modell

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Einführung in die Programmierung

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

UML - Tutorial. Hubert Baumgartner.

ANWENDUNGSFALLDIAGRAMM:

Objektorientierte Softwareentwicklung

Übungen Softwaretechnik I

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

10. Programmierungs-Phase: Objektorientierung Software Engineering

Einführung in die objektorientierte Programmierung

Sequenz- und Kommunikationsdiagrammen. Systemmodellierung mit SysML von Michel Manthey

Die Unified Modeling Language (UML)

Unified Modeling Language 2

SWE6 Slide 1. Software-Engineering. Vorlesung 6 vom Sebastian Iwanowski FH Wedel

Abschnitt 15: Unified Modeling Language (UML)

Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl

Analyse und Design mit U ML 2.3

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

Entwurf: Fortgeschrittene Konzepte

ÜBUNGEN ZUR OBJEKTORIENTIERTEN MODELLIERUNG

Analyse und Design mituml2.1

Softwaretechnik 1 Tutorium

Instanz ist objeket einer klasse. bsp: elefant Name gewicht alter Frisst scheißt fliegt. Assoziation haben?

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung. Grundkurs C++

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

Objekte und Klassen. Einführung der Begriffe Objekt und Attribut

3. Konzepte der objektorientierten Programmierung

Objektorientierte Programmierung OOP

Das UML Benutzerhandbuch

Objektorientierte Programmierung

Glossar für das Fach Informatik

Software-Engineering

6. Globalübung (zu Übungsblatt 8)

Objektorientierte Programmierung

Kurzeinführung in UML

7. Konkretisierungen im Feindesign. 7.1 Zustandsdiagramme 7.2 Object Constraint Language

OOSE11 OOA: Klassen- und Objektdiagramme

Einführung in die Programmierung mit Java

OOSE 9 OOA: Klassen und Objektdiagramme (Hörsaalübung)

Objektorientierte Analyse am Beispiel Silent Kitchen Company

Informatik IIa: Modellierung

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

Vorlesung Informatik II

Transkript:

Software Engineering, SoSe 07, WSI, D. Huson, May 7, 2007 17 4 Modellierung in UML Nach einer Vorlesung von Prof. Andreas Zeller, Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken. 4.1 Objektorientierte Modellierung Wir betrachten drei Aspekte des Softwareentwurfes mittels UML: Objekt-Modell: Welche Objekte benötigen wir? Welche Merkmale besitzen diese Objekte? (Attribute, Methoden) Wie lassen sich diese Objekte klassifizieren? (Klassenhierarchie) Welche Assoziationen bestehen zwischen den Klassen? Sequenzdiagramm: Wie wirken die Objekte global zusammen? Zustandsdiagramm: In welchen Zuständen befinden sich die Objekte? 4.2 Objekt-Modell: Klassendiagramm Darstellung der Klassen als Rechtecke, unterteilt in Klassenname, Attribute - möglichst mit Typ (meistens ein Klassenname) Methoden - möglichst mit Signatur Darstellung der Vererbungshierarchie - ein Dreieck (Symbol: ) verbindet Oberklasse und Unterklassen. 4.2.1 Beispiel für Vererbung: Konten Ererbte Methoden (wie hier: open(), deposit()) werden in der Unterklasse nicht mehr gesondert aufgeführt. Definitionen in der Unterklasse überschreiben die Definition in der Oberklasse (hier: may withdraw())

18 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), May 7, 2007 4.2.2 Abstrakte Klassen und Methoden Klassen, von denen keine konkreten Objekte erzeugt werden können, heißen abstrakte Klassen. Sie verfügen meist über eine oder mehrere abstrakte Methoden, die erst in Unterklassen realisiert werden. Eine konkrete Klasse ist eine Klasse, von der konkreten Objekte erzeugt werden können. Beispiel: Ein Digitales Abspielgerät ist ein abstrakter Oberbegriff für konkrete Realisierungen - z.b. ein CD- oder ein MP3-Spieler. Kursiver Klassen-/Methodenname: abstrakte Klasse/Methode 4.2.3 Initialwerte und Zusicherungen Die Attribute eines Objekts können mit Initialwerten versehen werden. Diese gelten als Vorgabe, wenn bei der Konstruktion des Objekts nichts anderes angegeben wird. Mit Zusicherungen werden Bedingungen an die Attribute spezifiziert. Hiermit lassen sich Invarianten ausdrücken - Objekt-Eigenschaften, die stets erfüllt sein müssen. Beispiel: Die Zusicherungen garantieren, daß Kreise immer einen positiven Radius haben und Rechtecke positive Kantenlängen. 4.3 Objekt-Modell: Assoziationen Allgemeine Assoziationen Verbindungen zwischen nicht-verwandten Klassen stellen Assoziationen (Relationen) zwischen

Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), May 7, 2007 19 Klassen dar Diese beschreiben den inhaltlichen Zusammenhang zwischen Objekten Durch Multiplizitäten wird die Anzahl der assoziierten Objekte eingeschränkt. 4.3.1 Multiplizitätsangaben Ein Rechnerhändler hat mehrere Kunden, ein Zusteller hat mehrere Kunden, aber ein Rechnerhändler hat nur einen Zusteller: Beispiel: Professoren haben mehrere Studenten, Studenten haben mehrere Professoren: 4.3.2 Beispiel für Objektbeziehungen Darstellung von Exemplaren (Objekten) mit unterstrichenem Objektnamen; konkrete Werte für die Attribute.

20 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), May 7, 2007 4.3.3 Aggregation Eine häufig auftretende und deshalb mit besonders markierte Assoziation ist die hat-beziehung, die die Hierarchie zwischen einem Ganzen und seiner Teile ausdrückt. Beispiel: Ein Pkw hat 3-4 Räder: Beispiel: Ein Unternehmen hat 1..* Abteilungen mit jeweils 1..* Mitarbeitern: Ein Aggregat kann (meistens zu Anfang) auch ohne Teile sein: die Multiplizität 0 ist zulässig. Gewöhnlich ist es jedoch Sinn eines Aggregats, Teile zu sammeln. Bei einem Aggregat handelt das Ganze stellvertretend für seine Teile, d.h. es übernimmt Operationen, die dann an die Einzelteile weiterpropagiert werden. Beispiel: Methode berechneumsatz() in der Klasse Unternehmen, die den Umsatz der Abteilungen aufsummiert. 4.3.4 Komposition Ein Sonderfall der Aggregation ist die Komposition, markiert mit. Eine Komposition liegt dann vor, wenn das Einzelteil vom Aggregat existenzabhängig ist - also nicht ohne das Aggregat existieren kann. Beispiel: Eine Rechnungsposition gehört immer zu einer Rechnung: Beispiel: Ein Buch besteht aus Inhaltsverzeichnis, mehreren Kapiteln, Index; ein Kapitel besteht aus mehreren Abschnitten usw.:

Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), May 7, 2007 21 4.3.5 Beispiel: Kreiseck Ein Kreiseck besteht aus einem übereinander gelegten Quadrat und einem Kreis: Modellierung als Klasse SquareCircle, die sowohl einen Kreis als auch ein Quadrat enthält: 4.3.6 Ergänzungen Ein Einzelteil kann immer nur von einem Aggregat existenzabhängig sein. Eine Klasse kann auch als Komposition aller ihrer Attribute aufgefaßt werden. In vielen Programmiersprachen werden Aggregationen durch Referenzen (Zeiger auf Objekte) realisiert, Kompositionen jedoch durch die Werte selbst. 4.4 Sequenzdiagramme Ein Sequenzdiagramm gibt den Informationsfluß zwischen einzelnen Objekten wieder mit Betonung des zeitlichen Ablaufs.

22 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), May 7, 2007 Objekte werden mit senkrechten Lebenslinien dargestellt; die Zeit verläuft von oben nach unten. Der Steuerungsfokus (breiter Balken) gibt an, welches Objekt gerade aktiv ist. Pfeile ( Nachrichten ) kennzeichnen Informationsfluß - z.b. Methodenaufrufe (durchgehende Pfeile) und Rückkehr (gestrichelte Pfeile). 4.4.1 Beispiel: Vergrößern eines Kreisecks 4.5 Zustandsdiagramme Ein Zustandsdiagramm zeigt eine Folge von Zuständen, die ein Objekt im Laufe seines Lebens einnehmen kann und aufgrund welcher Ereignisse Zustandsänderungen stattfinden. Ein Zustandsdiagramm zeigt einen endlichen Automaten. 4.5.1 Zustandsübergänge Zustandsübergänge werden in der Form Ereignisname[Bedingung]/Aktion notiert. Hierbei ist Ereignisname der Name eines Ereignisses (typischerweise ein Methodenaufruf); Bedingung die Bedingung, unter der der Zustandsübergang stattfindet (optional) Aktion eine Aktion, die beim Übergang ausgeführt wird (optional) Auch Zustände können mit Aktionen versehen werden: Das Ereignis entry kennzeichnet das Erreichen eines Zustands; exit steht für das Verlassen eines Zustands. 4.5.2 Beispiel: Flugreservierung Wird ein Flug eingerichtet, ist noch nichts reserviert. Die Aktion ruecksetzen() sorgt dafür, daß die Anzahl der freien und reservierten Plätze zurückgesetzt wird.

Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), May 7, 2007 23 4.6 Fallstudie: Tabellenkalkulation Eine Tabelle besteht aus m n Zellen Zellen sind entweder leer oder haben einen Inhalt Inhalte sind Zahlen, Texte oder Formeln Zu einem Inhalt gibt es mehrere Formeln (die die Inhalte ansprechen) Zu einer Formel gibt es mehrere Inhalte (die als Operanden in der Formel auftreten) 4.6.1 Beispiel für Objektbeziehungen 4.6.2 Zustandsdiagramm Die Methode belege der Klasse Inhalt prüft, ob sich der Wert geändert hat. Wenn ja, benachrichtigt sie mit benachrichtige() alle Formelobjekte, in denen der Inhalt als Operand vorkommt.

24 Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), May 7, 2007 4.6.3 Sequenzdiagramm Beispiel: Die Tabelle sei belegt wie beschrieben; nun ändern wir den Wert der Zelle A1 von 1 auf 5. 4.7 Zusammenfassung Wir haben drei Sorten von UML Diagrammen kennengelernt, mit denen man wichtige Aspekte des Softwareentwurfes modellieren kann: Objekt-Modell: Welche Objekte benötigen wir? Welche Merkmale besitzen diese Objekte? (Attribute, Methoden) Wie lassen sich diese Objekte klassifizieren? (Klassenhierarchie) Welche Assoziationen bestehen zwischen den Klassen? Sequenzdiagramm: Wie wirken die Objekte global zusammen? Zustandsdiagramm: In welchen Zuständen befinden sich die Objekte?