Programmierkurs. 13. Vorlesung. Sven Mallach. 27. Januar Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 69

Größe: px
Ab Seite anzeigen:

Download "Programmierkurs. 13. Vorlesung. Sven Mallach. 27. Januar Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 69"

Transkript

1 Programmierkurs 13. Vorlesung Sven Mallach Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 27. Januar / 69

2 UML Teile der Vorlesungsfolien dieses Kapitels enthalten Grafiken und Inhalte aus dem Buch: Heide Balzert - Lehrbuch der Objektmodellierung 2. Auflage, 2005, Elsevier Verlag. 2/ 69

3 UML Was ist UML? UML bedeutet Unified Modelling Language und ist ein Standard zur graphischen Darstellung von Programmbestandteilen wie Klassen, Methoden und Attributen und der Modellierung der Beziehungen zwischen ihnen. Die aktuelle Version des UML-Standards ist die Version 2.0. Wir behandeln heute insbesondere die Diagrammformen, mit denen sich o.g. Dinge anschaulich visualisieren lassen. 3/ 69

4 UML Warum UML? Im wesentlichen 2 Gründe: Einerseits dienen UML-Diagramme der Veranschaulichung und ermöglichen es, Programmbestandteile einfach und kompakt darzustellen und unter Entwicklern auszutauschen. Andererseits werden insbesondere größe Softwareprojekte vor Schreiben der ersten Zeile Quellcode erstmal sehr ausführlich geplant. Auch dies geschieht häufig mit Modellierungswerkzeugen wie UML. Die Kenntnis dieser Konzepte bildet für Sie eine Grundlage im Umgang mit typischer Programmierer-Literatur und professionellen Entwicklern. 4/ 69

5 UML - Notation für Klassen Eine Klasse wird in UML auf folgende dreiteilige Art und Weise dargestellt: Klassenname Attribute Methoden 5/ 69

6 UML - Notation für Klassen Für Attribute und Methoden kann zusätzlich ihr Zugriffsmodifizierer modelliert werden, indem vor den Bezeichner eines der folgenden Symbole (gefolgt von einem Leerzeichen) angegeben wird. Symbol Modifizierer + public # protected - private ~ package-private 6/ 69

7 UML - Notation für Klassen Es gibt noch weitere Feinheiten in der Darstellung: Klassenattribute und -Methoden (static) werden unterstrichen. Für Attribute kann eine Multiplizität angegeben werden, die definiert, wieviele Werte ein solches Attribut speichern können soll. Dies dient insbesondere der Modellierung von Arrays und Vektoren, bzw. Listen. Attributen kann außerdem ein Startwert zugewiesen werden. Bei abstrakten Klassen wird der Klassenname kursiv gestellt 7/ 69

8 UML - Notation für Klassen Beispiele für Multiplizitäten: Attribut Bedeutung note: float [0..10] 0 bis 10 Noten sollen gespeichert werden können note: float [1..10] Höchstens 10 können, aber mindestens 1 Note muss gespeichert werden note: float [0..*] Die obere Schranke kann nicht festgelegt werden note: float [1..1] Verstärkter Ausdruck, dass es genau eine Note sein muss Außerdem möglich Startwert: note: float = 1.0 Angabe von zusätzlichen Eigenschaften mittels geschweifter Klammern, etwa: note: float {readonly} 8/ 69

9 UML - Notation für Objekte Wie wir wissen können (nicht-abstrakte) Klassen instantiiert werden, es gilt daher auch Objekte darstellen zu können. Wenn man einen Schnappschuss der Zustände eines Programms zur Laufzeit darstellen möchte, kann man Objekte konkret benennen. Für eine beispielhafte Referenzbeschreibung eines Objekts ist dies in der Regel aber nicht notwendig. 9/ 69

10 UML - Notation für Objekte Ein Objekt wird in UML auf folgende Art und Weise dargestellt: Klassenname Attribute Der Name des Objekts kann optional vor dem Doppelpunkt in der Kopfzeile angegeben werden. Auf die erneute Darstellung der Methoden der Klasse wird hier aus offensichtlichen Gründen verzichtet. 10/ 69

11 UML Zwischen Klassen oder Objekten können Beziehungen bestehen. In UML nennen wir solche Beziehungen auch Assoziationen. Zwischen konkreten Objekten besteht in der Regel eine direkte 1-zu-1-Beziehung, d.h. ein Objekt besitzt ein anderes als Attribut. Zwischen Klassen kann es auch eine 1-zu-viele-Beziehung geben, die in UML erneut mit Hilfe von Multiziplitäten ausgedrückt wird. 11/ 69

12 UML - Objektdiagramm Ein kleines Objektdiagramm mit Assoziationen: 12/ 69

