Teil II: OOP und JAVA (Vorlesung 9)

Ähnliche Dokumente
PRG2. Teil II: OOP und JAVA Teil III: Datenbanken. Modul: Programmierung B-PRG Grundlagen der Programmierung II

UML -Klassendiagramme

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

Übungen Softwaretechnik I

Objektorientierte Analyse (OOA) Strukturmodellierung

OOA-Dynamische Konzepte

Unified Modeling Language (UML)

Unified Modelling Language

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

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

Einführung in die Programmierung

Unified Modeling Language 2

Rückblick: Entity-Relationship-Modell

Tabellarische Kurzreferenz der UML-Elemente

Objektorientierte Modellierung (1)

UML (Unified Modelling Language) von Christian Bartl

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

Einführung in die objektorientierte Programmierung

UML. Weiteres Vorgehen im Projekt

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

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Teil 2: OOP und JAVA (Vorlesung 11)

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 07

Klassendiagramm. (class diagram)

Geoinformation I Datenmodellierung

UML - Tutorial. Hubert Baumgartner.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Vorlesung Programmieren

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

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

Vorlesung Informationssysteme

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

NACHRICHTENTECHNISCHER SYSTEME

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

Das umfassende Handbuch

Modellierungstipps für die Anwendungsfallmodellierung

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language

Von der UML nach C++

Software Engineering in der Praxis

4. Übung zu Software Engineering

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

Kurzeinführung in UML

SEQUENZDIAGRAMM. Christoph Süsens

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

Objektorientiertes Design

Techniken der Projektentwicklungen

Objektorientierte Analyse (OOA) Inhaltsübersicht

Java Einführung Objektorientierte Grundkonzepte

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

Anwendungsfalldiagramm UseCaseDiagramm

ANWENDUNGSFALLDIAGRAMM:

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

Beziehungen zwischen Objekten

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

Glossar für das Fach Informatik

VU Objektorientierte Modellierung Übung 1

PRÜFUNG. Grundlagen der Softwaretechnik

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

2. Vererbung und Kapselung

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

Objektorientierte Analyse (OOA) Übersicht

Blöcke. Block Definitionsdiagramm. Dr. Beatrice Amrhein

RUP Analyse und Design: Überblick

UML 2.0 Das umfassende Handbuch

Abbildungsverweise PlantUML Code. Version 1.0 Vanessa Petrausch

Vorlesung Informatik II

UML. Tutorium 1 2. März 2009

Orientierte Modellierung mit der Unified Modeling Language

Programmieren 2 C++ Überblick

Datenbankentwurf. Kapitel 3. Datenbankentwurf 76 / 508

VORDIPLOMSPRÜFUNG FÜR ELEKTROINGENIEURE. Einführung in die Informatik III

Einführung in die OOP mit Java

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

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Softwaretechnik 2015/2016

Assoziation und Aggregation

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

Einführung in UML. Überblick. 1. Was ist UML??? 2. Diagrammtypen. 3. UML Software. Was ist ein Modell??? UML Geschichte,...

Software Engineering Klassendiagramme Einführung

Abschnitt 15: Unified Modeling Language (UML)

Teil VIII. Objektorientierte Programmierung

3. Konzepte der objektorientierten Programmierung

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

Christoph Kecher UML2. Das umfassende Handbuch. Galileo Press

PRÜFUNG. Grundlagen der Softwaretechnik

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

Vorlesung Programmieren

Programmieren in Java

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

Objektorientierte Softwareentwicklung

Datenbankanwendungen werden oft über einen sehr langen Zeitraum (z.b. Jahrzehnte) eingesetzt

State diagrams (Zustandsautomaten)

Transkript:

Teil II: OOP und JAVA (Vorlesung 9) Modul: Programmierung B-PRG Grundlagen der Programmierung II Prof. Dot.-Ing. Roberto Zicari Professur für Datenbanken und Informationssysteme (FB 12) 14.06.06 1

Teil 4 - UML Klassendiagramme Zustandsdiagramme Sequenzdiagramme 2

