Einführung in die Programmierung

Ähnliche Dokumente
Abschnitt 15: Unified Modeling Language (UML)

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

Einführung in die Programmierung

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

Einführung in die Programmierung

Einführung in die Programmierung

Einführung in die Programmierung

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

Unified Modelling Language

Vorlesung Programmieren

UML -Klassendiagramme

Einführung in die objektorientierte Programmierung

UML (Unified Modelling Language) von Christian Bartl

Rückblick: Entity-Relationship-Modell

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure

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

Einführung in die Programmierung

Realität zu modellieren eine

Einführung in die Programmierung

NACHRICHTENTECHNISCHER SYSTEME

Teil II: OOP und JAVA (Vorlesung 9)

Einführung in die Programmierung

Algorithmen und Datenstrukturen 06

Unified Modeling Language 2

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

Softwaretechnologie für Fortgeschrittene Wohce 4 Modellierung UML

Java Einführung Objektorientierte Grundkonzepte

Analyse und Design mituml2

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

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

Herzlich willkommen!

Überblick. 6. Grundlagen der objektorientierten Programmierung 6.1 Abstrakte Datentypen: von Structures zu Klassen 6.2 Das objektorientierte Paradigma

Objektorientierte Analyse (OOA) Strukturmodellierung

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

Vorlesung Programmieren

Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten

Abschnitt 10: Datenstrukturen

Einführung in die Objektorientierte Programmierung Vorlesung 2: Mikroskopisches und Makroskopisches Computational Thinking.

Analyse und Modellierung von Informationssystemen

Vorlesung Informationssysteme

Geoinformation I Datenmodellierung

Abschnitt 10: Klassen, Objekte und Methoden in Java

Einführung in die Programmierung

Kapitel 1: Informationsverarbeitung durch Programme

Analyse und Design mituml2.1

Objektorientierte Programmierung (OOP)

Algorithmen und Datenstrukturen

Programmiertechnik Objektorientierung

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

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

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

UML Eine kurze Einführung

Kapitel 3: Datenbanksysteme

Analyse und Design mit U ML 2.3

Objektorientierte Modellierung (1)

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

Klausur. Softwareentwurf. 22. März 2011 Bearbeitungszeit: 120 Minuten

3. Objektorientierte Analyse

Die Unified Modeling Language UML

01. Grundprinzipien der Vererbung

Das UML Benutzerhandbuch

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

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

Objektorientierte Programmierung III

Software- und Systementwicklung

Modellierungstipps für die Anwendungsfallmodellierung

Assoziationen in Java

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

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

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

Beziehungen zwischen Klassen

Einführung in die Programmierung

Informatik I - Programmierung Globalübung Objektorientierung. Objektorientierung Konzepte & Notationen

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

Einführung. Einführung

Objektorientierte Modellierung

Einführung in die Programmierung

Das UML Benutzerhandbuch

Objektorientierte Systementwicklung

UML. Weiteres Vorgehen im Projekt

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

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

Java-Programmierung mit NetBeans

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

Programmiermethodik. Übung 2

Objektorientes Design & Programm

10. Programmierungs-Phase: Objektorientierung Software Engineering

Requirements Engineering I

Kapitel

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

Modellieren mit der Unified Modeling Language: Klassen- und Objektdiagramme. 11. November 2014

1 4. Datenmodellierung mit der Unified Modeling Language (UML)

Klausur. Softwareentwurf. 14. Februar 2011 Bearbeitungszeit: 120 Minuten

Klausur. Softwareentwurf. 04. Februar 2013 Bearbeitungszeit: 120 Minuten

Unified Modeling Language (UML )

Einführung in die Informatik

Transkript:

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 EIP Kapitel 9: Objektorientierter Entwurf mit der Unified Modeling Language (UML)

Gliederung 9. Objektorientierter Entwurf mit der Unified Modeling Language (UML) 9.1 Einführung 9.2 Klassen und Objekte 9.3 Beziehungen zwischen Klassen / Objekten EIP Kapitel 9: Objektorientierter Entwurf mit der Unified Modeling Language (UML) # 2

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). EIP Kapitel 9.1: Einführung # 3

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 wohldefinierte 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. EIP Kapitel 9.1: Einführung # 4

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) EIP Kapitel 9.1: Einführung # 5

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. EIP Kapitel 9.1: Einführung # 6

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. EIP Kapitel 9.2: Klassen und Objekte # 7

Klassen Allgemeine Form einer Klassendefinition in UML: KlassenName <<Attribute>> attributname : Typ Stereotypen <<Methoden>> methodenname(eingabeparameter) : AusgabeTyp EIP Kapitel 9.2: Klassen und Objekte # 8

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! EIP Kapitel 9.2: Klassen und Objekte # 9

Objekte Konkrete Objekte einer Klasse werden in UML wie folgt dargestellt: OID:KlassenName <<Attribute>> attributname : Wert oder :KlassenName <<Attribute>> attributname : Wert oder OID <<Attribute>> attributname : Wert EIP Kapitel 9.2: Klassen und Objekte # 10

Beispiel: Klassen und Objekte Beispiel: Die Klasse Einfamilienhaus mit drei konkreten Objekten. Einfamilienhaus Klasse <<Attribute>> - haustyp : String - besitzer : String - adresse : String - wohnflaeche : double - anzbaeder : int -verkaufspreis : double :Einfamilienhaus <<Methoden>> + verkaufspreisanzeigen() : double 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 EIP Kapitel 9.2: Klassen und Objekte # 11

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 EIP Kapitel 9.2: Klassen und Objekte # 12

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). EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten # 13

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: A mult mult B 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 mult B EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten # 14

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}). EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten # 15

Beispiel: Assoziation Warteschlange * {ordered} Eintrag Person 1..* {unique} * {ordered} Firma Termin * * EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten # 16

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. EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten # 17

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. EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten # 18

Beispiel: Aggregation und Komposition Beispiele für Aggregation und Komposition: Güterzug Lokomotive Güterzug Dach EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten # 19

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? EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten # 20

Generalisierung / Spezialisierung Unser Beispiel von vorher: Fahrzeug Schienenfahrzeug Strassenfahrzeug Wasserfahrzeug Faehrschiff Anhaenger Gueterzug Lokomotive Auto Motorrad Lastwagen Dach Welche grundlegenden OO Konzepte sind hier zu erkennen? EIP Kapitel 9.3: Beziehungen zwischen Klassen / Objekten # 21