13 UML - Klassendiagramm Ein sehr kleines Klassendiagramm mit Assoziationen: 13/ 69

14 UML - Klassen- und Objektdiagramme Multiziplitäten für Klassen- und Objektdiagramme: 14/ 69

15 UML - Assoziationsklassen Wenn eine Assoziation zwischen Objekten zweier Klassen eine feste Struktur hat und ebenfalls in Attributen bzw. einer Klasse ausgedrückt werden kann, so kann man zur Modellierung eine Assoziationsklasse verwenden. 15/ 69

16 UML - spezielle Assoziationen Neben der allgemeinen Assoziation, die die Art der Beziehung zwischen Objekten und Klassen noch wenig spezifiziert (aber auch durch Texte an den Linien bereichert werden darf), gibt es drei weitere spezielle Formen in der UML: Aggregation Komposition Generalisierung 16/ 69

17 UML - Aggregation Eine Aggregation drückt aus, das eine Klasse aus mehreren Teilen zusammengesetzt ist. Ihre Objekte können nicht ohne ihre Bestandteile existieren. Eine Aggregation wird mittels einer transparenten Raute an der jeweiligen Klasse ausgedrückt. Als Beispiel betrachten wir etwa ein Buch, welches aus Teilen (den Kapiteln) zusammengesetzt ist. 17/ 69

18 UML - Aggregation 18/ 69

19 UML - Komposition Eine Komposition ist eine sehr starke Aggregation. Die zusätzlichen Anforderungen sind: Jedes Objekt einer Teilklasse kann - zu einem Zeitpunkt - nur Komponente eines einzigen Objekts der Aggregat-Klasse sein. Bei der Erzeugung des Aggregat-Objekts können auch Teil-Objekte erzeugt werden. Bei Zerstörung des Aggregat-Objekts können automatisch auch Teile von ihm gelöscht werden. Eine Komposition wird mittels einer intransparenten (ausgefüllen / schwarzen) Raute an der jeweiligen Klasse ausgedrückt. Als Beispiel betrachten wir etwa ein Verzeichnis, welches aus Teilen (den enthaltenen Dateien) zusammengesetzt ist. Wird es gelöscht, werden auch alle enthaltenen Dateien gelöscht. 19/ 69

20 UML - Komposition 20/ 69

21 UML - Generalisierung Wie der Name schon andeutet, modelliert die Generalisierung exakt das Vererbungskonzept objektorientierter Programmiersprachen. Das generalisierte Objekt entspricht der Basisklasse, die Subklassen sind die Spezialisierungen. Ein Subklassen-Objekt ist ein Objekt der generalisierenden Klasse. Eine Generalisierung wird mittels ein transparentes Dreieck an der generalisierenden Klasse ausgedrückt. 21/ 69

22 UML - Generalisierung 22/ 69

23 UML - Anwendungsfälle Neben der reinen Modellierung von Programmbestandteilen und ihren Zusammenhängen, kann mit Hilfe von UML auch die Verwendung eines Programms modelliert werden. Eine typische (und intendierte) Verwendung eines Programms, nennt man einen Anwendungsfall, engl. Use Case. Ein Anwendungsfall besteht aus: einem oder mehreren Akteuren (Personen oder Systeme), die nicht Bestandteil des Programms sind, sondern von außen mit ihm interagieren und einer Sequenz von Aktionen, etwa Aufrufe von Methoden angelegter Objekte. 23/ 69

24 UML - Anwendungsfälle Ein Anwendungsfalldiagramm beschreibt nun, welche Art von Akteuren welche Interaktionen mit dem Programm ausführen (sollen). 24/ 69

25 UML - Anwendungsfälle Ähnlich wie Klassen können Anwendungsfälle auch spezialisiert werden. Die Darstellung einer Generalisierung erfolgt wie beim Klassendiagramm. 25/ 69

26 UML - Anwendungsfälle Unter Verwendung von gestrichelten Linien zwischen Anwendungsfällen und den Schlüsselworten <<include>> - Enthaltenseins-Beziehung - modelliert Aufruf einer untergeordneten Prozedur <<extends>> - Erweiterungs-Beziehung - Erweiterung einer Basisfunktionalität, ggf. unter Angabe von Bedingungen, wann die erweiterte Funktionalität zu verwenden ist. können weitere Feinheiten in Anwendungsfalldiagrammen beschrieben werden. 26/ 69

27 UML - Aktivitäten Stark mit der Idee eines Anwendungsfalls verbunden ist das Konzept der Aktivitäten. Eine Aktivität ist ein zusammengehöriger Kontrollfluss, wie er bei der Verwendung eines Programms entsteht oder entstehen soll. Aktivitäten können mit Hilfe von Aktivitätsdiagrammen modelliert werden. 27/ 69