Sichtweisen auf das System In UML können verschiedene Sichtweisen auf ein System anschaulich modelliert werden. Für den Anwender (bzw. Kunde) existiert das Anwendungsfalldiagramm. Das Klassendiagramm repräsentiert ein Model für den Code eines Systems und ist somit sehr hilfreich für den Programmierer. Aber es ist sehr technisch und deshalb nicht für alle Anwender geeignet. 3 Grundlagen der Programmierung II

Klassendiagramm Im folgenden Abschnitt werden die wichtigsten Elemente für die grundlegende Strukturmodellierung in UML vorgestellt. Insbesondere wird dabei auf die Begriffe Klasse (Class) und Beziehung (Relationship) eingegangen. 4 Grundlagen der Programmierung II

Klassen Klassen sind die wichtigsten Bestandteile eines Objektorientierten Systems. Eine Klasse ist die Beschreibung einer Menge von Objekten, die deren Attribute, Operationen, Beziehungen und semantischen Aspekte miteinander gemeinsam haben. 5 Grundlagen der Programmierung II

Klassen Grafisch wird eine Klasse als Rechteck dargestellt. Der Name einer Klasse muss dabei eindeutig sein. Klassenname Beispiele: Person Kunde Auto 6 Grundlagen der Programmierung II

Attribute Eine Klasse hat beliebig viele Attribute. Ein Attribut ist eine benannte Eigenschaft einer Klasse mit einem konkreten Wertebereich. Entsprechend wird jedem Attribut ein Typ und eventuell ein Anfangswert zugeordnet. Klassenname attribut1 : typ attribut2 : typ = wert 7 Grundlagen der Programmierung II

Operationen Eine Klasse hat beliebig viele Operationen ( Methoden). Eine Operation ist die Implementierung eines Dienstes, der von jedem Objekt der Klasse zur Verhaltensbeeinflussung aufgerufen werden kann. Eine Operation kann (max.) einen Rückgabewert und beliebig viele Parameter haben. Signatur Klassenname operation1() operation2(t : typ1) operation3(x : typ2) : typ3 8 Grundlagen der Programmierung II

Klassen mit Attributen und Operationen Beispiele: Person Kunde Auto name : String alter : int laufen() kundennr : int name : String adresse : String umsatz : float = 0 kmh : int beschleunigen() bremsen() telefonieren() umziehen() : String 9 Grundlagen der Programmierung II

Beziehungen Beim Erstellen von Abstraktionen sieht man, dass nur sehr wenige Klassen isoliert stehen. Die meisten Klassen arbeiten auf vielfältige Weise mit anderen Klassen zusammen. Bei der Modellierung von Systemen muss man daher nicht nur die einzelnen Klassen identifizieren aus denen es besteht, sondern auch modellieren, wie diese Elemente (Klassen) zusammenhängen. Zwei wichtige Arten von Beziehungen in der Objektorientierten Modellierung sind: Generalisierung und Assoziation. 10 Grundlagen der Programmierung II

Generalisierungen Eine Generalisierung ist eine Beziehung zwischen einer allgemeineren (Oberklasse) und einem spezialisierteren Element (Unterklasse) : Eine Unterklasse erbt alle Attribute und Operationen der Oberklasse, kann aber noch zusätzliche Attribute und Operationen haben. Ein Klasse ohne Oberklassen heißt Basisklasse. Bei einer Klasse mit mehreren Oberklassen spricht man von der Mehrfachvererbung. 11 Grundlagen der Programmierung II

Generalisierungen Grafisch wird die Generalisierung in UML als durchgezogener Pfeil mit einer großen offenen Spitze auf die Oberklasse dargestellt. Basisklasse Generalisierung Klasse1 attribut1: typ Oberklasse und Unterklasse Klasse2 attribut2: typ Klasse3 Klasse4 Unterklasse Klasse5 Klasse6 12 Grundlagen der Programmierung II

