Moderne Programmierparadigmen Objekt-Orientierung

Größe: px
Ab Seite anzeigen:

Download "Moderne Programmierparadigmen Objekt-Orientierung"

Transkript

1 Moderne Programmierparadigmen Objekt-Orientierung Sven Apel (Universität Passau) Christian Kästner (Universität Magdeburg)

2 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 2 Agenda Historie der Programmierparadigmen Grundlagen Objekt-Orientierter Programmierung (OOP) Überblick über Moderne OOP Konzepte Frameworks Entwurfsmuster (Design Pattern) Komponenten

3 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 3 Programmierparadigmen Ein Paradigma ist ein(e) grundlegendes Konzept/Prinzip/Weltsicht, auch in anderen Wissenschaften Paradigmen sind nicht universal akzeptiert, stehen in Konkurrenz, und werden manchmal durch neuere Paradigmen abgelöst Programmierparadigmen beschreiben grundlegende Konzepte von Programmiersprachen Programmiersprachen werden anhand solcher Paradigmen entworfen und kategorisiert

4 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 4 Bekannte Programmierparadigmen Strukturierte Programmierung, Anfang 70er Verzicht auf GOTO, dafür Sequenz, Auswahl, Schleifen Zerlegung in Teilprogramme (Prozeduren) Typische Sprache: Pascal, C, Ada Modulare Programmierung, 70er Wachsende Programmgröße Dekomposition in Teilprogramme (Module) Module einzeln planen, entwickeln, testen Typische Sprache: Modula-2, Ada

5 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 5 Bekannte Programmierparadigmen II Abstrakte Datentypen, Ende 70er Implementierungsunabhängige Spezifikation von Datenstrukturen Aufteilung Wertebereich vs. Operationen, und Signatur vs. Semantik Funktionale Programmierung, seit 50er Programme bestehen nur aus Funktionen Keine Statusvariablen, nur Parameter Logische Programmierung, seit 60er/70er Nutzung logischer Ausdrücke zur Programmierung

6 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 6 Bekannte Programmierparadigmen III Objekt-Orientierte Programmierung, Konzepte seit 60er, populär seit frühen 90er Objekte als Abstraktionsform, dieses Kapitel Subjekt-Orientierte Programmierung, seit '93 Erweiterung OOP für große Anwendungen und Integration unabhängig entwickelter Software Feature-Orientierte Programmierung (FOP), seit späten 90er Feature als zentrale Abstraktionsform, Kapitel 4ff Speziell für maßgeschneiderte Software

7 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 7 Bekannte Programmierparadigmen IV Aspekt-Orientierte Programmierung, seit '97 Implementierung quer-schneidender Belange durch Aspekte, Kapitel 7 Komponentenorientierte Programmierung, Ende 90er Teilung von Softwaresystemen in Komponenten Wiederverwendung im Großen

8 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 8 Was ist OOP? Objekte als zentrale Abstraktionsform Sprachen: Smalltalk, Eiffel, Java, C++, JavaScript, Object Pascal/Delphi, Self, Modula-2, Objective Caml, Visual Prolog Schlagworte: Objekte, Klassen, Instanzen, Vererbung, Kapselung, Methoden, Attribute, Schnittstellen, statische Methoden, Polymorphie, UML, Wiederverwendung Bildet die Welt besser auf das Programm ab; Objekte sind näher am natürlichen Denken