28 UML - Aktivitätsdiagramm Startsymbol Bedingung Zusammenführung Aktion Verzweigung Endsymbol Ereignis-Sender Ereignis-Empfänger 28/ 69

29 UML - Sequenzdiagramme Eine weitere Möglichkeit Programmabläufe zu modellieren und dabei nun die Interaktion konkreter Objekte mit einzubinden, ist das Sequenzdiagramm. Sequenzdiagramme beinhalten die Lebensdauer von Objekten und zeigen, welche Informationen sie untereinander (durch Methodenaufrufe, -Parameter, und -Rückgabewerte) austauschen. 29/ 69

30 UML - Sequenzdiagramme 30/ 69

31 UML - Sequenzdiagramme - Beispiel 31/ 69

32 UML - Zustandsdiagramme 32/ 69

33 Entwurfsmuster (Design Patterns) Die Vorlesungsfolien dieses Kapitels basieren auf dem Standardwerk der Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns. Elements of Reusable Object-Oriented Software. Addison Wesley, / 69

34 Entwurfsmuster Was sind Entwurfsmuster? Viele Aufgaben und Probleme wiederholen sich in der Programmierung immer und immer wieder. Ob innerhalb eines Programms oder in verschiedenen Programmen, so orientiert sich beispielsweise der Aufbau einiger Klassen immer nach einem mehr oder weniger gleichen Schema. Entwurfsmuster bieten eine standardisierte, bewährte, generische und programmiertechnisch saubere Lösung für viele typische Klassenentwurfsprobleme. Kernziel sind etwa Vermeidung von redundantem Code, Erweiterbarkeit, Modularität und andere programmiertechnische Gesichtspunkte. 34/ 69

35 Mustertypen Klassifikation von Entwurfsmustern nach ihrem Anwendungsbereich: Klassenmuster beschreiben Beziehungen zwischen Klassen und bauen vorrangig Vererbungsstrukturen auf. Die Strukturen sind damit zur Übersetzungszeit festgelegt. Objektmuster nutzen vorrangig Assoziationen und Aggregationen zur Beschreibung von Beziehungen zwischen Objekten. Die durch sie beschriebenen Strukturen zwischen Objekten sind zur Laufzeit dynamisch änderbar. 35/ 69

36 Mustertypen Hinsichtlich ihrer konkreten Aufgaben wird außerdem noch eine weitere Klassifikation von Entwurfsmustern vorgenommen. Erzeugungsmuster - Helfen, ein System unabhängig davon zu machen, wie seine Objekte erzeugt, zusammengesetzt und repräsentiert werden. Strukturmuster - Erlauben den strukturierten Aufbau größerer Klassen und Objekte aus kleineren Teilen. Verhaltensmuster - Helfen, die Interaktion zwischen Objekten in den Fokus der Implementierung zu legen. 36/ 69

37 Erzegungsmuster 1. Erzeugungsmuster Hier behandelt: Factory Singleton 37/ 69

38 Erzeugungsmuster - Factory Das Klassen-Erzeugungsmuster Factory wird auch Fabrikmethode oder virtueller Konstruktor genannt (virtuelle bzw abstrakte Konstruktoren sind in direkter Form weder in C++ noch in Java erlaubt). Ein anschauliches Anwendungsszenario thematisiert ein Framework für verschiedene Anwendungen, die verschiedene Dokumenttypen bearbeiten können. Es liegt eine Aggregation derart vor, dass die Anwendung (z.b. geöffnete oder neue) Dokumente verwaltet. Man möchte gerne abstrakte Klassen Anwendung und Dokument erstellen, welche die Interaktionen bereits implementieren. D.h. die Klasse Anwendung soll beispielsweise Funktionen wie NewDocument() oder OpenDocument() bereitstellen, wie sie üblicherweise in der Menüleiste zur Verfügung stehen. 38/ 69

39 Erzeugungsmuster - Factory Problem: Die Klasse Anwendung kennt nur die abstrakte Klasse Dokument, aber keine konkreten Dokumenttypen. Folglich kann sie für NewDocument() keine Instantiierung vornehmen. 39/ 69

40 Erzeugungsmuster - Factory Das Factory-Pattern ermöglicht nun, diese Aufgabe an konkrete Anwendungsklassen zu delegieren. Anstatt eines Konstruktoraufrufs der Form new Document() definiert die Klasse Anwendung eine abstrakte Methode CreateDocument(), welche man die Fabrikmethode nennt. 40/ 69

41 Erzeugungsmuster - Factory Diese Fabrikmethode kann nun von konkreten Anwendungen für konkrete Dokumenttypen überschrieben werden. Auf Grund der Vererbungsbeziehung ist jedes konkrete Dokument ein Objekt vom Typ Document, welches die abstrakte Fabrikmethode in der Klasse Anwendung zurückliefern kann. 41/ 69

