Software Entwicklung 2. UML in der Analyse



Ähnliche Dokumente
I SWT - Definitionsphase - Objektorientierte Sicht 2

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

Objektorientierte Programmierung OOP

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

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

2 Konzepte und Notation der objektorientierten Analyse (Statische Konzepte)

Unified Modeling Language (UML)

Assoziation und Aggregation

SWE5 Übungen zu Software-Engineering

Objektorientierte Konzepte und Notation in UML. Objekt Klasse Attribut Operation

Software Engineering Interaktionsdiagramme

Software Engineering Klassendiagramme weiterführende Konzepte

SEQUENZDIAGRAMM. Christoph Süsens

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

Klassendiagramm. (class diagram)

3. Konzepte der objektorientierten Programmierung

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

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

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

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

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

4. AuD Tafelübung T-C3

PRÜFUNG. Grundlagen der Softwaretechnik

Objektorientierte Programmierung

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

Software-Engineering 2. Übungen zur Wiederholung. IT works. Metris GmbH

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

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Grundlagen der Softwaretechnik

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Klassenbeziehungen & Vererbung

Einführung in die Java- Programmierung

RUP Analyse und Design: Überblick

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

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

Übungen zur Softwaretechnik

Datenbanken. Erstellen des Semantischen Modells. Manuel Friedrich. Schiller-Gymnasium Hof

Programmieren in Java

Analyse und Entwurf objektorientierter Systeme

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Abschnitt 12: Strukturierung von Java-Programmen: Packages

How to do? Projekte - Zeiterfassung

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

1 Mathematische Grundlagen

Übungen Softwaretechnik I

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

BEISPIELKLAUSUR Softwareentwicklung:

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Kurzanleitung für Verkäufer

Objektorientierung: Klassen und Objekte

Lehrer: Einschreibemethoden

3 Objektorientierte Konzepte in Java

Objektorientierte Programmiersprachen

Gemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken

SWT MN Vorlesung Übungsblatt Hausaufgaben und Hörsaalübungen zum Themenbereich UML-Modellierung mit Rollen und OOA-Muster

Der Kundenmanager. Der Kundenmanager der Firma AED-SICAD ist ein Bestandteil des Web Order System (WOS) und unterscheidet zwischen folgenden Kunden:

Schnelleinstieg in die (cs) AuftragPro

Use Cases. Use Cases

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

Dokumentenverwaltung

Softwareentwicklungspraktikum Sommersemester Grobentwurf

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

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

Vorlesung Programmieren

PKV- Projektanlage Assistent

Produktskizze. 28. November 2005 Projektgruppe Syspect

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

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!.

Vgl. Oestereich Kap 2.7 Seiten

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Objektorientierte Programmierung für Anfänger am Beispiel PHP

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

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

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Arcavis Backend - Invoice Baldegger+Sortec AG

Vorgehensweise bei Lastschriftverfahren

Lizenzierung von SharePoint Server 2013

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Einführung in die Programmierung

Drei Fragen zum Datenschutz im. Nico Reiners

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Vorlesung "Software-Engineering"

Software Engineering Klassendiagramme Assoziationen

PRÜFUNG. Grundlagen der Softwaretechnik

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

TIF2ELO Maskeneditor Handbuch

Objektorientierter Entwurf (OOD) Übersicht

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Grundlagen von Python

Arbeiten mit UMLed und Delphi

5.5.8 Öffentliche und private Eigenschaften

Integration verteilter Datenquellen in GIS-Datenbanken

myfactory.go! - Verkauf

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Transkript:

Software Entwicklung 2 UML in der Analyse

Inhalt Objektorientierte vs. klassische Softwareentwicklung Imperative Programmierung Objektorientierte Programmierung Grundprinzipien der objektorientierten Denkweise Elemente in der objektorientierten Programmierung Besonderheiten objektorientierter Softwareentwicklung Objekte Klassen Operationen Assoziationen Kardinalität Assoziationsnamen und Rollen Sonderfälle von Assoziationen Assoziative Klassen Aggregationen und Kompositionen Vererbung Pakete Botschaften Szenarios 2