9 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 9 Java Beispiel interface ICounter { int get(); void inc(); class Counter implements ICounter { private int x = 1; public void inc() { x = x + 1; public int get() { return x; class ResetCounter implements ICounter { private int y = 0; public void set(int x) { y = x; public int get() { return y + 1; public void inc() { this.set(this.get() +1); public void reset() { y = 0; class BackupCounter extends ResetCounter{ private int backup; public void set(int x) { backup = this.get(); super.set(x); public void restore() { this.set(backup); class Test { void tripleinc(icounter x) { x.inc(); x.inc(); x.inc() void main(string[] args) { ICounter c = new BackupCounter(); c.inc(); tripleinc(c); System.out.println(c.get());

10 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 10 OOP Fundamentale Konzepte Polymorphie (polymorphism) Kapselung (encapsulation) Subtypenbeziehung (subtyping) Vererbung (inheritance) Späte Bindung (late binding) Offene Rekursion (open recursion)

11 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 11 Polymorphie Objekt entscheidet selbst welcher Code ausgeführt wird, wenn eine Methode aufgerufen wird Unterschiedliche Objekte können die gleiche Methode unterschiedlich implementieren Methoden bilden die Schnittstelle (Protokoll) des Objektes und abstrahieren von der Implementierung Methodenaufrufe durch Senden von Nachrichten Gegensatz zu ADT, wo alle Instanzen die gleichen Methoden haben

12 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 12 Java Beispiel Polymorphie interface ICounter { int get(); void inc(); class Counter implements ICounter { private int x = 1; public void inc() { x = x + 1; public int get() { return x; class ResetCounter implements ICounter { private int y = 0; public void set(int x) { y = x; public int get() { return y + 1; public void inc() { this.set(this.get() +1); public void reset() { y = 0; Mehrfache Repräsentation Verschiedene Implementierungen eines Objektes class BackupCounter extends ResetCounter{ private int backup; public void set(int x) { backup = this.get(); super.set(x); public void restore() { this.set(backup); class Test { void tripleinc(icounter x) { x.inc(); x.inc(); x.inc() void main(string[] args) { ICounter c = new BackupCounter(); c.inc(); tripleinc(c); System.out.println(c.get());

13 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 13 Kapselung Die interne Repräsentation (der Status) des Objektes ist versteckt, nur Methoden des Objektes dürfen darauf zugreifen (In einigen Sprachen wie Smalltalk erzwungen, anderen wie Java und C++ erlauben individuelles Scoping mit private/public) Von außen kann nur über die Schnittstelle auf das Objekt zugegriffen werden Lokale Änderungen verbessern Lesbarkeit und Wartbarkeit

14 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 14 Java Beispiel Kapselung interface ICounter { int get(); void inc(); class Counter implements ICounter { private int x = 1; public void inc() { x = x + 1; public int get() { return x; class ResetCounter implements ICounter { private int y = 0; public void set(int x) { y = x; public int get() { return y + 1; public void inc() { this.set(this.get() +1); public void reset() { y = 0; class BackupCounter extends ResetCounter{ private int backup; public void set(int x) { backup = this.get(); super.set(x); public void restore() { this.set(backup); class Test { void tripleinc(icounter x) { x.inc(); x.inc(); x.inc() void main(string[] args) { ICounter c = new BackupCounter(); c.inc(); tripleinc(c); System.out.println(c.get()); Kapselung Interne Repräsentation ist hinter einer Schnittstelle versteckt

15 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 15 Subtypenbeziehung Ein Objekt mit Schnittstelle A wird von allen Programmen akzeptiert, die Schnittstelle B mit weniger Methoden erwarten A ist ein Subtyp von B Ermöglicht teile einer Schnittstelle zu ignorieren Erlaubt Code zu schreiben, der verschiedene Objekte manipuliert indem er sich auf wenige gemeinsame Methoden beschränkt (In Java wird Subtyping explizit über benannte Typen/Interfaces implementiert)

16 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 16 Java Beispiel III interface ICounter { int get(); void inc(); class Counter implements ICounter { private int x = 1; public void inc() { x = x + 1; public int get() { return x; class ResetCounter implements ICounter { private int y = 0; public void set(int x) { y = x; public int get() { return y + 1; public void inc() { this.set(this.get() +1); public void reset() { y = 0; Subtyping: Akzeptiert verschiedene Objekte solange sie das ICounter Interface erfüllen class BackupCounter extends ResetCounter{ private int backup; public void set(int x) { backup = this.get(); super.set(x); public void restore() { this.set(backup); class Test { void tripleinc(icounter x) { x.inc(); x.inc(); x.inc() void main(string[] args) { ICounter c = new BackupCounter(); c.inc(); tripleinc(c); System.out.println(c.get());

17 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 17 Vererbung Objekte mit gemeinsamer Schnittstelle haben häufig gemeinsames Verhalten, welches nur einmal implementiert werden soll Die meisten OOP Sprachen, auch Java, nutzen dazu Klassen und Vererbung von Klassen Klassen als Schablonen zur Instantiierung von Objekte Subklassen können neue Methoden hinzufügen oder falls notwendig ausgewählte bestehende Methoden überschreiben Einige Sprachen nutzen Delegation statt Vererbung mittels Klassen

18 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 18 Java Beispiel Vererbung interface ICounter { int get(); void inc(); class Counter implements ICounter { private int x = 1; public void inc() { x = x + 1; public int get() { return x; class ResetCounter implements ICounter { private int y = 0; public void set(int x) { y = x; public int get() { return y + 1; public void inc() { this.set(this.get() +1); public void reset() { y = 0; class BackupCounter extends ResetCounter{ private int backup; public void set(int x) { backup = this.get(); super.set(x); public void restore() { this.set(backup); class Test { void tripleinc(icounter x) { x.inc(); x.inc(); x.inc() void main(string[] args) { ICounter c = new BackupCounter(); c.inc(); tripleinc(c); Vererbung mit Klassen System.out.println(c.get()); Gemeinsame Methoden get, set und reset werden nur einmal implementiert, inc wird überschrieben, restore wird hinzugefügt

19 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 19 Java Beispiel Delegation interface ICounter { int get(); void inc(); Alternative Implementierung mittels Delegation statt Vererbung class Counter implements ICounter { private int x = 1; public void inc() { x = x + 1; public int get() { return x; class ResetCounter implements ICounter { private int y = 0; public void set(int x) { y = x; public int get() { return y + 1; public void inc() { this.set(this.get() +1); public void reset() { y = 0; class BackupCounter { ResetCounter del; BackupCounter(ResetCounter del) { this.del = del; private int backup; public void set(int x) { backup = this.get(); del.set(x); public void restore() { del.set(backup); public int get() { return del.get(); public void inc() { del.inc(); public void reset() { del.reset();

20 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 20 Späte Bindung / Offene Rekursion Methoden eines Objektes können andere Methoden des gleichen Objektes aufrufen (mit Hilfe eines speziellen Schlüsselwortes, wie this oder self) Späte Bindung erlaubt den Aufruf einer Methode in einer Klasse die erst später in einer Subklasse definiert wird Auch bekannt als virtuelle Methoden Übliches Feature vieler OOP Sprachen mit Klassen

21 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 21 Java Beispiel Späte Bindung interface ICounter { int get(); void inc(); Offene Rekursion mit this class Counter implements ICounter { private Späte int x Bindung = 1; public void inc() { x = x + 1; public int get() { return x; class ResetCounter implements ICounter { private int y = 0; public void set(int x) { y = x; public int get() { return y + 1; public void inc() { this.set(this.get() +1); public void reset() { y = 0; class BackupCounter extends ResetCounter{ private int backup; public void set(int x) { backup = this.get(); super.set(x); public void restore() { this.set(backup); class Test { void tripleinc(icounter x) { x.inc(); x.inc(); x.inc() void main(string[] args) { ICounter c = new BackupCounter(); c.inc(); tripleinc(c); System.out.println(c.get());

22 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 22 OOP Konzepte in Java Objekte als Instanzen von Klassen Benannte Klassen und Schnittstellen, explizite Subtypenbeziehung (nominal subtyping) Vererbung von Klassen und Schnittstellen Späte Bindung, da alle Methoden virtuell Packages zur zusätzlichen Modularisierung Zusätzliche (nicht-oop) Features wie statische Methoden

23 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 23 Warum OOP? Modularisierung mittels Objekten und Klassen passt zu vielen Problemen Trennung von Zustand und Verhalten, von Implementierung und Schnittstelle (information hiding) Wiederverwendung durch Kapselung und Vererbung Bildet die Welt besser ab, Objekte sind näher am natürlichen Denken

24 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 24 Beispiel für die restliche Vorlesung Datenstruktur für Graphen Darin sollten gerichtete, gewichtete Graphen gespeichert werden werden können in denen die Knoten (Vertex, Node) und Kanten (Edge) Farben haben können Später wird es Algorithmen geben die auf diesen Graphen arbeiten, z.b. Suche nach dem kürzesten Pfad Hier zunächst objekt-orientiertes Design und eine erste Implementierung

25 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 25 Objekt-Orientierter Entwurf Welche Objekttypen brauchen wir? Knoten (Node) Kanten (Edge) Den Graph selber Gewichte? Farben? Welche Funktionalität? Hinzufügen von Knoten zum Graphen Hinzufügen von Kanten Setzen von Kantengewichten und Farben Ausgeben des Graphen (Logging)

26 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 26 Objekt-Orientierter Entwurf in UML Graph 1 +addedge() +addnode() +print() 1 * * Node -name +print() * -startswith 1 * 1 * -endswith Edge - +print() * * 1 Weight +print() 1 Color 1 +setdisplaycolor ()

27 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 27 Erste Implementierung class Graph { Vector nv = new Vector(); Vector ev = new Vector(); Edge addedge(node n, Node m, Weight w) Edge e = new Edge(n, m, w); addnode(n); addnode(m); ev.add(e); return e; void addnode(node n) { nv.add(n); void print() { for(int i = 0; i < ev.size(); i++) { ((Edge)ev.get(i)).print(); class Color { static void setdisplaycolor(color c) {... class Weight { void print() {... class Node { int id = 0; Color color = new Color(); void print() { Color.setDisplayColor(color); System.out.print(id); class Edge { Node a, b; Color color = new Color(); Weight weight = new Weight(); Edge(Node a, Node b, Weight w) { this.a = a; this.b = b; this.weight = w; void print() { Color.setDisplayColor(color); a.print(); b.print(); weight.print(); Es folgen noch viele alternative Implementierungen im Verlauf der Vorlesung :-)

28 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 28 Wiederverwendung Vererbung und Delegation erlauben Wiederverwendung von Code-Fragmenten, wenn diese entsprechend entworfen wurden Moderne Ansätze für Wiederverwendung in OOP Frameworks Design Pattern Komponenten... können auch für Produktlinien verwendet werden, mehr dazu später in Kapitel 9a

29 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 29 Frameworks Menge abstrakter und konkreter Klassen Repräsentieren eine abstrakte Struktur, die für einen bestimmten Zweck erweitert werden kann (Anpassung von Software) Wiederverwendbare Lösung für eine Problemfamilie in einer Domäne Punkte an denen Erweiterungen vorgesehen sind: Hot Spots Umkehrung der Kontrolle, das Framework bestimmt die Ausführungsreihenfolge Hollywood Prinzip: Don t call us, we ll call you.

30 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 30 Eclipse JDT WTP SAPinst Workbench Platform Ant IDE Cheat Sheets Search Debug Team Help Update Views Resources Console Editors Forms Text Editors Compare Build Debug Edit JUnit Refactor Launch J2EE Web Control Items Component Table Script Messages Resourcepool Dialogs Meta-Dialogs Prerequisite C. Rich Client Platform Workbench Help JFace Core Runtime OSGi SWT

31 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 31 Entwurfsmuster Engl. design patterns, Gamma et al Wiederverwendung durch Identifikation und Beschreibung von Lösungen für typische Entwurfsprobleme Muster = Problembeschreibung + Lösungsidee Kein Wiederverwendung von Code

32 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 32 Ein Entwurfsproblem Row 1 3 Diagramme (manipulierbar) Row 2 0 Row Row 1 Row 2 Row 3 Row 4 Row 3 Synchronisation Datenstruktur für Messergebnisse Messergebnisse

33 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 33 Komponenten Abgeschlossene Implementierungseinheit mit Schnittstelle (black box), bietet ein oder mehrere Dienste an Wird zusammen mit anderen Komponenten auch von anderen Herstellern zusammengesetzt zu Software Systemen (Komposition) Einzeln vermarktbar Kontext (z.b. J2EE, Struts Framework) und Abhängigkeiten explizit spezifiziert Klein genug für Erzeugung und Wartung in einem Stück, groß genug um sinnvolle Funktion bieten zu können

34 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 34 Beispiel Komponenten Webshop Bestellen Großhändler Kunde anlegen Adresse ändern Kundenverwaltung Rechnung drucken Reportgenerator Einkäufe Katalog verwalten Webshop Rechnung schreiben Finanzbuchhaltung Entnehmen Einlagern Lagerhaltung

35 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 35 Zusammenfassung Es gibt eine Vielzahl Programmierparadigmen OOP ist sehr populär Vielgestaltigkeit, Kapslung, Vererbung Java, Eclipse Wiederverwendung mittels Vererbung, Delegation, Frameworks, Komponenten oder Entwurfsmuster

36 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 36 Grenzen von OOP Ausblick Neue Programmierkonzepte und Paradigmen Feature-Orientierte Programmierung Subjekt-Orientierte Programmierung Aspekt-Orientierte Programmierung

37 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 37 Literatur OOP B. Meyer, Object-oriented Software Construction, Prentice Hall, 1997 [OOP Generell] B. Pierce. Types and Programming Languages, Chap. 18, MIT Press, 2002 [5 Fundamentale Konzepte OOP]

38 Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 38 Literatur Wiederverwendung R. Johnson and B. Foote, Desiging reusable classes, Journal of Object-Oriented Programming, 1(2):22-35, 1988 [OOP Wiederverwendung, insb. Frameworks] E. Gamma, R. Helm, R. Johnson, J. Vlissedes, Design Patterns, Addison-Wesley, 1994 [Standardwerk Entwurfsmuster] C. Szyperski: Component Software: Beyond Object- Oriented Programming. Addison-Wesley, 1998 [Standardwerk Komponentenorientierte Softwareentwicklung]

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Daniel Warneke [email protected] 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 [email protected] 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

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

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 [email protected] http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

Objektorientiertes JavaScript

Objektorientiertes JavaScript Objektorientiertes JavaScript Christoph Fabritz [email protected] http://goo.gl/jzqxnw Inhalt JavaScript Objektorientierung OO in JavaScript Literatur JavaScript Interpretiert / gescriptet Dynamische

Mehr

Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme

Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) 1 Application Eng. Domain

Mehr

Grundkonstrukte der Objektorientierung in Java, C# und C++

Grundkonstrukte der Objektorientierung in Java, C# und C++ Grundkonstrukte der Objektorientierung in Java, C# und C++ 2 Viele Patterns basieren auf einer Kombination einiger zentraler Modellierungskonstrukte, namentlich auf Schnittstellen- und Implementierungsvererbung

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

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

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

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 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

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

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms

Mehr

U08 Entwurfsmuster (II)

U08 Entwurfsmuster (II) U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

WORKFLOW DESIGNDOKUMENT

WORKFLOW DESIGNDOKUMENT Architectural Design WORKFLOW DESIGNDOKUMENT Softwareentwicklung Praktikum, Übungsbeispiel 2 Gruppe 86 Andreas Hechenblaickner [0430217] Daniela Kejzar [0310129] Andreas Maller [0431289] Gruppe 86 Seite

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

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

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

PHP Aufbaukurs. Tag 3. PHP5 & Klassen PHP Aufbaukurs Tag 3. PHP5 & Klassen Organisatorisches 2 Igor Olkhovskiy Dr. Dipl.- Ing. Kontakt: [email protected] PHP Aufbaukurs 19.09.2006 Folie 2 PHP. OOP. Geschichte 3 PHP/FI ( PHP 1

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

RMeasy das SAP IS U Add On für Versorgungsunternehmen. Optimieren Sie Ihre Prozesse in Kundengewinnung und Kundenbindung.

RMeasy das SAP IS U Add On für Versorgungsunternehmen. Optimieren Sie Ihre Prozesse in Kundengewinnung und Kundenbindung. Beschreibung Wenn Sie: mit ECC 6.0 und IS-U auf die integrierte Systemlösung der SAP setzen und zur Gewinnung neuer und Bindung vorhandener Kunden eine gleichfalls integrierte Lösung suchen und eine Produkt

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Funktionale Programmierung (in Clojure)

Funktionale Programmierung (in Clojure) Funktionale Programmierung (in Clojure) Einführung Burkhardt Renz Fachbereich MNI Technische Hochschule Mittelhessen Wintersemester 2014/15 Übersicht Paradigmen von Programmiersprachen Paradigmen von Programmiersprachen

Mehr

OO Softwareentwicklung

OO Softwareentwicklung OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung

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

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

WebService in Java SE und EE

WebService in Java SE und EE Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 3 Einführung in das objektorientierte Programmier-Paradigma 3 Einführung in das objektorientierte Programmier-Paradigma 3.1.1 Top-down structured design 3.1.2 Data-driven design 3.1.3 Object-oriented design

Mehr

Client-Server Beziehungen

Client-Server Beziehungen Ersetzbarkeit, Client-Server Beziehungen 182.132 VL Objektorientierte Programmierung Peter Puschner nach Folien von Franz Puntigam, TU Wien Überblick Ersetzbarkeit Kovarianz, Kontravarianz, Invarianz Client-Server

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

8 Design Patterns. Events

8 Design Patterns. Events 8 Design Patterns. Events Jörn Loviscach Versionsstand: 28. März 2015, 19:13 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4. Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil

Mehr

Dokumentation des Projektes Tic Tac Toe

Dokumentation des Projektes Tic Tac Toe Praktikum aus Programmierung Dr. Michael Hahsler Dokumentation des Projektes Tic Tac Toe 0050230 1 Java Projekt: Tic Tac Toe 1. Inhaltsverzeichnis 1. Inhaltsverzeichnis... 2 2. Problemdefinition... 2 3.

Mehr

Übungen zu Softwaretechnik

Übungen zu Softwaretechnik Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

Factory Method (Virtual Constructor)

Factory Method (Virtual Constructor) Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte

Mehr

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

Mehr

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor. Eclipse WSDL-Editor Übersicht Eclipse Foundation Eclipse Plugins & Projects Eclipse Ganymede Simultaneous Release Web Tools Platform Projekt WSDL Editor Bug #237918 Eclipse Foundation Was ist Eclipse?

Mehr

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Prof. Dr. Dr. h.c. Manfred Broy Sommersemester Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Einführung in die Softwaretechnik Übung 6: Feinentwurf Aufgabe 17: Entwurfsmuster

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

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau

Mehr

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur UML-Klassendiagramme als Werkzeug im Unterricht Blitzlicht? In welcher Programmiersprache(n) unterrichten Sie?? In welchem Umfang unterrichten Sie Objektorientierung??

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

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords 4.0 Proinformatik III Objektorientierte Programmierung Michael Kölling University of Kent Canterbury, UK Selbstbestimmtes Lernen Vorlesung Tutorium Übungen Buch Web-Seite Üben, üben, üben! Format Vorlesung:

Mehr

Themen. Web Services und SOA. Stefan Szalowski Daten- und Online-Kommunikation Web Services

Themen. Web Services und SOA. Stefan Szalowski Daten- und Online-Kommunikation Web Services Themen Web Services und SOA Wer kennt den Begriff Web Services? Was verstehen Sie unter Web Services? Die Idee von Web Services Ausgangspunkt ist eine (evtl. schon bestehende) Software Anwendung oder Anwendungskomponente

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Scala kann auch faul sein

Scala kann auch faul sein Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?

Mehr

EINSATZ VON DESIGN PATTERNS BEI DER ENTWICKLUNG DES CSM-FRAMEWORKS REMARC

EINSATZ VON DESIGN PATTERNS BEI DER ENTWICKLUNG DES CSM-FRAMEWORKS REMARC EINSATZ VON DESIGN PATTERNS BEI DER ENTWICKLUNG DES CSM-FRAMEWORKS REMARC 10. Informatik-Tag, HTWM Dipl.-Inf. Chris Hübsch, ARC Solutions GmbH Inhalt 1. ARC Solutions 2. REMARC 3. Design Patterns 4. Patterns

Mehr

Design by Contract with JML

Design by Contract with JML Thema: Design by Contract with JML Proseminar: Assertions Verfasser: Literatur: Betreuer: Natalya Moriz Gary T.Leavens and Yoonsik Cheon: Design by Contract with JML Prof. Dr. Heike Wehrheim 1 Inhalt DBC

Mehr

Gebundene Typparameter

Gebundene Typparameter Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte

Mehr

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2 EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn

Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams Lothar Wendehals 6. Workshop Software-Reengineering Bad Honnef, 3. - 5. Mai 2004 Motivation Unterstützung des

Mehr