42 Erzeugungsmuster - Factory Sämtliche Funktionalität, die bereits in der abstrakten Basisklasse definiert wurde, kann entweder einfach übernommen oder in der Subklasse spezialisiert werden (dynamische Bindung). Das Erweitern um zusätzliche Anwendungen und Dokumente reduziert sich somit im Idealfall auf die Implementierung der jeweiligen CreateDocument()-Fabrikmethode und des neuen Dokumenttyps. 42/ 69

43 Erzeugungsmuster - Singleton Ein wichtiger Vertreter der Objekt-Erzeugungsmuster ist Singleton. Dieses Konzept sorgt dafür, dass zur Laufzeit des Programms immer nur eine Instanz einer bestimmten Klasse existieren kann. Singleton stellt eine saubere Alternative zu statischen globalen Variablen dar und findet Verwendung bei allen Klassen, die nur einmalig instantiiert werden sollen. Ein klassisches Beispiel für Klassen, von denen nur ein Objekt benötigt wird, sind Kontroll- und Managementklassen, wie z.b. ein Speichermanager. Ebenso sind Hauptfenster einer graphischen Oberfläche natürliche Kandidaten für Singletons. 43/ 69

44 Erzeugungsmuster - Singleton 44/ 69

45 Erzeugungsmuster - Singleton Singleton-Implementierung in Java: public class Singleton { private static Singleton instance = null; private Singleton() { } public static Singleton instance() { if (instance == null) instance = new Singleton(); } } return instance; 45/ 69

46 Strukturmuster 2. Strukturmuster Hier behandelt: Composite 46/ 69

47 Strukturmuster - Composite Der Anwendungsfall für das Kompositum (Composite) ist eine Klasse, die Objekte unterschiedlicher Subklassen einer abstrakten Basisklasse verwaltet, und selbst eine solche Subklasse ist. Es geht also um die rekursive Verschachtelung von Objekten, die entweder sich selbst oder anderweitig spezialisierte Objekte eines gleichen Basistyps beinhalten. 47/ 69

48 Strukturmuster - Composite Als anschauliches Beispiel dient eine Klasse zur Repräsentation graphischer Bausteine, wie Linien, Rechtecke und Bildern, die alle von einer abstrakten Basisklasse Graphic abgeleitet sind. 48/ 69

49 Strukturmuster - Composite In der Klasse Picture kann nun etwa ein Array von Graphic-Objekten verwaltet werden, die anschließend gezeichnet werden sollen. Dabei kann ein solches Graphic-Objekt auch eine Instanz von Picture sein, welches seinerseits wieder alle möglichen Subtypen von Graphic in einem Array beinhalten kann. 49/ 69

50 Strukturmuster - Composite Es liegt also gleichermaßen eine Aggregation sowie Generalisierungsbeziehungen vor. Diese (auch rekursiv mögliche) Verschachtelung von Objekten kann man sich in etwa folgermaßen vorstellen: 50/ 69

51 Verhaltensmuster 3. Verhaltensmuster Hier behandelt: Observer Visitor 51/ 69

52 Verhaltensmuster - Observer Das Observer-Muster kommt in der Regel zum Einsatz, wenn eine Eins-zu-viele-Beziehung mit starken Abhängigkeiten vorliegt. Die Idee ist es, die Implementierung derart anzupassen, dass wenn sich das beobachtete Objekt verändert, alle davon abhängenden Klassen automatisch über diese Veränderung benachrichtigt werden. Es handelt sich also um ein Objektmuster. 52/ 69

53 Verhaltensmuster - Observer Die Implementierung erfolgt derart, dass die beobachtete Klasse (Subject) eine Schnittstellen-Methode anbietet, über die sich alle ihre Beobachter registrieren können. Alle Klassen, deren Objekte über Änderungen informiert werden sollen, implementieren nun ein gemeinsames Observer-Interface. Anschließend können sich die Objekte selbst mittels o.g. Methode bei der Subject-Klasse als Beobachter registrieren. 53/ 69

54 Verhaltensmuster - Observer Findet nun eine Änderung des Zustands in Subject statt, ruft diese die Methode notify() auf, welche ihrerseits für alle registrierten Observer die update() auslöst. Folglich können diese Objekte nun den neuen Zustand auslesen und somit auf dem aktuellen Stand bleiben. 54/ 69

55 Model-View-Controller Das Verhaltensentwurfsmuster Model-View-Controller (MVC) ist ein Spezialfall des Observer-Modells, welches insbesondere im Zusammenhang mit graphischen Benutzeroberflächen häufig Anwendung findet. Ziele / Eigenschaften des Musters sind insbesondere: Einfache Erweiterbarkeit um neue Ansichten auf dieselben Daten Strikte Trennung von Datenzugriff und Ansicht Zentrale Bündelung der Interaktion zwischen Programm und Benutzer 55/ 69