Lernziele Grundlegende Eigenschaften der nicht-objektorientierten, imperativen Softwareentwicklung kennen Grundlegende Eigenschaften der objektorientierten Softwareentwicklung kennen Wesentliche Unterschiede zwischen diesen beiden Alternativen kennen Die Begriffe im Zusammenhang mit der Objektorientierung erläutern können (Objekt, Klasse, Attribut, Operation, Objektdiagramm, Vererbung, Pakete, Botschaften, Szenarios, usw.) Assoziationen erläutern und anwenden können (Kardinalitäten, Assoziationsnamen und Rollen, Sonderfälle von Assoziationen, Assoziative Klassen, Aggregationen und Kompositionen) Die UML-Darstellungen für diese Elemente anwenden können Die UML zur Beschreibung in der Analysephase verwenden können 3

Imperative Programmierung Trennung von Daten und Verarbeitung Getrennte Hierarchien für Daten und Prozeduren Änderung der globalen Datenstruktur bewirkt weitreichende Änderungen der prozeduralen Struktur Ungünstiges, weil kompliziertes Paradigma für die Problemanalyse (Bindung, Kopplung) 4

Objektorientierte Programmierung Keine Trennung von Daten und Prozeduren Klare Richtlinie für die Identifikation von Objekten und Klassen Natürlicher Mechanismus zur Identifikation von Objekten Zusammenfassung von Daten und den dazugehörigen Prozeduren zu Klassen bzw. Objekten Gewünschtes Systemverhalten kommt zustande durch Zusammenwirken verschiedener Objekte und Klassen über Botschaften oder Nachrichten Natürlicher Mechanismus zur Abbildung der Gruppenzugehörigkeit aus der realen Welt durch Bildung von Klassen Unterschiedliche Reaktionsmöglichkeiten auf Nachrichten durch Objekte 5

Grundprinzipien der objektorientierten Denkweise Objekte vereinigen Daten und Prozeduren Objekte tauschen Nachrichten aus und reagieren auf diese Objekte erben ihre Eigenschaften und Fähigkeiten durch die Zugehörigkeit zu Objektklassen Objekte verschiedener Klassen reagieren auf gleiche Nachrichten unterschiedlich 6

Elemente in der objektorientierten Programmierung Objekt Eindeutig benannte Abstraktion eines in sich geschlossenen Elements der realen Welt Stellt die relevanten Aspekte einer Entität dar Enthält Daten - sogenannte Attribute und hat ggf. Teile (Aggregation) Befindet sich in einem Zustand Enthält Prozeduren - sogenannte Methoden, die die Fähigkeiten des Objekts realisieren und Daten modifizieren Attribute können (im Idealfall) nur über die objekteigenen Methoden abgefragt und modifiziert werden (Information Hiding, Datenkapsel) Methoden werden durch Nachrichten (Botschaften) aktiviert 7

Elemente in der objektorientierten Programmierung Klasse Klassen beschreiben Objekte derselben Art. Klassen sind die Baupläne der Objekte (Abstrakter Datentyp) Ein Objekt ist eine Instanz einer Klasse (vgl. Vereinbarung einer Variablen eines bestimmten Datentyps in imperativen Programmiersprachen) Eigenschaften, die für alle Objekte einer Klasse identisch sind, können der Klasse zugeordnet werden (Klassenvariablen). Alle Objekte einer Klasse haben auf diese Variablen Zugriff Klassen sind ebenfalls Objekte. Daher können Klassen auch selbst Methoden besitzen (Klassenmethoden), z.b. zur Initialisierung der Klassenattribute 8

Elemente in der objektorientierten Programmierung Attribut Attribute beschreiben die Eigenschaften von Objekten bzw. Klassen (lokale Daten der Objekte) Methode Methoden realisieren die Funktionalität der Objekte, bzw. der Klassen Fähigkeiten (Methoden) die zu allen Objekten einer Klasse hinzugefügt werden müssen, werden lediglich der Klasse hinzugefügt Botschaft Botschaften (Nachricht, Message) dienen zur Aktivierung von Methoden in Objekten Botschaften können verschiedene passende Methoden aktivieren (Polymorphismus) 9

Besonderheiten objektorientierter Softwareentwicklung Vererbung Neue Klassen können aus vorhandenen Klassen abgeleitet werden Der Bezug zwischen Oberklasse und Unterklasse ist streng hierarchisch Die Suche nach ausführbaren Methoden erfolgt in der Klassenhierarchie streng hierarchisch von unten nach oben (Empfänger, Oberklasse, deren Oberklasse,...) Klassen auf einer Ebene werden nicht durchsucht Methoden in abgeleiteten Klassen überschreiben gleichnamige Methoden in Oberklassen (Polymorphismus) Mehrfachvererbung Abgeleitete Klassen können mehr als eine Oberklasse besitzen Die Vererbungsbeziehungen bilden keine baumartige Struktur mehr 10