Generalisierungen Beispiele: Auto kmh: int Person name : String PKW Student matrikelnr : int Professor lehrstuhl : String 13 Grundlagen der Programmierung II

Assoziationen Eine Assoziation ist eine strukturelle Beziehung, die spezifiziert, dass Objekte eines Elements (Klasse) mit Objekten eines anderen Elements zusammen hängen: Man verwendet Assoziationen, um strukturelle Beziehungen darzustellen. Es sind binäre, n-äre und auch reflexive (auf sich selbst beziehende) Assoziationen möglich. 14 Grundlagen der Programmierung II

Assoziationen Grafisch wird eine Assoziation durch eine durchgezogene Linie zwischen den beteiligten Klassen repräsentiert. Klasse1 Klasse5 Klasse1 Klasse2 binäre Assoziation reflexive Assoziation Klasse3 Klasse4 n-äre Assoziation (n=3) 15 Grundlagen der Programmierung II

Assoziationen Eine Assoziation kann mit den folgenden (optionalen) Details versehen werden: Name (mit oder ohne Richtung) Rolle Multiplizität (Kardinalität) Aggregation Komposition 16 Grundlagen der Programmierung II

Assoziationen - Name Durch eine Assoziation mit Namen lässt sich die Natur einer Beziehung besser beschreiben. Um die Bedeutung zu spezifizieren, kann optional eine Namensrichtung angegeben werden. Beispiel: Name Namensrichtung Person arbeitet für Unternehmen 17 Grundlagen der Programmierung II

Assoziationen - Rolle Die an einer Assoziation beteiligten Klassen haben bestimme Rollen, die man explizit benennen kann, um deren Bedeutung genauer zu spezifizieren. Beispiel: Rollenname Rollenname Person Arbeitnehmer arbeitet für Arbeitgeber Unternehmen 18 Grundlagen der Programmierung II

Assoziationen - Multiplizität Mit der Multiplizität oder Kardinalität kann man zeigen, wie viele Objekte einer Klasse mit einem Objekt einer anderen Klasse in Beziehung stehen. Hierbei ist die Angabe einer einzelnen Zahl n oder eines Wertebereiches n..m (bzw. n..* ) möglich, wobei der * für eine beliebige Anzahl steht. In der grafischen Darstellung wird die Multiplizität direkt neben der zugehörigen Klasse notiert. 19 Grundlagen der Programmierung II

Assoziationen - Multiplizität Beispiel: Eine Person kann bei keiner oder mehreren Firmen beschäftigt sein. In einem Großunternehmen arbeiten mindestens 1000 Personen. Person 1000..* 0..n Großunternehmen Multiplizität Multiplizität 20 Grundlagen der Programmierung II

Assoziationen - Multiplizität Ein weiteres Beispiel: Ein Lehrer gibt beliebig viele Kurse, jeder Kurs wird aber nur von genau einem Lehrer geleitet. Ein Schüler besucht 5 bis 10 Kurse und jeder Kurs besteht aus 15 bis 30 Teilnehmern. Lehrer 1 leitet 0..* Kurs besucht 5..10 Schüler 15..30 21 Grundlagen der Programmierung II

Assoziationen - Aggregation Bei einer einfachen Assoziation sind die beteiligten Klassen gleichberechtigt. Manchmal möchte man aber eine hierarchische Beziehung zwischen einem Ganzen und seinen Teilen modellieren. Die Aggregation ist eine Sonderform der Assoziation. Sie realisiert eine hat-ein-beziehung und bedeutet, dass ein Objekt des Ganzen (mehrere) Objekte als Teile besitzt. 22 Grundlagen der Programmierung II

Assoziationen - Aggregation Grafisch wird eine Aggregation dargestellt, indem man die durchgezogene Linie der Assoziation an dem des Ganzen zugewandten Ende, mit einer Raute versieht. Klasse1 Ganzes Aggregation Klasse2 Teil 23 Grundlagen der Programmierung II