56 Model-View-Controller - View Die View-Komponente(n) dieses Musters entsprechen in aller Regel Fenstern oder Bestandteilen von Fenstern, die eine gewisse Information graphisch darstellen / aufbereiten. Beispiel: Verschiedene Diagramme zu Wahlergebnissen, die bei Änderung der Prognose alle aktualisiert werden sollen. Es bietet sich daher an, eine Anzeige als Observer zu implementieren. Sie registriert sich als Beobachter des Datenmodells und wird folglich über Änderungen benachrichtigt, auf die sie dann reagiert. 56/ 69

57 Model-View-Controller - Model Das Modell hat in diesem Muster folgende Funktionen: Kapselung sämtlicher Daten und Datenbanken Bereitstellen von Interface-Methoden zur kontrollierten Modifikation dieser Daten Benachrichtigen der observierenden (registrierten) Objekte 57/ 69

58 Model-View-Controller - Controller Der Controller stellt die zentrale Verwaltungseinheit dieses Entwurfsmusters dar. Verursacht der Benutzer oder ein externes Ereignis Änderungen der Modelldaten, so nimmt der Controller diese entgegen und führt diese Änderungen durch Aufruf der Modell-Interfacemethoden durch. 58/ 69

59 Model-View-Controller - Controller Die Interface-Methoden des Modells, die eine Änderung der Daten nach sich ziehen, rufen nun intern die update()-funktion aller registrierten Beobachter (Views) auf. Auch der Controller kann selbst ein Beobachter sein (etwa könnte durch ein erstmaliges Eingeben von Daten eine Speicherfunktion im Menü aktiviert werden.) 59/ 69

60 Model-View-Controller - Controller Sind alle Änderungen propagiert und die Ansichten / Steuerungskomponenten aktualisiert, kann die Kontrolle an den Benutzer zurückgegeben und auf das nächste Ereignis gewartet werden. Abbildung: Model-View-Controller (aus Frank Buschmann - Pattern-orientierte Software-Architektur) 60/ 69

61 Verhaltensmuster - Visitor Zu guter letzt betrachten wir das Besucher-Modell, engl. Visitor, welches ebenfalls ein Objektmuster ist. Visitor findet Anwendung, wenn eine Klassenhierarchie aus vielen Subklassen besteht, auf deren Objekten dieselben Funktionen ausgeführt werden sollen, diese sich in ihrer Implementierung aber stark unterscheiden. 61/ 69

62 Verhaltensmuster - Visitor Natürlich kann in diesem Fall von einer abstrakten Klasse vererbt werden, jedoch muss (nahezu) jede Methode überschrieben werden. Insbesondere aber führt das Hinzufügen neuer Methoden dazu, dass alle implementierenden Klassen überarbeitet werden müssen. Visitor trennt Klassen und ihre Operationen (Methoden), indem es sie in eigens dafür vorgesehene Besucher-Klassen auslagert. 62/ 69

63 Verhaltensmuster - Visitor Anschaulich und stark abstrahiert könnte man in etwa sagen, dass Visitor aus einer nachfolgenden Klassendefinition public class Klasse { void methode() {... } } so etwas macht: public class VisitorClass implements Visitor { void methode (Klasse k) {... } } 63/ 69

64 Verhaltensmuster - Visitor Doch wie funktioniert das im großen Stil und im Zusammenspiel mit Vererbungshierarchien? Wir sagen, dass eine Klasse aus der Hierarchie ein Visitor-Objekt akzeptieren muss. Dazu implementiert diese Klasse eine Methode accept(visitor v), welche folglich für sämtliche implementierenden Klassen von Visitor verwendet werden kann. accept() macht nun nichts anders, als im Visitor die Methode aufzurufen, die sonst Teil der Klasse gewesen wäre. Für jeden Visitor, den wir accept() übergeben, wird also dessen Methode aufgerufen, die für die jeweilige Klasse gedacht ist. 64/ 69

65 Verhaltensmuster - Visitor 65/ 69

66 Verhaltensmuster - Visitor Werden nun Objekte der Klassenhierarchie erzeugt, wird diesen ein (oder mehrere) Visitor-Objekt(e) übergeben, welche(s) die für sie passende Implementierung ihrer Methoden enthält. Wird eine Operation verändert, muss dies lediglich im Rahmen der Visitor-Klasse erfolgen, alle anderen Klassen bleiben unberührt. Ähnlich ist es für das Hinzufügen neuer Methoden. In diesem Fall kann ein neue Klasse von Visitor abgeleitet und für diese bei den erzeugten Objekten die accept() Methode aufgerufen werden. 66/ 69