Besonderheiten objektorientierter Softwareentwicklung Binden Zuordnung zwischen Aufrufmechanismus (Methodenname) und Implementierung Statisches Binden (typ. imperative Programmierung) Zuordnung geschieht bereits zum Zeitpunkt der Übersetzung Statische Fehleranalyse zur Übersetzungszeit möglich Höhere Ausführungsgeschwindigkeit des Programmes Nicht flexibel Dynamisches Binden (typ. objektorientierte Programmierung) Zuordnung zwischen aufrufender Botschaft und auszuführendem Code geschieht zur Laufzeit des Programmes Flexiblere Behandlung von Aufrufen, höhere Laufzeit, statische Fehlerprüfung nicht möglich 11

Besonderheiten objektorientierter Softwareentwicklung Abstrakte Klassen Werden verwendet, um einen Klassenbaum zu strukturieren Können zur Vereinbarung von Methodenschnittstellen verwendet werden (falls Methoden erst später implementiert werden) Sind nicht instanziierbar Auch Klassen sind Objekte, d.h. auch Klassen sind Instanzen von Klassen. Derartige Klassen heißen Metaklassen 12

Objekte UML-Notation Objekt :Klasse einobjekt einobjekt:klasse Attribut1 = Wert1 Attribut2 = Wert2 Attribut3 deroberarm:roboterarm aktueller Winkel = 45 maximaler Winkel = 90 minimaler Winkel = 0 :Mitarbeiter Name = Edelmann Gehalt = 5000 13

Objekte Objekte der Seminarorganisation :Kunde Name = Hans Schulz Adresse = Dortmund Kommunikation = 0231/234789 Geburtsdatum = 31.12.1960 Funktion = Berater Umsatz = 6600,- [ ] Kunde seit = 15.3.1995 :Kunde Name = Sabine Wenzel Adresse = Bochum Kommunikation = 0234/76424 Geburtsdatum = 29.2.1972 Funktion = Systemanalytiker Umsatz = 2500,- [ ] Kunde seit = 30.6.1998 14

Objekte UML-Objektdiagramm einobjekt1:klasse1 Ein Objekt Verbindung (link) :Klasse2 :Klasse4 :Klasse3 Attribut1 = Wert1 Attribut2 = Wert2 15

Objekte Beispiel für ein Objektdiagramm :Kunde Name = Hans Schulz Adresse = Dortmund Kommunikation = 0231/234789 Geburtsdatum = 31.12.1960 Funktion = Berater Umsatz = 6600,- [ ] Kunde seit = 15.3.1995 :Veranstaltung Nummer = 5 Dauer = 3 [Tage] Vom = 15.1.2001 Bis = 17.1.2001 Ort = Hotel Sauerland :Veranstaltung Nummer = 27 Dauer = 1 [Tag] Vom = 5.2.2001 Bis = 5.2.2001 Ort = Uni Bochum 16

Objekte Identität und Gleichheit von Objekten :Firma Name = KfZ-Zubehör GmbH Identität :Firma Name = Tankbau KG :Firma Name = Beratung und Mehr GmbH :Firma Name = KfZ-Zubehör GmbH :Firma Name = Tankbau KG Gleichheit :Firma Name = Beratung und Mehr GmbH :Firma Name = Beratung und Mehr GmbH 17

Klassen Beispiel :Kunde Name = Hans Schulz Adresse = Dortmund Kommunikation = 0231/234789 Geburtsdatum = 31.12.1960 Funktion = Berater Umsatz = 6600,- [ ] Kunde seit = 15.3.1995 :Kunde Name = Sabine Wenzel Adresse = Bochum Kommunikation = 0234/76424 Geburtsdatum = 29.2.1972 Funktion = Systemanalytiker Umsatz = 2500,- [ ] Kunde seit = 30.6.1998 Name Adresse Kommunikation Geburtsdatum Funktion Umsatz Kunde seit anlegen() buchen() abmelden() Kunde 18

Klassen UML-Notation Klasse Nur Klassennamen Klasse Nur Attribute Klasse Attribut1 Attribut2.. Nur Operationen Klasse Ausführliche Darstellung Attribut1 Attribut2 Attribut3.. Operation1() Operation2() Operation3() Operation4().. Klasse Namensfeld Attributsliste Operationsliste Operation1() Operation2(). <<Stammdaten>> Kunde {Autor=Balzert Version 1.0} 19

