Abschnitt 15: Unified Modeling Language (UML)

Ähnliche Dokumente
Einführung in die Programmierung

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595

Kapitel 6. Grundlagen der objektorientierten Programmierung. Skript zur Vorlesung Einführung in die Programmierung

Einführung in die Programmierung

Vorlesung Programmieren

Einführung in die Programmierung

Abschnitt 14: Schnittstellen: Interfaces

UML -Klassendiagramme

Einführung in die Programmierung

7. Objektorientierung. Informatik II für Verkehrsingenieure

Unified Modelling Language

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

UML (Unified Modelling Language) von Christian Bartl

Tafelübung 07 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 06

Einführung in die Programmierung

Einführung in die Programmierung

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

Modellierungstipps für die Anwendungsfallmodellierung

Einführung in die objektorientierte Programmierung

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

Vorlesung Programmieren

Abschnitt 10: Typisierte Klassen

NACHRICHTENTECHNISCHER SYSTEME

UML Eine kurze Einführung

Programmiertechnik Objektorientierung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

Objektorientierte Programmierung III

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 492

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

Objektorientierte Analyse (OOA) Strukturmodellierung

Java Einführung Objektorientierte Grundkonzepte

Rückblick: Entity-Relationship-Modell

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Analyse und Design mituml2

Analyse und Modellierung von Informationssystemen

Unified Modeling Language 2

Herzlich willkommen!

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Javakurs für Anfänger

1 Klassen und Objekte

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

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

Objektorientierte Modellierung (1)

Einführung. Einführung

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Programmieren in Java

Analyse und Design mituml2.1

Analyse und Design mit U ML 2.3

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 861

UML Eine kurze Einführung

So#waretechnologie für Fortgeschri4ene Teil Eide. Stunde IV: UML. Köln 26. Januar 2017

SE Besprechung. Übung 1 Programmverständnis, Dokumentation

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

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Algorithmen und Datenstrukturen 07

Softwaretechnologie für Fortgeschrittene Wohce 4 Modellierung UML

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Das UML Benutzerhandbuch

Programmieren in Java

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Einführung in die Objektorientierung

Geoinformation I Datenmodellierung

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 567

Pakete Software Entwicklung 1

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

Übungen Softwaretechnik I

Abschnitt 12: Vererbung und Polymorphismus

Algorithmen und Datenstrukturen

Einführung in die Programmiersprache Java II

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

Realität zu modellieren eine

Objektorientierte Programmierung (OOP)

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

IT kompakt. UML 2 kompakt. mit Checklisten. Bearbeitet von Heide Balzert

Javakurs für Anfänger

Objektorientierte Programmierung

Einführung in die Programmiersprache Java II

Theorie zu Übung 8 Implementierung in Java

Kapitel

UML 2.0 als Architekturbeschreibungssprache? Seminar: Architekturbeschreibungssprachen Manuel Wickert

Sommersemester Implementierung I: Struktur

Objektorientierte Systementwicklung

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

01. Grundprinzipien der Vererbung

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

Objektorientiertes Programmieren

Von der UML nach C++

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

Teil II: OOP und JAVA (Vorlesung 9)

UML. Weiteres Vorgehen im Projekt

Einführung in die OOP mit Java

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

Transkript:

Abschnitt 15: Unified Modeling Language (UML) 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified Modeling Language (UML) Informatik 2 (SS 07) 563 Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified Modeling Language (UML) 1 Grundlagen Informatik 2 (SS 07) 564