67 Verhaltensmuster - Visitor Zur etwas anschaulicheren Darstellung, folgt nun eine einfache Beispielimplementierung mit 2 besuchbaren Klassen und einem TestVisitor. Zunächst das Interface des Visitors: interface Visitor { void method(visitableclass1 vc1); void method(visitableclass2 vc2); } 67/ 69

68 Verhaltensmuster - Visitor Nun das Interface der besuchbaren Klassen: interface Visitable { void accept(visitor v); } und die Implementierung einer der beiden Klassen: public class VisitableClass1 implements Visitable { public VisitableClass1() { System.out.println("Visitable1-Object created"); } public void accept(visitor v) { v.method(this); } 68/ 69

69 Verhaltensmuster - Visitor Was nun noch fehlt ist der konkrete TestVisitor: public class TestVisitor implements Visitor { public void method(visitableclass1 vc1) { System.out.println("Called Visitor-Method for VisitableClass1"); } public void method(visitableclass2 vc2) { System.out.println("Called Visitor-Method for VisitableClass2"); } public static void main (String[] args) { VisitableClass1 vc1 = new VisitableClass1(); VisitableClass2 vc2 = new VisitableClass2(); TestVisitor tv = new TestVisitor(); } } vc1.accept(tv); vc2.accept(tv); 69/ 69

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte und Funktionale Programmierung SS 2014 Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Unified Modeling Language (UML) Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Unified Modeling Language (UML)

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II SS 2012 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Einführung in die Informatik II 1 Prüfungstermine EI II im Sommersemester 2012 Klausurtermine

Mehr

Entwurfsmuster. Marc Monecke

Entwurfsmuster. Marc Monecke Entwurfsmuster Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 20. Mai 2003 Inhaltsverzeichnis 1 Grundlagen

Mehr

UML (Unified Modelling Language) von Christian Bartl

UML (Unified Modelling Language) von Christian Bartl UML (Unified Modelling Language) von Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 UML Unified Modelling Language... 3 2 Diagrammtypen... 3 2.1 Aktivitätsdiagramm... 3 2.1.1 Notation... 4 2.1.2 Beispieldiagramm...

Mehr

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 06 31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 29 UML Einführung Klassendiagramme in der UML Relationen zwischen Klassen Einführung:

Mehr

Entwurfsmuster (Design Patterns)

Entwurfsmuster (Design Patterns) Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder

Mehr

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

09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML) Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)

Mehr

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure 8. Objektorientierte Programmierung Informatik II für Verkehrsingenieure Grundbegriffe ALAN KAY, ERFINDER DER SPRACHE SMALLTALK, HAT DIE GRUNDBEGRIFFE DER OBJEKTORIENTIERTEN PROGRAMMIERUNG WIE FOLGT ZUSAMMENGEFASST:

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05. Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational

Mehr

UML -Klassendiagramme

UML -Klassendiagramme UML -Klassendiagramme UML - offline: ArgoUML http://argouml.stage.tigris.org/ UML online: Links genmymodel.com umlet.com/umletino/umletino.html Arten von UML-Diagrammen Diagramm Strukturdiagramm Verhaltensdiagramm

Mehr

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

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

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

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich WS 02/03 Warum muss ein Objekt wissen, zu welcher Klasse es gehört? Damit die Klassenzugehörigkeit

Mehr

Einführung in die objektorientierte Programmierung

Einführung in die objektorientierte Programmierung Einführung in die objektorientierte Programmierung Seminarunterlage Version: 4.04 Copyright Version 4.04 vom 17. Juni 2016 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten.

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 29 UML Einführung Klassendiagramme in der UML Relationen zwischen Klassen Einführung:

Mehr

Unified Modeling Language (UML)

Unified Modeling Language (UML) Kirsten Berkenkötter Was ist ein Modell? Warum Modellieren? Warum UML? Viele, viele Diagramme UML am Beispiel Was ist ein Modell? Ein Modell: ist eine abstrakte Repräsentation eines Systems, bzw. ist eine

Mehr

Model-View-Controller

Model-View-Controller Software Design Pattern Model-View-Controller Michael Lühr Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Unified Modeling Language 2

Unified Modeling Language 2 Unified Modeling Language 2 Marvin Frommhold 17.11.2008 Gliederung Einleitung Geschichte Strukturierung der Spezifikation Diagrammtypen Strukturdiagramme Verhaltensdiagramme CASE-Werkzeuge Quellen Was

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff Design Patterns II Der Design Muster Katalog Prof. Dr. Nikolaus Wulff Wiederverwendung Wiederverwendung ist das Schlagwort von OOP zur Erhöhung der Produktivität. Es gibt im Prinzip drei Methoden hierzu:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