Klassen UML-Notation für Attribute Klasse Attribut1: Typ = Anfangswert1 Attribut2: Typ Klassenattribut: Typ /abgeleitetes Attribut: Typ Attribute: { Merkmal1, Merkmal2, } Person Geburtsdatum /Alter 20

Operationen Drei Klassen von Operationen Objektoperationen (kurz: Operationen) Konstruktoroperationen (kurz: Konstruktoren) Klassenoperationen Mitarbeiter Personal-Nr Name Geburtsdatum Einstellungsdatum Beurteilung Anzahl Bezeichnung Ort Leiter Abteilungsprofil Abteilung gib Abteilungsprofil() einstellen() entlassen() erstelle Arbeitsbescheinigung() notiere Beurteilung() berechne Dienstzeit() erstelle Geburtstagsliste() versetze in Abteilung() erstelle Zeugnis() 21

Operationen UML-Notation für Operationen Klasse Operationen() Klassenoperationen() abstrakte Operationen() Operation() {Merkmal1, Merkmal2, } Klassenoperationen Aushilfe Rechteck Name Adresse Stundenzahl Stundenlohn erhöhe Stundenlohn() Mittelpunkt Länge Breite Farbe ändere Farbe() 22

Assoziation Modelliert Beziehungen zwischen Objekten gleichrangiger Klassen Auch zwischen Objekten derselben Klasse zulässig (reflexive Assoziation) Im Gegensatz dazu verknüpft eine Vererbung Klassen miteinander, nicht Objekte der Klassen In der Systemanalyse: bidirektional UML: binäre und höherwertige Assoziationen 23

Assoziation Fallstudie»Seminarorganisation«Objektdiagramm :Kunde Name = Hans Schulz Adresse = Dortmund :Zahlungsverzug Betrag = 2000,- Stichtag = 10.5.05 :Zahlungsverzug Betrag = 1500,- Stichtag = 15.7.05 Klassendiagramm Name Adresse Kunde 1 hat * Betrag Stichtag Zahlungsverzug 24

Assoziation UML-Notation Attribut Klasse1 k1 k2 Attribut Klasse2 Operation() Operation() Klasse1 Attribut Operation() k2 k1 reflexive Assoziation 25

Assoziation Kardinalität Kardinalität (multiplicity) Name Adresse Kunde 1 * Zahlungsverzug Betrag Stichtag Jeder Zahlungsverzug gehört genau zu einem Kunden Jeder Kunde hat 0 bis * Zahlungsverzüge 26

Assoziation Kardinalität UML-Notation KlasseA k1 Rolle A Assoziationsname Assoziationsname k2 Rolle B KlasseB Anzahl der Assoziationen: Zwischen einem beliebigen Objekt und einem Objekt der Klasse A gibt es: KlasseA KlasseA KlasseA KlasseA 1 * 0..1 1..* genau eine Beziehung (Muss-Beziehung) viele Beziehungen (null, eine oder mehrere) (Kann-Beziehung) null oder eine Beziehung (Kann-Beziehung) eine oder mehrere Beziehungen (Muss-Beziehung) 27

Assoziation Kardinalität UML-Notation KlasseA KlasseA KlasseA KlasseA 3..* 0..5 4 1, 3, 5 drei oder mehr als drei Beziehungen (Muss-Beziehung) null bis fünf Beziehungen (Kann-Beziehung) genau vier Beziehungen (Muss-Beziehung) eine, drei oder fünf Beziehungen (Muss-Beziehung) KlasseA 1..4, 7, 9..* nicht keine, fünf, sechs oder acht Beziehungen (Muss-Beziehung) 28

Assoziation Kardinalität Kann- und Muss-Assoziationen Kunde muss kann 1 gehört * erteilt Auftrag Kunde muss muss 1 1..* Auftrag 29

Assoziation Assoziationsnamen und Rollen Rolle Beschreibt, welche Funktion ein Objekt in einer Assoziation innehat Beispiel 1 * Firma Mitarbeiter PKW Arbeitgeber Arbeitnehmer 0..1 0..1 Fahrer Dienstwagen 30