Was ist UML? Die Unified Modelling Language (UML) ist eine Konzeptsprache zur Modellierung von Software-Systemen (insbesondere, aber nicht zwingend: objektorientierter Programme). UML ist eine Art Pseudo-Code, der allerdings eine wohl-definierte Semantik besitzt und von vielen Programmen verarbeitet werden kann. UML bietet sogar die Möglichkeit, Code-Fragmente oder gesamte Implementierungen anzugeben (z.b. in Java-Notation). Es gibt Tools, die daraus automatisch Java-Code generieren, der (je nach Modellierungstiefe) auch ausführbar ist. UML-Code selbst ist nicht ausführbar. Dennoch wird UML von vielen Experten als Prototyp für die nächste Generation von Programmiersprachen betrachtet. 15 Unified Modeling Language (UML) 1 Grundlagen Informatik 2 (SS 07) 565 Bestandteile von UML Die UML-Notation folgt einer intuitiven Diagramm-Notation. Eigentlich umfasst UML ein ganzes System von Konzeptsprachen, d.h. es gibt verschiedene Diagramm-Typen. Jeder Diagrammtyp hat seinen eigenen Fokus, z.b. die statische Klassen-Struktur (Klassendiagramm, Class Diagram), die abstrakte Funktionalität des Programms (Anwendungsfalldiagramm, Use Case Diagram) die möglichen Zustände und Zustandsübergänge, die ein Objekt einer bestimmten Klasse während seiner Existenz einnehmen bzw. ausführen kann (Zustandsdiagramm, State Machine Diagramm) 15 Unified Modeling Language (UML) 1 Grundlagen Informatik 2 (SS 07) 566

Klassendiagramme Im Rahmen dieser Vorlesung werden wir nur kurz auf Klassendiagramme eingehen und lernen, wie die oo Konzepte in UML modelliert werden. Einen tieferen Einblick in UML erhalten Sie in den Vorlesungen zur Software-Entwicklung im Hauptstudium. Klassendiagramme (auch: Objektdiagramme) beschreiben die statische Struktur eines Programms. Die konzeptionelle Sicht steht dabei im Vordergrund, die Realisierungsdetails werden meist mit anderen Diagrammtypen beschrieben. Klassendiagramme beschreiben im Wesentlichen die Klassen, Objekte und deren Beziehungen zu einander. 15 Unified Modeling Language (UML) 1 Grundlagen Informatik 2 (SS 07) 567 Road Map Insbesondere werden wir im Folgenden noch einmal alle (Java-) Konzepte betrachten, die wir in diesem Teil der Vorlesung diskutiert haben. Wir werden uns anschauen, wie diese Konzepte in UML aufgeschrieben bzw. umgesetzt werden werden. Wir werden jedes Konzept noch einmal vor dem Hintergrund der 5 Grundideen der oo Modellierung diskutieren: Abstraktion (Zusammenfassen ähnlicher Objekte, Vernachlässigung von Details) Kapselung (Verstecken von Realisierungsdetails) Wiederverwendung (von Code zur Vermeidung von Fehlern und Steigerung der Robustheit von Programmen) Beziehungen (Assoziationen) zwischen den Objekten verschiedener Klassen Polymorphismus 15 Unified Modeling Language (UML) 1 Grundlagen Informatik 2 (SS 07) 568

Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 569 Wiederholung Klassen modellieren die gemeinsamen Eigenschaften von Objekten, insbesondere deren Attribute und Methoden. Attribute beschreiben den Zustand von Objekten einer Klasse und sollten für andere Benutzer (z.b. Objekte) verborgen sein. Methoden beschreiben das Verhalten der Objekte einer Klasse und sollten für andere Benutzer bekannt und verfügbar sein. Welche oo Modellierungsaspekte werden durch die Konzepte der Klassen und Objekte realisiert? 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 570

Klassen Allgemeine Form einer Klassendefinition in UML: KlassenName <<Attribute>> attributname : Typ Stereotypen <<Methoden>> methodenname(eingabeparameter) : AusgabeTyp 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 571 Sichtbarkeit Die Sichtbarkeit von Methoden und Attributen muss spezifiziert sein (beachte Kapselung/Abstraktion). Die Symbole zur Spezifikation der Sichtbarkeit von Klassen und deren Elementen sind Java nachempfunden: UML-Symbol entspricht in Java + bzw. public public # bzw. protected protected ~ bzw. package (default) - bzw. private private Achtung: Es gibt in UML keine Default-Spezifikation für Elemente einer Klasse, d.h. deren Sichtbarkeit muss immer explizit angegeben sein! 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 572