Unified Modelling Language

Unified Modelling Language Unified Modelling Language SEP 72 Software-Entwicklung Software-Entwicklung ist Prozess von Anforderung über Modellierungen zu fertigen Programmen Anforderungen oft informell gegeben fertige Programme

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 06: Das Visitor Pattern Prof. Dr. Peter Thiemann (vertreten durch Luminous Fennell) Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg)

Mehr

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster Entwurfsmuster Lukas Klich Projektgruppe SHUTTLE Seminar: 28.11.2002 Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1 Motivation Die Menschheit löst Probleme, indem sie beobachtet, Beobachtungen

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Klassendiagramm. (class diagram)

Klassendiagramm. (class diagram) : Klassendiagramm http:///topic95.html Klassendiagramm (class diagram) Klassendiagramm Objektdiagramm Komponentendiagramm Kompositionsstrukturdiagramm Verteilungsdiagramm Einstieg Paketdiagramm Aufbau

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Mehr

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Einführung in die Programmierung

Einführung in die Programmierung 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

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

Informatik I Eprog HS12

Informatik I Eprog HS12 software evolution & architecture lab Informatik I Eprog HS12 Übung 11 1 Aufgabe: Interfaces & Visitor-Pattern 1.1 Lernziele 1. Die Verwendung von Interfaces trainieren. 2. Das Visitor Design-Pattern kennenlernen.

Mehr

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

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595 Ü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

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien der objektorientierten Programmierung (OOP) Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm

Mehr

Sommersemester Implementierung I: Struktur

Sommersemester Implementierung I: Struktur Sommersemester 2003 Implementierung I: Struktur 2 Aufgabe 3 Implementierung I: Struktur Umfang: 1 Woche Punkte: 50 P. In den ersten beiden Aufgaben wurden die Struktur und das Verhalten des Systems modelliert.

Mehr

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio Entwurfsmuster Eine Einführung Botond Draskoczy Marcus Vitruvius Pollio Überblick Historie, Literatur Das Flugapparat-Bildschirmschoner-Projekt (FBP) Das internetbasierte Solar-Netzwerk (SNW) Zusammenfassung

Mehr

NACHRICHTENTECHNISCHER SYSTEME

NACHRICHTENTECHNISCHER SYSTEME Einführung UML COMPUTERSIMULATION NACHRICHTENTECHNISCHER SYSTEME 11. Unified Modeling Language UML 220 Standardsprache d zur Visualisierung, i Spezifikation, Konstruktion und Dokumentation komplexer (Software-)

Mehr

Objektorientierte Modellierung (1)

Objektorientierte Modellierung (1) Objektorientierte Modellierung (1) Die objektorientierte Modellierung verwendet: Klassen und deren Objekte Beziehungen zwischen Objekten bzw. Klassen Klassen und Objekte Definition Klasse Eine Klasse ist

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

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

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel Jason T. Roff UML IT Tutorial Übersetzung aus dem Amerikanischen von Reinhard Engel Inhaltsverzeichnis Inhaltsverzeichnis Einführung 11 Grundlagen der UML 15 Warum wir Software modellieren 16 Analyse,

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik 2 für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

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

Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl 26.07.21 Themenübersicht Objektorientierte Software-Entwicklung Objektorientierte Analyse und Design OOA OOD Objektorientierte

Mehr

Übungen Softwaretechnik I

Übungen Softwaretechnik I Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Übungen Softwaretechnik I Übung 5: Objektorientierte Analyse Einführung Objektorientierung in der

Mehr

Objektorientierte Systementwicklung

Objektorientierte Systementwicklung Karl-Heinz Rau Objektorientierte Systementwicklung Vom Geschäftsprozess zum Java-Programm Mit 162 Abbildungen vieweg Überblick und Vorbemerkungen 1 1 Objektorientierte Software-Entwicklung 5 1.1 Überblick

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 18 UML Einführung Klassendiagramme in der UML Relationen zwischen Klassen 2 / 18 UML: Grundsätzliches

Mehr

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

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Teil II: OOP und JAVA (Vorlesung 9)

Teil II: OOP und JAVA (Vorlesung 9) 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

Mehr

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

So#waretechnologie für Fortgeschri4ene Teil Eide. Stunde IV: UML. Köln 26. Januar 2017 So#waretechnologie für Fortgeschri4ene Teil Eide Stunde IV: UML Köln 26. Januar 2017 Model of vs. model for TheoreKcal model model for comparison calibra9on verifica9on Empirical model model of deduc9on

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch Klassen (Java) vs. Records (Pascal) 14. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung Pascal RECORDs in Pascal sind reine

Mehr

Strategy & Decorator Pattern