Assoziation Assoziationsnamen und Rollen Rollennamen bei mehr als einer Assoziation Dozent 1..* * Referent (subset) * * Seminarleiter Veranstaltung :Dozent Referent :Dozent Referent Seminarleiter :Veranstaltung 31

Assoziation Assoziationsnamen und Rollen Rollennamen in einer reflexiven Assoziation Angestellter Name Gehalt Position Mitarbeiter * Chef 0..1 {Chef.Gehalt > Mitarbeiter.Gehalt} :Angestellter Chef Chef Mitarbeiter :Angestellter Chef Chef Mitarbeiter :Angestellter Mitarbeiter :Angestellter Mitarbeiter :Angestellter 32

Assoziation Sonderfälle von Assoziationen Geordnete Assoziation Definition einer Ordnung auf einer Assoziation Kunde * bucht {ordered} * Teilnehmer Veranstaltung :Kunde 1. Veranstaltung :Veranstaltung :Kunde 1. Veranstaltung :Veranstaltung :Veranstaltung 33

Assoziation Sonderfälle von Assoziationen Restriktionen (constraints) Zugfahrzeug Anhängerlast 0..1 0..1 Gewicht Anhänger { Zugfahrzeug.Anhängerlast >= Anhänger.Gewicht } ist Mitglied in * Patient {or} * ist Mitglied in 1 Ersatzkasse 1 Privatkasse erster:patient zweiter:patient :Ersatzkasse :Privatkasse 34

Assoziation Sonderfälle von Assoziationen Qualifizierte Assoziation Lager Lagernummer Lager * * 0..1 Palette * Palette 35

Assoziation Sonderfälle von Assoziationen Abgeleitete Assoziation * bestellt * * 1 Kunde Artikel Lieferant * / liefert an * abgeleitete Assoziation :Kunde :Artikel :Lieferant :Artikel :Lieferant 36

Assoziation Assoziative Klassen Assoziation kann Eigenschaften einer Klasse besitzen Name Adresse Kunde * * Veranstaltung Nummer Dauer Buchung Angemeldet am Abgemeldet am Rechnung am anmelden() abmelden() 37

Assoziation Assoziative Klassen Auflösen einer assoziativen Klasse A 0..1 * B A B 1 1 C * C 0..1 A * * B A B 1 1 C * C * 38

Assoziation Aggregationen und Kompositionen: Aggregation Sonderfall der Assoziation Liegt vor, wenn zwischen den Objekten der beteiligten Klassen (kurz: den beteiligten Klassen) eine Rangordnung gilt, die sich durch»ist Teil von«bzw.»besteht aus«beschreiben lässt Man spricht vom Ganzen und seinen Teilen Die Objekte der Aggregation bilden einen gerichteten azyklischen Graphen Wenn B Teil von A ist, dann darf A nicht Teil von B sein Shared aggregation (weak ownership) Ein Teilobjekt kann mehreren Aggregatobjekten zugeordnet werden 39

Assoziation Aggregationen und Kompositionen: Komposition Starke Form der Aggregation Zusätzlich muss gelten Jedes Objekt der Teilklasse kann zu einem Zeitpunkt nur Komponente eines einzigen Objekts der Aggregatklasse sein, d. h., die bei der Aggregatklasse angetragene Kardinalität darf nicht größer als eins sein (unshared aggregation, strong ownership) Ein Teil darf jedoch zu einem anderen Zeitpunkt auch einem anderen Ganzen zugeordnet werden Die dynamische Semantik des Ganzen gilt auch für seine Teile (propagation semantics) Wird beispielsweise das Ganze kopiert, so werden auch seine Teile kopiert Wird das Ganze gelöscht, dann werden automatisch seine Teile gelöscht (they live and die with it) Ein Teil darf jedoch zuvor explizit entfernt werden 40

Assoziation Aggregationen und Kompositionen: Aggregation versus Komposition Aggregatklasse Web-Auftritt Sparkonto Lagermodul Erstellt am Letzte Änderung Verantwortlich Kontonummer Habenzins / Kontostand Nummer Störungsstatus eröffnen() einzahlen() abholen() gutschreibenzinsen() auflösen() ermittlebestand() ermittlekapazität() einlagern() auslagern() * Aggregation 1 Komposition 1 1..* * 1..* Web-Seite Kontobewegung Lagerplatz Erstellt am Letzte Änderung Verantwortlich Betrag Datum X Koordinate Y Koordinate Belegt Status Sperrkennzeichen Teilklassen 41

