21
EIP Kapitel 9: Objektorientierter Entwurf mit der Unified Modeling Language (UML) Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript © 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität München Institut für Informatik Lehr- und Forschungseinheit für Datenbanksysteme

Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

  • Upload
    vantu

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

EIP Kapitel 9: Objektorientierter Entwurf mit der Unified Modeling Language (UML)

Skript zur Vorlesung:

Einführung in die ProgrammierungWiSe 2009 / 2010

Skript © 2009 Christian Böhm, Peer Kröger, Arthur Zimek

Prof. Dr. Christian BöhmAnnahita OswaldBianca Wackersreuther

Ludwig-Maximilians-Universität MünchenInstitut für InformatikLehr- und Forschungseinheit für Datenbanksysteme

Page 2: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 2EIP Kapitel 9: Objektorientierter Entwurf mit der Unified Modeling Language (UML)

Gliederung

9. Objektorientierter Entwurf mit der Unified Modeling Language (UML)9.1 Einführung9.2 Klassen und Objekte9.3 Beziehungen zwischen Klassen / Objekten

Page 3: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 3EIP Kapitel 9.1: Einführung

Objektorientierte Algorithmenentwicklung

• Wie schon bei der imperativen oder funktionalen Programmierung ist der Entwurf der eigentlichen Algorithmen (und damit die Modellierung der Problemstellung) die entscheidende Herausforderung.

• Den fertigen Entwurf in einer OO Programmiersprache zu implementieren ist dann wiederum relativ trivial.

• Im folgenden schauen wir uns eine Konzeptsprache an, die den OO Entwurf unterstützt: Die Unified Modelling Language (UML).

Page 4: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 4EIP Kapitel 9.1: Einführung

Was ist UML?

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

Page 5: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 5EIP Kapitel 9.1: Einführung

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 Diagram)

Page 6: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 6EIP Kapitel 9.1: Einführung

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.

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

Page 7: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 7EIP Kapitel 9.2: Klassen und Objekte

Grundlagen

• Wie bereits erwähnt setzen die Konzepte der Klassen und Objekte die OO Grundkonzepte “Abstraktion” und “Kapselung” um.

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

Page 8: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 8EIP Kapitel 9.2: Klassen und Objekte

Klassen

Allgemeine Form einer Klassendefinition in UML:

KlassenName

<<Attribute>>attributName : Typ…

<<Methoden>>methodenName(EingabeParameter) : AusgabeTyp…

Stereotypen

Page 9: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 9EIP Kapitel 9.2: Klassen und Objekte

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 unter anderem:− + bzw. Public: Das entsprechende Element (Attribut / Methode) ist von

außen (z.B. Objekten anderer Klassen) sichtbar.− - bzw. Private: Das entsprechende Element (Attribut / Methode) ist von

außen (z.B. Objekten anderer Klassen) NICHT sichtbar.

• Darüberhinaus gibt es weitere Möglichkeiten, die Sichtbarkeit von Elementen einer Klasse zu spezifizieren. Diese lernen wir später kennen.

• Achtung: Es gibt in UML (anders als z.B. in Java) keine Default-Spezifikation für Elemente einer Klasse, d.h. deren Sichtbarkeit muss immer explizit angegeben sein!

Page 10: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 10EIP Kapitel 9.2: Klassen und Objekte

Objekte

Konkrete Objekte einer Klasse werden in UML wie folgt dargestellt:

oder

oder

OID:KlassenName

<<Attribute>>attributName : Wert…

:KlassenName

<<Attribute>>attributName : Wert…

OID

<<Attribute>>attributName : Wert…

Page 11: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 11EIP Kapitel 9.2: Klassen und Objekte

Beispiel: Klassen und ObjekteBeispiel: Die Klasse “Einfamilienhaus” mit drei konkreten Objekten.

Einfamilienhaus

<<Attribute>>- haustyp : String- besitzer : String- adresse : String- wohnflaeche : double- anzBaeder : int-verkaufsPreis : double

<<Methoden>>+ verkaufspreisAnzeigen() : double…

efh4:Einfamilienhaus

haustyp : „Bungalow“besitzer : „Miller“adresse : „Freimann“wohnflaeche : 250anzBaeder : 2verkaufsPreis : 1200000.0

efh6

haustyp : „Stadthaus“besitzer : „Herzog“adresse : „Laim“wohnflaeche : 220anzBaeder : 2verkaufsPreis : 1000000.0

:Einfamilienhaus

haustyp : „Landhaus“besitzer : „Dr. Kaiser“adresse : „Solln“wohnflaeche : 400anzBaeder : 3verkaufsPreis : 2000000.0

Objekte

Klasse

Page 12: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 12EIP Kapitel 9.2: Klassen und Objekte

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…

Page 13: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 13EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten

Assoziationen

• Objekte verschiedener Klassen existieren nicht isoliert voneinander; es kann die folgenden drei Arten von Beziehungen geben:− Verwendungs- und Aufrufbeziehungen,− Aggregation und Komposition (“part-of”-Beziehungen),− Generalisierung und Spezialisierung (“is-a”-Beziehungen).

Page 14: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 14EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten

Allgemeine Assoziationen

• 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:

• mult bezeichnet die Multiplizität der Assoziation.• Die Assoziation kann auch gerichtet werden, z.B. wenn nur

Objekte der Klasse B Objekte der Klasse A verwenden:

A B

A B

mult mult

mult

Page 15: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 15EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten

Multiplizität einer Assoziationen

• 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}).

Page 16: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 16EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten

Beispiel: Assoziation

Warteschlange Eintrag*

{ordered}

Person Firma*

{ordered}1..*{unique}

Termin*

*

Page 17: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 17EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten

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:

• Auch hier kann man Multiplizitäten angeben.

A B

Page 18: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 18EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten

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:

• Auch hier kann man Multiplizitäten angeben.

A B

Page 19: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 19EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten

Beispiel: Aggregation und Komposition

Beispiele für Aggregation und Komposition:

Güterzug Lokomotive

Güterzug Dach

Page 20: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 20EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten

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:

• Insbesondere können nun überall dort, wo Objekte der Klasse Avorkommen dürfen, auch Objekte der Klasse B vorkommen. Welches OO Modellierungskonzept wird dabei realisiert?

A B

Page 21: Skript zur Vorlesung: Einführung in die Programmierung · −die statische Klassen-Struktur (Klassendiagramm, Class Diagram), ... # 6. Klassendiagramme • Im Rahmen dieser Vorlesung

# 21EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten

Generalisierung / Spezialisierung

Unser Beispiel von vorher:

Welche grundlegenden OO Konzepte sind hier zu erkennen?

Fahrzeug

Wasser-fahrzeug

Schienen-fahrzeugStrassen-

fahrzeug

Faehrschiff

AutoMotor-

radLast-wagen

An-haenger

Gueter-zug

Loko-motive

Dach