Assoziationen - Aggregation Beispiele: Rad 1 3..4 PKW 1 1 Motor Rad und Motor können alleine existieren Buch titel verlag 1 2..n Kapitel titel kapnr 1 1..n Abschnitt abschnittnr seitenzahl Ebenso Kaptitel und Abschnitt 24 Grundlagen der Programmierung II

Assoziationen - Komposition Die Komposition ist eine starke Form der Aggregation. Auch hier sprechen wir vom Ganzen und seinen Teilen. Im Unterschied zur Aggregation gilt zusätzlich: Jedes Teilobjekt kann nur Komponente eines einzigen Objekts der Aggregatklasse sein (Kardinalität =1). Wird das Ganze kopiert, so werden auch seine Teile kopiert. Wird das Ganze gelöscht, so werden auch seine Teile gelöscht. 25 Grundlagen der Programmierung II

Assoziationen - Komposition Eine Komposition wird grafisch dargestellt, indem man die durchgezogene Linie der Assoziation an dem des Ganzen zugewandten Ende, mit einer schwarz gefüllten Raute versieht. Klasse1 Ganzes 1 Komposition Klasse2 Teil 26 Grundlagen der Programmierung II

Assoziationen - Komposition Beispiel: Verzeichnis 1 * Datei Die Datei kann nicht ohne das Verzeichnis existieren 27 Grundlagen der Programmierung II

Überblick Beziehungen Grafisch werden die verschiedenen Beziehungen durch verschiedene Linienarten dargestellt: Generalisierung durchgezogener Pfeil mit offener Spitze Assoziation durchgezogene Linie Aggregation durchgezogene Linie mit Raute Komposition durchgezogene Linie mit gefüllter Raute 28 Grundlagen der Programmierung II

Beispiel Pfandmaschine Im Folgenden sollen am Beispiel eines Automaten zur Rückgabe von Pfandflaschen (Pfandmaschine), die bisher behandelten Diagrammtypen (Use Case, Class) von UML nochmals erklärt und weitere Diagrammtypen (State, Sequence) veranschaulicht werden. 29 Grundlagen der Programmierung II

Beispiel Pfandmaschine Grundlegende Funktionsweise: Leergut Kunde Geld oder Bon Pfandmaschine 30 Grundlagen der Programmierung II

Anwendungsfalldiagramm Beispiel Pfandmaschine: Akteur Beziehungen Akteur Pfandmaschine Kunde Anwendungsfall Technikerin 31 Grundlagen der Programmierung II

Klassendiagramm Beispiel Pfandmaschine: Pfandmaschine geld: int zahle(betrag: int) Vererbung Kardinalität Flaschen-Pfandmaschine anzflaschen: int nimm_flasche() 0...* 0,1 nimmt auf Assoziation mit Name Flasche groesse: float 32 Grundlagen der Programmierung II

Zustandsdiagramm Ein Zustandsdiagramm ist die graphische Darstellung eines Zustandsautomaten. Ein Zustandsautomat besteht aus Zuständen und Zustandsübergängen (Transitionen). Durch ein bestimmtes Ereignis wechselt das Objekt den Zustand. Oft wird der Zustandsautomat genutzt, um für eine bestimmte Klasse den Lebenszyklus ihrer Objekte zu beschreiben. Die Klasse vererbt ihren Automaten an ihre Unterklassen. 33 Grundlagen der Programmierung II

Zustandsdiagramm - Darstellung Grafisch wird ein Zustand durch ein abgerundetes Viereck, das den Namen enthält, dargestellt. Der Name sollte kein Verb sein. Die Transition wird durch einen Pfeil dargestellt, der zwei Zustände verbindet. Der Anfangszustand (initial state) wird durch einen kleinen schwarzen Kreis dargestellt. Der optionale Endzustand wird durch ein Bullauge (schwarzer Kreis in kleinem Kreis) dargestellt. 34 Grundlagen der Programmierung II

Zustandsdiagramm Initial state Final state Zustand1 Ereignis1 Zustand2 Zustand Transition 35 Grundlagen der Programmierung II