Assoziation Aggregationen und Kompositionen Höherwertige Assoziationen Programmierer Projekt Programmiersprache Meier A C++ Schröder B Java Ludwig A Java Projekt * Programmierer * * Programmiersprache 42

Vererbung Vererbung (generalization) Eine spezialisierte Klasse (Unterklasse, subclass, abgeleitete Klasse) verfügt über die Eigenschaften das Verhalten und die Assoziationen einer oder mehrerer allgemeiner Klassen (Oberklassen, superclasses, Basisklassen) 43

Vererbung Beispiel für den Vererbungsmechanismus Objektebene :KlasseX Verbindung (link) ObjektA: KlasseA AttributA = Wert1 Klassenebene KlasseA AttributA KlassenattributA = W OperationA() KlassenoperationA() Direkte Oberklasse von KlasseB 1 KlasseX Assoziation :KlasseX :KlasseY ObjektB: KlasseB AttributA = Wert2 AttributB = Wert3 KlasseB AttributB KlassenattributA = W OperationB() 1 KlasseY :KlasseX ObjektC1: KlasseC1 KlasseC1 KlasseC2 :KlasseY AttributC1 = Wert4 AttributB = Wert5 AttributA = Wert6 AttributC1 KlassenattributA = W OperationC1() AttributC2 KlassenattributA = W OperationC2() :KlasseX :KlasseY ObjektC2: KlasseC2 AttributC2 = Wert7 AttributB = Wert8 AttributA = Wert9 direkte Unterklasse von KlasseB direkte Unterklasse von KlasseB 44

Vererbung UML-Notation alternativ 45