Strategy & Decorator Pattern Strategy & Decorator Pattern Design Patterns Nutzen Wouldn t it be dreamy if only there were a way to build software so that when we need to change it, we could do so with the least possible impact on

Mehr

Programmieren 2 C++ Überblick

Programmieren 2 C++ Überblick Programmieren 2 C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 5. Behälter und Iteratoren 6. Templates

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Überblick. Überblick zum weiteren Inhalt

Überblick. Überblick zum weiteren Inhalt Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008 Ein Entwurfsmuster der GoF vorgestellt von Sigrid Weil 16. Januar 2008 Einleitung 2 Entwurfsmuster (Design Patterns) beschreiben Probleme, die wiederholt in unterschiedlichsten Zusammenhängen aufreten

Mehr

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

Software Engineering, SoSe 07, WSI, D. Huson, May 7, Software Engineering, SoSe 07, WSI, D. Huson, May 7, 2007 17 4 Modellierung in UML Nach einer Vorlesung von Prof. Andreas Zeller, Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken. 4.1

Mehr

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler Übungen zur Vorlesung Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler Übungsblatt 7 Lösungshilfe Aufgabe 1. Analysephase (12 Punkte) Eine Firma hat den Auftrag erhalten eine

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Softwarearchitektur, UML, Design Patterns und Unit Tests

Softwarearchitektur, UML, Design Patterns und Unit Tests Softwarearchitektur, UML, Design Patterns und Unit Tests Stefan Wehr Prof. Dr. Peter Thiemann 7. Dezember 2005 Übersicht Softwarearchitektur UML Design Pattern Unit Tests 2 / 34 Softwarearchitektur Softwarearchitektur

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur Übersicht Object Oriented Organization Das System besteht aus Objekten, die mittels Methodenaufrufe (Nachrichten) miteinander kommunizieren. 2 / 34 4 / 34,, Design Patterns und Stefan Wehr Prof. Dr. Peter

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 10. Vererbung und Polymorphie Vererbung und Polymorphie in C++ Seite 2 Klassen können von anderen Klassen

Mehr

Handbuch für die Erweiterbarkeit

Handbuch für die Erweiterbarkeit Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6

Mehr

Entwurfsmuster - Iterator & Composite

Entwurfsmuster - Iterator & Composite Entwurfsmuster - Iterator & Composite Alexander Rausch Seminar Entwurfsmuster WS08/09 19. November 2008 Gliederung 1 Einführung 2 Das Iterator Entwurfsmuster 3 Das Composite Entwurfsmuster 4 Quellen 5

Mehr

Objektorientierte Modellierung

Objektorientierte Modellierung Objektorientierte Modellierung KLASSENDIAGRAMM Klasse = Typebene zum Beschreiben mehrerer Objekte der selben Struktur Objekt = konkrete Ausprägung einer Klasse Instanz = Objekt Klassendiagramm = beschreibt

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Geoinformation I Datenmodellierung

Geoinformation I Datenmodellierung Seite 1 von 61 Geoinformation I Datenmodellierung Seite 2 von 61 Datenmodellierung Übersicht Datenverwaltung und Datenbanken objektorientierte Abbildung der Realität Grundlagen der Objektorientierung Darstellung

Mehr

UML. Weiteres Vorgehen im Projekt

UML. Weiteres Vorgehen im Projekt UML Download objectif Personal Edition (kostenlos): http://www.microtool.de/objectif/de/download.asp Weiteres Vorgehen im Projekt Komponenten, Klassen, Objekte Prozesse Nichtfunktionale Anforderungen Skizzen,

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr Entwurfsmuster Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr Was sind Entwurfsmuster (1) Muster (allg.) sind schematische Lösungen für eine Klasse verwandter Probleme Beschreibung:

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Design Patterns. 3. Juni 2015

Design Patterns. 3. Juni 2015 Design Patterns 3. Juni 2015 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Taentzer Softwarequalität 2015 138 Was sind Design Patterns?

Mehr

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 1 185.A01 OOP Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 2 OOP Vererbung versus Delegation class A { public void x() { z();

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik 2 für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

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

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Objektorientierung Was ist Objektorientierung Es einige Grundprinzipien, die (fast) allen Definitionen des Begriffs Objektorientierung

Mehr

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009 Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Sommersemester 2009 Überblick I 1 Entwurfsmuster Entwurfsmuster: Entwurfsmuster

Mehr

Software-Entwurfsmuster

Software-Entwurfsmuster Software-Entwurfsmuster Prinzip von Entwurfsmustern und einige elementare Beispiele Malte Spiess malte@mathematik.uni-ulm.de Seminar Bildanalyse und Simulation mit Java im WS 2003/2004 Universität Ulm

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/15 1 / 26 Allgemeines Progammiersprachen Objektorientierte Programmierung Grundlegende Eigenschaften

Mehr