Objekte Konkrete Objekte einer Klasse werden in UML wie folgt dargestellt: OID:KlassenName :KlassenName OID <<Attribute>> attributname : Wert oder <<Attribute>> attributname : Wert oder <<Attribute>> attributname : Wert 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 573 Beispiel: Klassen und Objekte Ein Beispiel für die Klasse Einfamilienhaus mit drei konkreten Objekten. Einfamilienhaus Klasse <<Attribute>> - haustyp : String - besitzer : String - adresse : String - wohnflaeche : double - anzbaeder : int - verkaufspreis : double <<Methoden>> + verkaufspreisanzeigen() : double :Einfamilienhaus efh6 efh4:einfamilienhaus Objekte haustyp : Landhaus besitzer : Dr. Kaiser adresse : Solln wohnflaeche : 400 anzbaeder : 3 verkaufspreis : 2000000.0 haustyp : Stadthaus besitzer : Herzog adresse : Laim wohnflaeche : 220 anzbaeder : 2 verkaufspreis : 1000000.0 haustyp : Bungalow besitzer : Miller adresse : Freimann wohnflaeche : 250 anzbaeder : 2 verkaufspreis : 1200000.0 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 574

Kommentare Kommentare werden in UML wie folgt dargestellt: Einfamilienhaus <<Attribute>> - haustyp : String - besitzer : String - adresse : String - wohnflaeche : double - anzbaeder : int - verkaufspreis : double <<Methoden>> + verkaufspreisanzeigen() : double <<Kommentar>> Adresse = Ort des Objekts <<Kommentar>> double verkaufspreisanzeigen() { return verkaufspreis; } 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 575 Assoziationen Wir hatten gesehen, dass Objekte verschiedener Klassen nicht isoliert voneinander existieren, sondern dass es die folgenden drei Arten von Beziehungen geben kann: Verwendungs- und Aufrufbeziehungen, Aggregation und Komposition ( part-of -Beziehungen), Generalisierung und Spezialisierung ( is-a -Beziehungen). Wir sehen uns zunächst kurz Verwendungsbeziehungen, Aggregation und Komposition an. Generalisierung behandeln wir später in einem eigenen Unterkapitel. 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 576

Allgemeine Assoziation Verwendungsbeziehungen sind die allgemeinste Form von Assoziationen zwischen Objekten verschiedener Klassen. Die Situation, dass Objekte der Klasse A Objekte der Klasse B verwenden und umgekehrt, stellt man in UML wie folgt dar: A mult mult bezeichnet die Multiplizität der Assoziation. mult Die Assoziation kann auch gerichtet werden, z.b. wenn nur Objekte der Klasse B Objekte der Klasse A verwenden: A mult B B 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 577 Multiplizität einer Assoziation Für mult kann (u.a.) stehen: * beliebig viele, n..m mindestens n, maximal m, Zusatz {unique}: die verwendeten Objekte sind alle paarweise verschieden, Zusatz {ordered}: die verwendeten Objekte sind geordnet (impliziert {unique}). 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 578

Beispiel: Assoziationen Warteschlange * {ordered} Eintrag Person 1..* * {unique} Firma * Termin * <<Kommentar>> Ein Termin kollidiert mit einem anderen Termin 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 579 Aggregation Die Situation, dass Objekte der Klasse A aus Objekten der Klasse B zusammengesetzt sind, die Zusammensetzung aber nicht essentiell für die Existenz eines Objekts der Klasse A ist (Aggregation) stellt man in UML wie folgt dar: A B Auch hier kann man Multiplizitäten angeben. 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 580

Komposition Die Situation, dass Objekte der Klasse A aus Objekten der Klasse B zusammengesetzt sind und diese Zusammensetzung essentiell für die Existenz eines Objekts der Klasse A ist (Komposition) stellt man in UML wie folgt dar: A B Auch hier kann man Multiplizitäten angeben. 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 581 Beispiel: Aggregation und Komposition Beispiele für Aggregation und Komposition: Gueterzug Lokomotive Anhaenger Dach 15 Unified Modeling Language (UML) 2 Klassen und Objekte Informatik 2 (SS 07) 582

Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified Modeling Language (UML) 3 Vererbung Informatik 2 (SS 07) 583 Generalisierung/Spezialisierung Eine weitere wichtige Art der Beziehung zwischen Objekten verschiedener Klassen ist die Vererbungs-Relation (Generalisierung/Spezialisierung). In UML wird die Vererbungsbeziehung zwischen der Vaterklasse A und der abgeleiteten Klasse B dargestellt als: A B Insbesondere können nun überall dort, wo Objekte der Klasse A vorkommen dürfen, auch Objekte der Klasse B vorkommen. Welches oo Modellierungskonzept wird dabei realisiert? 15 Unified Modeling Language (UML) 3 Vererbung Informatik 2 (SS 07) 584