Zustandsdiagramm Beispiel Pfandmaschine: (START) (ZUSTAND) bereit Fehler aufgetreten (EREIGNIS) Flasche am Sensor Flasche abgearbeitet Fehler behoben Flasche aufnehmend Fehler aufgetreten (ÜBERGANG) (ENDE) Fehler nicht behebbar Fehler bearbeitend 36 Grundlagen der Programmierung II

Sequenzdiagramm Ein Sequenzdiagramm zeigt die Interaktionen zwischen Objekten in ihrer zeitlichen Reihenfolge. Grafisch ist ein Sequenzdiagramm eine Art Tabelle, welche die Objekte in horizontaler Richtung darstellt und die eingesetzten Nachrichten entlang der Vertikalen zeigt. 37 Grundlagen der Programmierung II

Sequenzdiagramm Objekte ZEIT Nachrichten 38 Grundlagen der Programmierung II

Sequenzdiagramm Die Objektlebenslinie stellt die Existenz eines Objekts während eines Zeitraums dar. Grafisch wird sie durch eine senkrechte gestrichelte Linie repräsentiert. Der Kontrollfokus zeigt den Zeitraum, in dem ein Objekt eine Aktion ausführt. Grafisch wird er durch ein langes schmales Rechteck auf der Lebenslinie gekennzeichnet. 39 Grundlagen der Programmierung II

Sequenzdiagramm Es gibt verschiedene Arten von Nachrichten: Bei der synchronen Nachricht wartet der Sender, bis die durch seinen Aufruf ausgelöste Teilaktion beendet ist. Die Rückgabenachricht zeigt an, dass die synchrone Nachricht ihre Operation beendet hat. Bei der asynchronen Nachricht wartet der Sender nicht auf eine Antwort. 40 Grundlagen der Programmierung II

Sequenzdiagramm Grafisch werden die verschiedenen Arten von Nachrichten wie folgt notiert: Synchrone Nachricht durchgezogener Pfeil mit geschlossener Spitze Rückgabenachricht gestrichelter Pfeil mit offener Spitze Asynchrone Nachricht durchgezogener Pfeil mit offener Spitze 41 Grundlagen der Programmierung II

Sequenzdiagramm Objekte Objekt2 Objekt1 Lebenslinien ZEIT Methode1() Kontrollfokus ACKNOWLEDGEMENT Kontrollfokus Nachrichten 42 Grundlagen der Programmierung II

Sequenzdiagramm Beispiel Pfandmaschine: Pfandmaschine Objekte Flaschenmechanik ZEIT aufnehmen(flasche) Flasche_aufgenommen Kontrollfokus Kontrollfokus Nachrichten Lebenslinien 43 Grundlagen der Programmierung II

Anwendungsfalldiagramm Hinzunahme der Bezahlung und Verfeinerung der Reservierung: Tourist Reservierung Zimmer buchen «include» bezahlen «include» Zimmer grundreinigen «include» Minibar auffüllen Receptionist Zimmer vermieten extension point: prüfe Zimmerzustand «include» Belegplan prüfen «extends» Putzkolone beauftragen «Vorbedingung» {Zimmer ungereinigt} Zimmer reinigen Putzkolonne Problem bei dieser Modellierung? 44 Grundlagen der Programmierung II

Fragen zur Modellierung Beispiel Reservierung: Problem: Receptionist kann die Putzkolonne nur während der Zimmer-Vermietung beauftragen. D.h. wenn es keine Gäste gibt bleiben die Zimmer für immer schmutzig. Beachten Sie: Wir haben jetzt einen Use Case Zimmer buchen für den Tourist und einen Use Case Zimmer vermieten für den Receptionist. 45 Grundlagen der Programmierung II

Sequenzdiagramm Beispiel: Zimmer-Reservierung Tourist Receptionist Hotelzimmer Zimmer_buchen Belegplan_ prüfen ZEIT Rechung_stellen (Preis) Geld Zimmer frei Schlüssel 46 Grundlagen der Programmierung II