Vererbung Unterklassen»unsichtbar«Jede Klasse»kennt«nur ihre eigenen Attribute, Operationen und Assoziationen und die ihrer Oberklassen, sofern diese für sie sichtbar sind Im Allgemeinen unterscheidet man drei verschiedene Sichtbarkeitsstufen Außerhalb der Klasse nicht sichtbar (private) (in der UML: - ), auch nicht für Unterklassen Für alle Unterklassen sichtbar (protected) (in der UML: # ) Für alle anderen Klassen sichtbar, d.h. öffentlich (public) (in der UML: + ) 46

Vererbung Fallstudie»Seminarorganisation«Name Adresse Kontakt Geburtsdatum Funktion Umsatz Kunde seit Kunde erstelle Adressaufkleber() ermittle durchschn. Umsatz() Dozent Name Adresse Kontakt Geburtsdatum Biografie Honorar pro Tag Dozent seit erstelle Adressaufkleber() link Seminartyp() link Veranstaltung() 47

Vererbung Fallstudie»Seminarorganisation«Name Adresse Kontakt Geburtsdatum Ersterfassung am Person {abstrakt} {abstrakte} Oberklasse von Kunde und Dozent erstelle Adressaufkleber() Kunde Dozent Funktion Umsatz ermittle durchschn. Umsatz() Biografie Honorar pro Tag link Seminartyp() link Veranstaltung() 48

Vererbung Mehrfachvererbung Uhr-Anzeige Stunde Minute 13:47 Digital-Anzeige Anzeigegröße Analog-Anzeige Ziffernblatt Stundenzeiger Minutenzeiger Digital-Analog-Anzeige Digital-Anordnung 13:47 49

Vererbung Vererbungsstruktur mit Diskriminator Mitarbeiter Arbeitszeit Vollzeitkraft Teilzeitkraft freier Mitarbeiter Mitarbeiter Tätigkeit Systemanalytiker Entwerfer Programmierer 50

Pakete Pakete (packages) Strukturierungsmechanismus Erlauben es, Komponenten zu einer größeren Einheit zusammenzufassen Paketbegriff allerdings nicht einheitlich definiert Analoge Begriffe: Subsystem, subject, category UML Ein Paket gruppiert Modellelemente (z. B. Klassen) und Diagramme Ein Paket kann selbst Pakete enthalten 51

Pakete UML-Notation Paketname Handelssystem Einkauf Verkauf Abhängigkeit Lager 52

Pakete Kriterien Das Paket soll eine logische Einheit bilden, d. h. es soll so strukturiert sein, dass es 1. den Leser durch das Modell führt 2. einen Themenbereich enthält, der für sich allein betrachtet und verstanden werden kann 3. Klassen enthält, die logisch zusammengehören, z. B. Artikel, Lieferant und Lager 4. für sich entworfen und eventuell implementiert werden kann, wobei eine wohldefinierte Schnittstelle zur Umgebung vorhanden ist Die Schnittstelle soll 1. Vererbungsstrukturen nur in vertikaler Richtung schneiden, d. h. zu jeder Unter-klasse sollen alle Oberklassen in dem Paket enthalten sein 2. keine Aggregation durchtrennen 3. möglichst wenig Assoziationen enthalten Die Kopplung zwischen den Klassen innerhalb eines Pakets soll möglichst groß und zwischen Paketen möglichst gering sein. Jedes potenzielle Paket prüft man auf seine Kopplungseigenschaft 53

Botschaften Botschaft (message) Aufforderung eines Senders (client) an einen Empfänger (server, supplier), eine Dienstleistung zu erbringen Der Empfänger interpretiert diese Botschaft und führt eine Operation aus Der Sender der Botschaft weiß nicht, wie die entsprechende Operation ausgeführt wird Die Menge der Botschaften, auf die Objekte einer Klasse reagieren können, wird als Protokoll (protocol) der Klasse bezeichnet Eine Botschaft löst eine Operation gleichen Namens aus 54

Botschaften Fallstudie»Seminarorganisation«1: erstelletn-liste() :Veranstaltung 2: getkurztitel() :Seminartyp 3: getname() Seminartyp :Dozent 4: getname() :Kunde Kurztitel Titel getkurztitel() 1 * Name Dozent getname() 1..* Veranstaltung * * * Nummer Von Bis erstelletn-liste() Kunde Name adresse getname() Buchung Angemeldet am 55

Szenarios Sequenz von Verarbeitungsschritten, die unter bestimmten Bedingungen auszuführen ist Diese Schritte sollen das Hauptziel des Akteurs realisieren und ein entsprechendes Ergebnis liefern Sie beginnen mit dem auslösenden Ereignis und werden fortgesetzt, bis das Ziel erreicht ist oder aufgegeben wird Ein Geschäftsprozess kann durch eine Kollektion von Szenarios dokumentiert werden Jedes Szenario wird durch eine oder mehrere Bedingungen definiert, die zu einem speziellen Ablauf des jeweiligen Geschäftsprozesses führen 56

Szenarios UML-Darstellung dynamischer Abläufe Objektdiagramme (object diagrams) Kommunikationsdiagramme (communication diagrams) Sequenzdiagramme (sequence diagrams) 57

Szenarios UML-Darstellung dynamischer Abläufe Kommunikationsdiagramm 1: Operation1() :Klasse1 {transient} 2: Operation2() 3: Operation4() :Klasse2 {new} :Klasse4 2.1: Operation3() :Klasse3 {new} 58

Szenarios UML-Darstellung dynamischer Abläufe Kommunikations- vs. Objektdiagramm 1: erstelletn-liste() 2: getkurztitel() :Veranstaltung :Seminartyp 3: getname() :Dozent 4: getname() :Kunde zwölfteveranstaltung: Veranstaltung Schröder: Kunde OOA: Seminartyp Herbst: Dozent Schulz: Kunde Wenzel: Kunde 59

Szenarios UML-Darstellung dynamischer Abläufe Sequenzdiagramm Akteur Operation1() Botschaft Bereits existierende Objekte erstesobjekt :Klasse1 Klasse3() :Klasse2 Neu erzeugtes Objekt neuesobjekt :Klasse3 Operation5() Objekt schickt Botschaft an sich selbst Operation3() Operation2() Objekt wird gelöscht Balkenlänge gibt relative Dauer der Aktivität an 60

Szenarios UML-Darstellung dynamischer Abläufe Sequenzdiagramm: Beispiel :Veranstaltung :Seminartyp :Dozent :Kunde erstelletn- Liste() getkurztitel() getname() getname() Zeit 61

Szenarios UML-Darstellung dynamischer Abläufe Sequenzdiagramm: Beispiel mit Alternativen :Kunde [Neukunde] erfassen() :Kunde buchen() :Veranstaltung [Altkunde] aktualisieren() buchen() :Veranstaltung 62

Szenarios UML-Darstellung dynamischer Abläufe Sequenz- vs. Kooperationsdiagramm Klasse :Klasse Klassenoperation() Konstruktoroperation() :Klasse Klassenoperation() Klasse Konstruktoroperation() :Klasse {new} Objektoperation() Objektoperation() :Klasse 63