Beispiel: Generalisierung/Spezialisierung Unser Beispiel von vorher: Fahrzeug Wasserfahrzeug Strassenfahrzeug Schienenfahrzeug Faehrschiff Anhaenger Gueterzug Lokomotive Auto Motorrad Lastwagen Dach Welche grundlegenden oo Konzepte sind hier zu erkennen? 15 Unified Modeling Language (UML) 3 Vererbung Informatik 2 (SS 07) 585 Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified Modeling Language (UML) 4 Schnittstellen Informatik 2 (SS 07) 586

Interfaces Ein Interface spezifiziert eine gewisse Funktionalität, ist selbst aber nicht instanziierbar. In UML werden Interfaces wie Klassen dargestellt, allerdings wird vor dem Interfacenamen der Stereotyp «interface» notiert: <<interface>> InterfaceName methodenname (Parameter) : RückgabeTyp Welche oo Modellierungsideen werden vom Konzept der Interfaces realisiert? 15 Unified Modeling Language (UML) 4 Schnittstellen Informatik 2 (SS 07) 587 Realisierungsbeziehung Implementiert eine Klasse ein Interface, müssen alle Methoden des Interfaces in der Klasse implementiert werden. Eine Realisierungsbeziehung zwischen einem Interface und einer (implementierenden) Klasse wird in UML folgendermaßen umgesetzt: <<interface>> RaemlichesObjekt laenge () : int hoehe() : int breite() : int - format : int + laenge() : int + breite() : int + hoehe() : int PapierBlatt 15 Unified Modeling Language (UML) 4 Schnittstellen Informatik 2 (SS 07) 588

Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified Modeling Language (UML) 5 Generische Typen Informatik 2 (SS 07) 589 Grenzen der Vererbungs-Polymorphie Gegeben folgendes Beispiel: Tier Stall + setbewohner(tier) + getbewohner() : Tier Schaf Kuh Welche Probleme können bei dieser Modellierung auftreten? 15 Unified Modeling Language (UML) 5 Generische Typen Informatik 2 (SS 07) 590

Templates Als Lösung des Problems haben wir typisierbare Klassen kennengelernt, in Java auch Generics genannt. In UML heißen typisierbare Klassen auch Templates. Unser Beispiel von der vorhergehenden Folie wird mit Templates in UML so dargestellt: Tier Stall T: Tier - bewohner :T <<bind>> <T = Kuh> + setbewohner(t) + getbewohner() : T <<bind>> <T = Schaf> Schaf Stall<Schaf> Kuh Stall<Kuh> Warum ist unser Problem nun gelöst? 15 Unified Modeling Language (UML) 5 Generische Typen Informatik 2 (SS 07) 591 Templates vs. Vererbung Gegeben folgendes Beispiel: Object equals(object) : boolean <<interface>> Comparable compareto(t) : int T: Object <<bind>> <T = Hund> Hund equals(object) : boolean compareto(hund) : int Was ist der Unterschied zwischen der (überschriebenen) Methode equals und der (implementierten) Methode compareto? 15 Unified Modeling Language (UML) 5 Generische Typen Informatik 2 (SS 07) 592

Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified Modeling Language (UML) 6 Pakete Informatik 2 (SS 07) 593 Packages Packages gruppieren Klassen, die einen gemeinsamen Aufgabenbereich haben. In einem UML Klassendiagramm kann dies folgendermaßen notiert werden: PaketName1 PaketName2 Klassendiagramm für die Klassen in diesem Paket Klassendiagramm für die Klassen in diesem Paket Bemerkung: Natürlich kann es Beziehungen zwischen Klassen unterschiedlicher Pakete geben. Welche grundlegenden oo Modellierungsaspekte werden durch das Konzept der Pakete realisiert? 15 Unified Modeling Language (UML) 6 Pakete Informatik 2 (SS 07) 594