Softwareproduktlinien Teil 9: Features vs. Aspekte

Größe: px
Ab Seite anzeigen:

Download "Softwareproduktlinien Teil 9: Features vs. Aspekte"

Transkript

1 Softwareproduktlinien Teil 9: Features vs. Aspekte Sven Apel (Universität Passau) Christian Kästner (Universität Marburg) Gunter Saake (Universität Magdeburg)

2 AOP vs. FOP AOP und FOP implizieren keine konkreten Implementierungstechniken Unterscheiden sich in ihrer Philosophie AOP fokussiert auf querschneidende Belange FOP fokussiert auf Domänenabstraktionen Dennoch werden oft konkrete Implementierungstechniken mit ihnen in Verbindung gebracht AOP Pointcuts & Advice, Inter-Typ-Deklarationen FOP Klassen, Refinements, Mixin/Jampack-Komposition

3 Motivation AOP à la AspectJ und FOP à la Jak haben ähnliche Ziele Können beide für Produktlinien verwendet werden Wo liegen die Unterschiede und Gemeinsamkeiten? Wann nutzt man welchen Ansatz? Kann bzw. sollte man FOP und AOP kombinieren um Features zu implementieren?

4 Feature-Module à la Jak Basic Graph class Graph { Vector nv = new Vector(); Vector ev = new Vector(); Edge add(node n, Node m) { Edge e = new Edge(n, m); nv.add(n); nv.add(m); ev.add(e); return e; void print() { for(int i = 0; i < ev.size(); i++) ((Edge)ev.get(i)).print(); class Edge { Node a, b; Edge(Node _a, Node _b) { a = _a; b = _b; void print() { a.print(); b.print(); class Node { int id = 0; void print() { System.out.print(id);

5 Feature-Module à la Jak Basic Graph class Graph { Vector nv = new Vector(); Vector ev = new Vector(); Edge add(node n, Node m) { Edge e = new Edge(n, m); nv.add(n); nv.add(m); ev.add(e); return e; void print() { for(int i = 0; i < ev.size(); i++) ((Edge)ev.get(i)).print(); class Edge { Node a, b; Edge(Node _a, Node _b) { a = _a; b = _b; void print() { a.print(); b.print(); class Node { int id = 0; void print() { System.out.print(id); Weight refines class Graph { Edge add(node n, Node m) { Edge e = Super(Node,Node).add(n, m); e.weight = new Weight(); Edge add(node n, Node m, Weight w) Edge e = new Edge(n, m); nv.add(n); nv.add(m); ev.add(e); e.weight = w; return e; refines class Edge { Weight weight = new Weight(); void print() { Super(),print(); weight.print(); class Weight { void print() {...

6 Aspekte à la AspectJ Basic Graph class Graph { Vector nv = new Vector(); Vector ev = new Vector(); Edge add(node n, Node m) { Edge e = new Edge(n, m); nv.add(n); nv.add(m); ev.add(e); return e; void print() { for(int i = 0; i < ev.size(); i++) ((Edge)ev.get(i)).print(); class Edge { Node a, b; Edge(Node _a, Node _b) { a = _a; b = _b; void print() { a.print(); b.print(); class Node { int id = 0; void print() { System.out.print(id);

7 Aspekte à la AspectJ Basic Graph class Graph { Vector nv = new Vector(); Vector ev = new Vector(); Edge add(node n, Node m) { Edge e = new Edge(n, m); nv.add(n); nv.add(m); ev.add(e); return e; void print() { for(int i = 0; i < ev.size(); i++) ((Edge)ev.get(i)).print(); class Edge { Node a, b; Edge(Node _a, Node _b) { a = _a; b = _b; void print() { a.print(); b.print(); class Node { int id = 0; void print() { System.out.print(id); Color aspect ColorAspect { static class Colored { Color color; declare parents: (Node Edge) extends Colored; before(colored c) : execution(void print()) && this(c) { Color.setDisplayColor(c.color); static class Color {...

8 AOP vs. FOP

9 AOP vs. FOP Aspekt

10 Terminologie AOP FOP Analyse, Design Aspekt-Orientierte Modellierung Frühe Aspekte (early aspects) Aspekte als Funktionen Feature-Modellierung Feature-Ausdrücke Quarks und Co. Domänen-spezifische Optimierung Implementierung Aspekt = Klasse, Advice, Inter-Typ- Deklarationen AspectJ, AspectC++, Eos Feature-Modul = Klassen, Refinements, Mixin/Jampack- Komposition Jak, FeatureC++, FeatureHouse, Classbox/J, Jiazzi, ObjectTeams/Java

11 Heterogene vs. Homogene Erweiterungen Heterogen: unterschiedlichen Code an unter-schiedliche Stellen Homogen: gleichen Code an unterschiedlichen Stellen class Graph { Edge add(node n, Node m) { Edge e = new Edge(n, m); nv.add(n); nv.add(m); ev.add(e); e.weight = new Weight(); return e; Edge add(node n, Node m, Weight w) Edge e = new Edge(n, m); nv.add(n); nv.add(m); ev.add(e); e.weight = w; return e; class Edge { Weight weight = new Weight(); Edge(Node _a, Node _b) { a = _a; b = _b; void print() { a.print(); b.print(); weight.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(); Edge(Node _a, Node _b) { a = _a; b = _b; void print() { Color.setDisplayColor(color); a.print(); b.print();

12 Statische vs. Dynamische Erweiterungen Statisch: verändern die statische Struktur (syntaktische Struktur) Dynamisch: ändern das Verhalten (Ereignis und Aktion) class Node { int id = 0; Color color = new Color(); void print() { System.out.print(id); class Node { int id = 0; void print() { Color.setDisplayColor(color); System.out.print(id);

13 Einfache und Erweiterte Dynamische Erweiterungen Einfache dynamische Erweiterungen Erweitern von Methodenausführungen Ohne Bedingungen zur Laufzeit Kein Zugriff auf den Kontext des Ereignisses Außer Argumente, Rückgabewert und Objekt Komplexe dynamische Erweiterungen Alle Arten von Ereignissen Bedingungen zur Laufzeit (Kontrollfluss) Zugriff auf den dynamischen Kontext Einfache dynamische Erweiterungen sind Methodenerweiterungen mittels Overriding!

14 Beispiele für Einfache Dynamische Erweiterungen class Edge { int weight = 0; void setweight(int w) { weight = w; int getweight() { return weight; refines class Edge { void setweight(int w) { Super(int).setWeight(2*w); Jak int getweight() { return Super().getWeight()/2; AspectJ aspect DoubleWeight { void around(int w) : args(w) && execution(void Edge.setWeight(int)) { proceed(w*2); int around() : execution(void Edge.getWeight()) { return proceed()/2;

15 Beispiele für Komplexe Dynamische Erweiterungen class Node { void print() { Jak refines class Node { static int count = 0; void print() { if(count == 0) printheader(); count++; Super().print(); count--; void printheader() { /*... */ AspectJ aspect PrintHeader { before() : execution(void print()) &&!cflowbelow(execution(void print())) { printheader(); void printheader() { /* */

16 Vergleich von FOP und AOP statisch dynamisch FOP gute Unterstützung Attribute, Methoden, Klassen schlechte Unterstützung einfach dynamisch (Erweiterung von Methoden) AOP eingeschränkte Unterstützung Attribute, Methoden gute Unterstützung erweitert dynamisch heterogen gute Unterstützung Verfeinerungen und Kollaborationen eingeschränkte Unterstützung keine expliziten Kollaborationen homogen Keine Unterstützung Eine Verfeinerung pro Join-Point (Code-Replikation) gute Unterstützung Wildcards und logische Verknüpfung von Pointcuts

17 Vergleich von FOP und AOP statisch dynamisch FOP gute Unterstützung Attribute, Methoden, Klassen schlechte Unterstützung einfach dynamisch (Erweiterung von Methoden) AOP eingeschränkte Unterstützung Attribute, Methoden gute Unterstützung erweitert dynamisch heterogen gute Unterstützung Verfeinerungen und Kollaborationen eingeschränkte Unterstützung keine expliziten Kollaborationen homogen Keine Unterstützung Eine Verfeinerung pro Join-Point (Code-Replikation) gute Unterstützung Wildcards und logische Verknüpfung von Pointcuts

18 Kollaborationen anstatt von Aspekten Homogene Erweiterungen führen zu Replikation Graph Edge Node BaseGraph Graph Edge Node Color refines class Graph { Color color ; Color getcolor () { return color; void setcolor (Color c) { color = c; refines class Edge { Color color ; Color getcolor () { return col; void setcolor (Color c) { color = c; refines class Node { Color color; Color getcolor () { return col; void setcolor (Color c) { color = c;

19 Kollaborationen anstatt von Aspekten Dynamische Erweiterungen resultieren in Spagetti-Code print print print print AspectJ aspect PrintHeader { before() : execution(void print ()) &&!cflowbelow (execution(void print ())) { printheader (); void printheader () { /* */ Jak refines class Node { static int count = 0; void print () { if(count == 0) printheader (); count++; Super().print (); count--; void printheader () { /*... */

20 Aspekte anstatt von Kollaborationen Ein Aspekt pro Kollaboration Graph Edge Node BaseGraph OO-Struktur ist nicht explizit aspect AddWeight { Edge Graph.add(Node n, Node m, Weight w) { Edge res = add(n, m); res.weight = w; return res; Weight Edge.weight ; after(edge e) : this(e) && execution(void Edge.print ()) { /* */

21 Eine Frage der Skalierbarkeit Aspekt

22 Alternative: Ein Aspekt pro Rolle Aspektweben Aspektweben ersetzt Klassenverfeinerung und Superimposition ohne zusätzlichen Vorteil!

23 Fazit Der Einsatz von Aspekten und Kollaborationen ist abhängig vom zu implementierenden Problem Aspekte und Kollaboration sind unterschiedlich geeignet

24 Symbiose AOP und FOP

25 Die Symbiose von FOP und AOP OOP

26 Die Symbiose von FOP und AOP OOP FOP

27 Die Symbiose von FOP und AOP OOP AOP FOP

28 Die Symbiose von FOP und AOP OOP FOP FOP + AOP AOP

29 Aspectual Feature Modules Integration von Aspekten, Klassen und Verfeinerungen Basic Graph Graph Edge Node

30 Aspectual Feature Modules Integration von Aspekten, Klassen und Verfeinerungen Verfeinerung auf Basis von Rollen und Kollaborationen Basic Graph Graph Edge Node Weight Weight Graph Edge

31 Aspectual Feature Modules Integration von Aspekten, Klassen und Verfeinerungen Verfeinerung auf Basis von Rollen und Kollaborationen Basic Graph Graph Edge Node Weight Weight Graph Edge Color ColorAspect Color Aspektweben

32 Werkzeugunterstützung FeatureC++ & AspectC++ Aspectual Feature Modules für C++ Direkte Sprachunterstützung Compilieren erst mit FeatureC++ dann mit AspectC++ Compiler AHEAD Tool Suite & AspectJ Java-basierte Variante von Aspectual Feature Modules Aspekt-Dateien in Feature Modulen; übersetzen mit AspectJ Compiler (z.z. keine direkte Unterstützung in FeatureIDE)

33 33 Aspect Refinement

34 Wiederholung: Prinzip der Uniformität Features are implemented by a diverse selection of software artifacts, and any kind of software artifact can be subject of subsequent refinement. Feature A.java.html Feature B.java.xml Feature C.html.xml Build Script 34 Code Documentation

35 Aspekte Eine weitere Art von Softwareartefakt Aspekte kollaborieren mit anderen Artefakten, um ein Feature zu implementieren Feature A.java Feature B.java.aj.aj Aspectual Feature Module 35

36 Idee Feature A.java Feature B Feature C.java.aj.aj.aj Wieso können wir nicht auch Aspekte selbst verfeinern? 36

37 Beispiel AspectJ class Buffer { { Vector buf = buf new = Vector(); new Vector(); void void put(item put(item e) { buf.add(e); { buf.add(e); Item Item get(int get(int i) { return i) (Item)buf.get(i); { return (Item)buf.get(i); Buffer Item Base 37

38 Beispiel AspectJ class Buffer { Vector buf = new Vector(); void put(item e) { buf.add(e); Item get(int i) { return (Item)buf.get(i); Buffer Sync Buffer Item Base Sync abstract aspect BufferSync { pointcut syncpc() : execution(item Buffer.get(int)) execution(void Buffer.put(Item)); Object around() : syncpc() { lock(); Object res = proceed(); unlock(); return res; 38

39 Beispiel AspectJ class Buffer { Vector buf = new Vector(); void put(item e) { buf.add(e); Item get(int i) { return (Item)buf.get(i); Buffer Sync Buffer Item Base Sync abstract aspect BufferSync { pointcut syncpc() : execution(item Buffer.get(int)) execution(void Buffer.put(Item)); Object around() : syncpc() { lock(); Object res = proceed(); unlock(); return res; Stack Sync Stack Stack class Stack { LinkedList list = new LinkedList(); void push(item i) { list.addfirst(i); Item pop() { return (Item)list.getFirst(); aspect StackSync extends BufferSync { pointcut syncpc() : BufferSync.syncPC() execution(item Stack.pop()) execution(void Stack.push(Item)); 39

40 Limitierungen von AspectJ Aspektvererbung Aspekte, die verfeinert werden sind fest Enge Kopplung zwischen Aspekt und Verfeinerung Siehe Inflexible Erweiterungsmechanismen Abstrakte Aspekte Nur abstrakte Aspekte können verfeinert werden Verfeinerungen müssen vorausgeplant sein Advice-Konstrukte haben keinen Namen Können nicht verfeinert werden 40

41 Kollaborationen und Rollen für Aspekte Analog zu Klassenverfeinerungen Verfeinerungen zur Übersetzungszeit Jeder Aspekt kann verfeinert werden AspectJ-Erweiterung auf Basis von Jak (experimenteller Compiler arj), teilweise in FeatureC++ möglich A.java.aj A.java.aj A.java.aj B.java.aj.aj B.java.aj.aj 41 C.aj C.aj

42 Hinzufügen von Elementen und Erweitern von Methoden aspect Sync { void lock() { /* locking access */ void unlock() { /* unlocking access */ refines aspect Sync { int threads; void lock() { threads++; Super.lock(); void unlock() { threads--; Super.unlock(); pointcut syncpc() : execution(item Buffer.get(int)) execution(void Buffer.put(Item)); Object around() : syncpc() { lock(); Object res = proceed(); unlock(); return res; 42

43 Pointcut Refinement aspect Sync { pointcut syncpc() : execution(item Buffer.get(int)) execution(void Buffer.put(Item)); Object around() : syncpc() {/* synchronization */ refines aspect Sync { pointcut syncpc() : Super.syncPC() execution(* Stack.*(..)); 43

44 (Named) Advice Refinement aspect Sync { pointcut syncpc() : execution(* Buffer.*(..)); Object around syncmethod() : syncpc() { lock(); Object res = proceed(); unlock(); return res; refines aspect Sync { int count = 0; Object syncmethod() { count++; Object res = Super.syncMethod(); count--; return res; 44

45 Werkzeugunterstützung FeatureC++ & AspectC++ Ohne Advice Refinement AspectJ Experimenteller Compiler ARJ Erweiterung von AspectJ (z.z. keine direkte Unterstuetzung in FeatureIDE)

46 47 Fallstudien zur Nutzung von AOP

47 Warum Fallstudien Bisher Aspekte und Kollaborationen sind komplementär Einsatz von Aspekten und Kollaborationen ist abhängig vom Implementierungsproblem Aspekte und Kollaboration sind unterschiedlich geeignet Möglichkeit zu Aspect Refinement Fragen: Warum nicht einfach immer Kollaborationen oder immer Aspekte benutzen? Spielen ihre Unterschiede wirklich eine Rolle? Was wird in der Praxis gebraucht?

48 Vorgehen Empirische Analyse von 10 existierenden AspectJ Programmen AspectJ-Programme vorhanden AspectJ: Obermenge aller untersuchten Funktionalität FOP für empirische Analyse nicht ausreichend verbreitet Erfassung von Metriken Teils manuell Teils automatisiert: AJStats 1, AJDTStats

49 Analysierte AspectJ-Programme Tetris The popular game 1 KLOC Blekinge Institute of Technology OAS An online auction system 2 KLOC Lancaster University Prevayler Transparent persistence for Java 4 KLOC University of Toronto AODP Aspect-oriented implementation of the Gang-of-Four design patterns 4 KLOC University of British Columbia FACET An aspect-based CORBA event channel 6 KLOC Washington University HealthWatcher Web-based information system for public health systems 7 KLOC Lancaster University AJHotDraw 2D graphics framework 22 KLOC Sourceforge project Hypercast Multicast overlay network communication 67 KLOC University of Virginia, Microsoft AJHSQLDB SQL relational database engine 76 KLOC University of Passau Abacus A CORBA middleware framework 130 KLOC University of Toronto

50 fraction of the overall code base Verwendung von AOP 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% object-oriented code basic AOP advanced AOP

51 Aspect Refinement in P2P-PL 7 von 14 Aspekten wurden verfeinert Name No. of Ref. Description serialization 11 prepares objects for serialization responding 4 sends replies automatically tostring 12 introduces tostring methods log/debug 13 mix of logging and debugging pooling 3 stores and reuses open connections dissemination 3 piggyback meta-data propagation feedback 2 generates feedback by observing peers 53

52 Literatur zu Vergleich und Symbiose S. Apel, T. Leich, and G. Saake. Aspectual Feature Modules. IEEE Transactions on Software Engineering, 34(2), [Aspectual Feature Modules sehr ausführlich] S. Apel. How AspectJ is Used: An Analysis of Eleven AspectJ Programs. Journal of Object Technology, 9(1), [Analyse von 11 AspectJ-Programmen]

Softwareproduktlinien - Features vs. Aspekte

Softwareproduktlinien - Features vs. Aspekte Softwareproduktlinien - Features vs. Aspekte Sven Apel (Universität Passau) Christian Kästner (Universität Marburg) Gunter Saake (Universität Magdeburg) AOP vs. FOP AOP und FOP implizieren keine konkreten

Mehr

Softwareproduktlinien Teil 9: Features vs. Aspekte

Softwareproduktlinien Teil 9: Features vs. Aspekte Softwareproduktlinien Teil 9: Features vs. Aspekte Sven Apel (Universität Passau) Christian Kästner (Universität Marburg) Gunter Saake (Universität Magdeburg) 1 2 Fallstudien zur Nutzung von AOP Warum

Mehr

So#wareproduktlinien - Feature-Orien4erung. Sven Apel (Universität Passau) Chris4an Kästner (CMU) Gunter Saake, Thomas Thüm (Universität Magdeburg)

So#wareproduktlinien - Feature-Orien4erung. Sven Apel (Universität Passau) Chris4an Kästner (CMU) Gunter Saake, Thomas Thüm (Universität Magdeburg) So#wareproduktlinien - Feature-Orien4erung Sven Apel (Universität Passau) Chris4an Kästner (CMU) Gunter Saake, Thomas Thüm (Universität Magdeburg) 1 Wie Variabilität implemen4eren? Domain Eng. Feature-Modell

Mehr

Softwareproduktlinien Teil 5: Präprozessoren (Variabilitätsannotationen)

Softwareproduktlinien Teil 5: Präprozessoren (Variabilitätsannotationen) Softwareproduktlinien Teil 5: Präprozessoren (Variabilitätsannotationen) Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) Wie Variabilität implementieren?

Mehr

Softwareproduktlinien - Laufzeitvariabilität

Softwareproduktlinien - Laufzeitvariabilität Softwareproduktlinien - Laufzeitvariabilität Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake, Thomas Thüm (Universität Magdeburg) 1 Wie Variabilität implementieren?

Mehr

Softwareproduktlinien Teil 3: Laufzeit-Variabilität

Softwareproduktlinien Teil 3: Laufzeit-Variabilität Softwareproduktlinien Teil 3: Laufzeit-Variabilität Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) 1 Application Eng. Domain Eng. Wie Variabilität

Mehr

Erweiterte Programmierkonzepte für maßgeschneiderte Datenhaltung Teil 3: Software-Produktlinien

Erweiterte Programmierkonzepte für maßgeschneiderte Datenhaltung Teil 3: Software-Produktlinien Erweiterte Programmierkonzepte für maßgeschneiderte Datenhaltung Teil 3: Software-Produktlinien Sven Apel, Christian Kästner, Gunter Saake Apel, Kästner, Saake EPMD Folie 3-2 Agenda Produktlinien und Programmfamilien

Mehr

Softwareproduktlinien Teil 8: Aspektorientierung

Softwareproduktlinien Teil 8: Aspektorientierung Softwareproduktlinien Teil 8: Aspektorientierung Sven Apel (Universität Passau) Christian Kästner (Universität Marburg) Gunter Saake (Universität Magdeburg) Agenda Aspektorientierte Programmierung: Ideen

Mehr

Softwareproduktlinien Teil 7: Feature-Orientierung

Softwareproduktlinien Teil 7: Feature-Orientierung Softwareproduktlinien Teil 7: Feature-Orientierung Sven Apel (Universität Passau) Christian Kästner (Universität Marburg) Gunter Saake (Universität Magdeburg) 1 Application Eng. Domain Eng. Wie Variabilität

Mehr

Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme

Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme Christian Kästner (Carnegie Mellon University) Sven Apel (Universität Passau) Gunter Saake, Martin Kuhlemann (Universität Magdeburg) 1 Application

Mehr

Softwareproduktlinien - Refactoring von SPLs und ihren Produkten

Softwareproduktlinien - Refactoring von SPLs und ihren Produkten Softwareproduktlinien - Refactoring von SPLs und ihren Produkten Sven Apel (Universität Passau) Christian Kästner (CMU) Martin Kuhlemann, Gunter Saake (Universität Magdeburg) Agenda Grundlagen Refaktorisierung

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

EPMD Teil 6 Feature-Orientierung

EPMD Teil 6 Feature-Orientierung EPMD Teil 6 Feature-Orientierung Christian Kästner (Universität Magdeburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) Kästner, Apel, Saake EPMD Folie 6-2 Grundidee Agenda Implementierung

Mehr

Einführung in AOP. Rico Schiekel - 012816 rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung

Einführung in AOP. Rico Schiekel - 012816 rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung Einführung in AOP Informatikseminar Rico Schiekel - 012816 rschiekel@web.de Fachhochschule Ravensburg Weingarten Hochschule für Technik und Sozialwesen Einführung in AOP Agenda Kernproblem der Objekt Orientierung

Mehr

Instrumentation von Android Anwendungen mit ExplorViz

Instrumentation von Android Anwendungen mit ExplorViz Instrumentation von Android Anwendungen mit ExplorViz Jan Witzany 28. September 2016 Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 1 / 19 Gliederung 1. Motivation

Mehr

Teil 5 Objektorientierung und ihre Grenzen

Teil 5 Objektorientierung und ihre Grenzen Erweiterte Programmierkonzepte für maßgeschneiderte Datenhaltung Teil 5 Objektorientierung und ihre Grenzen Christian Kästner, Gunter Saake, Sven Apel Erweiterte Programmierkonzepte für maßgeschneiderte

Mehr

Feature-Komposition auf Bytecode-Ebene

Feature-Komposition auf Bytecode-Ebene Feature-Komposition auf Bytecode-Ebene Claus Hunsen Sergiy Kolesnikov Sven Apel FOSD-Treffen 2012 Feature-Komposition Quellcode-Komposition Feature-Module (Quellcode) ➊ Komposition Variante (Quellcode)

Mehr

Software Product Lines

Software Product Lines Software Product Lines Concepts, Analysis and Implementation Programmier-Paradigmen für Software-Produktlinien (3/3) ES Real-Time Systems Lab Prof. Dr. rer. nat. Andy Schürr Dept. of Electrical Engineering

Mehr

Was sind embedded DBMS? Eingebettete DBMS. Motivation für Embedded Databases. Besonderheiten Smartcards. in Programme eingebettet z.b.

Was sind embedded DBMS? Eingebettete DBMS. Motivation für Embedded Databases. Besonderheiten Smartcards. in Programme eingebettet z.b. Eingebettete DBMS Was sind embedded DBMS? in Programme eingebettet z.b. (embedded database management systems) Aktuelle Praxis und Herausforderungen Berkeley DB DB4O embedded systems z.b. Smartcard Christian

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

Moderne Programmierparadigmen Objekt-Orientierung

Moderne Programmierparadigmen Objekt-Orientierung Moderne Programmierparadigmen Objekt-Orientierung Sven Apel (Universität Passau) Christian Kästner (Universität Magdeburg) Sven Apel, Christian Kästner Moderne Programmierparadigmen Folie 2 Agenda Historie

Mehr

Die Rolle von Features und Aspekten in der Softwareentwicklung

Die Rolle von Features und Aspekten in der Softwareentwicklung Die Rolle von Features und Aspekten in der Softwareentwicklung Sven Apel Lehrstuhl für Programmierung Universität Passau Innstraße 33, 94032 Passau apel@uni-passau.de Abstract: Feature-orientierte Programmierung

Mehr

Softwareproduktlinien Teil 11: Verbesserte Präprozessoren

Softwareproduktlinien Teil 11: Verbesserte Präprozessoren Softwareproduktlinien Teil 11: Verbesserte Präprozessoren Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) Agenda Wiederholung: Probleme von Präprozessoren

Mehr

Objekt-orientierte Programmierung

Objekt-orientierte Programmierung Objekt-orientierte Programmierung Eine (sehr) kurze Einführung Daniel Lübke Gliederung Motivation Grundlagen (Objekte, Klassen, Vererbung) Interfaces Klassenvariablen

Mehr

Advanced Software Engineering WS0910 Kapitel4. Dr. Dominik Haneberg

Advanced Software Engineering WS0910 Kapitel4. Dr. Dominik Haneberg Advanced Software Engineering WS0910 Kapitel4 Dr. Dominik Haneberg ASPEKT-ORIENTIERTE ENTWICKLUNG 08.02.2010 Advanced Software Engineering 2 Einführung Aspektorientierte Programmierung (AOP) ist ein Programmierparadigma,

Mehr

Anwendung der Aspektorientierung : Security

Anwendung der Aspektorientierung : Security Seminar AOSD Anwendung der Aspektorientierung : Security Miao Tang Betreuer: Dipl.-Inform. Dirk Wischermann 1. Motivation Anwendung der AO: Security 2 Sicherheitsprobleme beim Design und bei der Programmierung

Mehr

Aspekt Orientierte Programmierung

Aspekt Orientierte Programmierung Kapitel 13 Aspekt Orientierte Programmierung 13.1 Aspekte in Apache Wir betrachten den Quellcode des Apache-Servers: Der Code zum XML-Parsen steckt in einer eigenen Klasse (rot) Quelle: aspectj.org 0 ausgearbeitet

Mehr

OOP. Tagesprogramm. Aspektorientierte Programmierung. Annotationen

OOP. Tagesprogramm. Aspektorientierte Programmierung. Annotationen 1 2014-12-03 Tagesprogramm Aspektorientierte Programmierung Annotationen 2 Aspektorientierte Programmierung Programmierparadigma AspectJ separation of concerns Modularisierung Aspekte kapseln Verhalten

Mehr

Aspektorientierte Programmierung

Aspektorientierte Programmierung Aspektorientierte Programmierung Programmierparadigma AspectJ separation of concerns Modularisierung Aspekte kapseln Verhalten das mehrere Klassen betrifft Objektorientierte Programmiertechniken: Aspektorientiertheit,

Mehr

Verifikation und AO Florian Wagner

Verifikation und AO Florian Wagner Verifikation und Aspektorientierung Inhalt Klassifikation und Analyse von Adivces AOP-Fehlermodell und Testkriterien Verifikation Model-Checking State-Based Incremental Testing 2 KLASSIFIKATION UND ANALYSE

Mehr

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer Decorator Pattern Analyse- und Design-Pattern CAS SWE FS14 Roland Müller Samuel Schärer Entwurfsmuster der «Gang of Four» Strukturmuster fassen Klassen und Objekte zu grösseren Strukturen zusammen Adapter

Mehr

Softwareproduktlinien Teil 12: Analyse von Produktlinien

Softwareproduktlinien Teil 12: Analyse von Produktlinien Softwareproduktlinien Teil 12: Analyse von Produktlinien Christian Kästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) inkl. Folien von Das Problem Database

Mehr

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack).

Einfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack). Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 64 2 / 64 Motivation Hauptteil dieser Vorlesung sind die so genannten. Zur Motivation (und als Vorbereitung der Datencontainer-Klassen

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

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

Softwareproduktlinien - Analyse von Produktlinien

Softwareproduktlinien - Analyse von Produktlinien Softwareproduktlinien - Analyse von Produktlinien Christian Kästner (CMU) Sven Apel (Universität Passau) Gunter Saake, Thomas Thüm (Universität Magdeburg) Das Problem Variability = Complexity 33 optional,

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

Kapitel 9 Schnittstellen

Kapitel 9 Schnittstellen Kapitel 9 Schnittstellen Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Agenda Was ist eine Schnittstelle?

Mehr

Aspektorientierte Programmierung (aspect-oriented programming, AOP)

Aspektorientierte Programmierung (aspect-oriented programming, AOP) Aspektorientierte Programmierung (aspect-oriented programming, AOP) Abstract Die aspektorientierte Programmierung ist ein neues Programmierparadigma, das die Probleme und Nachteile, die aus der prozeduralen

Mehr

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste

Mehr

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

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

Implementierung v. Software-Produktlinien - Einführung und Überblick

Implementierung v. Software-Produktlinien - Einführung und Überblick Implementierung v. Software-Produktlinien - Einführung und Überblick Christian Kästner (Carnegie Mellon University) Sven Apel (Universität Passau) Gunter Saake, Thomas Thüm (Universität Magdeburg) 1 Agenda

Mehr

Implementierung v. Software-Produktlinien - Einführung und Überblick

Implementierung v. Software-Produktlinien - Einführung und Überblick Implementierung v. Software-Produktlinien - Einführung und Überblick Christian Kästner (Carnegie Mellon University) Sven Apel (Universität Passau) Gunter Saake, Thomas Thüm (Universität Magdeburg) 1 Agenda

Mehr

Hauptseminar AOSD. Aspektorientierte Programmierung am Beispiel AspectJ

Hauptseminar AOSD. Aspektorientierte Programmierung am Beispiel AspectJ Hauptseminar AOSD Aspektorientierte Programmierung am Beispiel Seite 1 Aspektorientierte Programmierung Umfeld - eine Definition Elemente in Introduction Pointcut Join Point Advice Aspect Errors and Warnings

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

CiAO (CiAO is Aspect-Oriented)

CiAO (CiAO is Aspect-Oriented) CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat Lehrstuhl für Informatik IV Verteilte Systeme und Betriebssysteme

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

Fehlertoleranz durch aspektorientierte Programmierung

Fehlertoleranz durch aspektorientierte Programmierung Fehlertoleranz durch aspektorientierte Programmierung Max Günther Technische Universität Dortmund 5. März 2013 1 / 34 Motivation Fehlertoleranz ist wichtig aber mühselig in Software einzubauen Abhilfe

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

II.4.5 Generische Datentypen - 1 -

II.4.5 Generische Datentypen - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche

Mehr

AOP Day 07. eine Veranstaltung der SIG AspectJ. organisiert vom AOP-Komitee. und der guten Fee. powered by. Oliver Böhm Darko Palic Ludger Solbach

AOP Day 07. eine Veranstaltung der SIG AspectJ. organisiert vom AOP-Komitee. und der guten Fee. powered by. Oliver Böhm Darko Palic Ludger Solbach AOP Day 07 eine Veranstaltung der SIG AspectJ organisiert vom AOP-Komitee Oliver Böhm Darko Palic Ludger Solbach und der guten Fee Bori Gerhardt powered by Historisches (1) Dez. 2005: AspectJ Winter Camp

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse Innere Klassen in Java Java 1.0: nur top-level Klassen Seit Java Version 1.1: Innere Klassen Deklaration einer Klasse innerhalb einer anderen Klasse Illustration Eigenschaften Vorteile Anwendungsmöglichkeiten

Mehr

Behutsame Modernisierung

Behutsame Modernisierung Software Evolution mit Legacy Systemen Forum Forschungsförderung / ViSEK Trends im Software Engineering Software Evolution mit Legacy Systemen Behutsame Modernisierung Jan Wloka

Mehr

Softwareproduktlinien Teil 12: Analyse von Produktlinien. Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg)

Softwareproduktlinien Teil 12: Analyse von Produktlinien. Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) Softwareproduktlinien Teil 12: Analyse von Produktlinien ChristianKästner (Universität Marburg) Sven Apel (Universität Passau) Gunter Saake (Universität Magdeburg) inkl. Folien von Das Problem Database

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

Automatische Verteilung in Pangaea. André Spiegel Freie Universität Berlin

Automatische Verteilung in Pangaea. André Spiegel Freie Universität Berlin Automatische Verteilung in Pangaea André Spiegel Freie Universität Berlin Einführung Pangaea ist ein System, das zentralisierte Java-Programme automatisch verteilen kann basierend auf statischer Quelltextanalyse

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Kapitel 5: Interfaces

Kapitel 5: Interfaces Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,

Mehr

Anwendung der Aspektorientierung: Design Patterns

Anwendung der Aspektorientierung: Design Patterns Anwendung der Aspektorientierung: Design Patterns Seite 1 Agenda Allgemein: Design Patterns Adapter Decorator Observer Design Patterns in der AOP Adapter Decorator Observer Zusammenfassung Seite 2 Allgemein:

Mehr

AOP by Examples. JavaLand, 25. März 2015, Oliver Böhm. Photo from

AOP by Examples. JavaLand, 25. März 2015, Oliver Böhm. Photo from AOP by Examples JavaLand, 25. März 2015, Oliver Böhm Photo from http://www.ukaop.org.uk/ 1 Wie alles begann U.S. Army Photo 1960 1980 2000 Assembler 1960 1980 2000 FORTRAN COBOL C Assembler 1960 1980 2000

Mehr

Programmiermethodik 3. Klausur Lösung

Programmiermethodik 3. Klausur Lösung Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung

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

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

Zusammenfassung und Ausblick

Zusammenfassung und Ausblick Betriebssystemtechnik Operating System Engineering (OSE) Zusammenfassung und Ausblick Überblick Zusammenfassung: Software-Produktlinien Prinzipien Methoden Werkzeuge Herausforderungen für die Zukunft Automatische

Mehr

Feature Modelle. und ihre Anwendung. Feature Modelle und ihre Anwendungen. Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn

Feature Modelle. und ihre Anwendung. Feature Modelle und ihre Anwendungen. Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Feature Modelle und ihre Anwendung Feature Modelle und ihre Anwendungen 22.07.2010 1 Software-Produktlinien Zusammenfassung mehrerer verwandter Softwaresysteme zu einer Domäne (Anwendungsgebiet) Softwaresysteme

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

Qualitätssicherung in der Softwareentwicklung

Qualitätssicherung in der Softwareentwicklung VU 3 Institut für Softwaretechnologie (IST) TU Graz Sommersemester 2012 Übersicht der Vorlesung 1 Invarianten in JML 2 3 4 5 JML Beispiele Invariant package org.jmlspecs.samples.jmlrefman Purse [Burdy

Mehr

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

Mehr

Proseminar: C# und.net. 6. Vortag Generische Klassen. Sebastian Wolf

Proseminar: C# und.net. 6. Vortag Generische Klassen. Sebastian Wolf Proseminar: C# und.net 6. Vortag Generische Klassen Sebastian Wolf 1 Gliederung: 1. Einleitung 2. C# 2.0 3. Beschränkte Generizität 4. Generische Methoden 5. Überladene generische Klassen 6. Was passiert

Mehr

3. GI-Workshop EPK 2004 Geschäftsprozessmanagement mit Ereignisgesteuerten Prozessketten Luxemburg. ARIS meets RUP

3. GI-Workshop EPK 2004 Geschäftsprozessmanagement mit Ereignisgesteuerten Prozessketten Luxemburg. ARIS meets RUP 3. GI-Workshop EPK 2004 Geschäftsprozessmanagement mit Ereignisgesteuerten Prozessketten Luxemburg ARIS meets RUP Der ARIS Unified Information System Development Process Martin Plümicke Berufsakademie

Mehr

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

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Softwareproduktlinien - Analyse von Produktlinien

Softwareproduktlinien - Analyse von Produktlinien Softwareproduktlinien - Analyse von Produktlinien Christian Kästner (CMU) Sven Apel (Universität Passau) Gunter Saake, Thomas Thüm (Universität Magdeburg) Das Problem Variability = Complexity 33 optional,

Mehr

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 14: Interfaces 14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/

Mehr

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle OO Programmiersprache vs relationales Model Vorgehen bisher Erstellen eines ER-Diagramms Übersetzen in das relationale Datenmodell Zugriff auf das relationale Datenmodell aus z.b. Java ER rel. Modell OO

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

Softwaretechnik WS 16/17. Übungsblatt 01 Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and

Mehr

Praktische Softwaretechnologie Vorlesung 3

Praktische Softwaretechnologie Vorlesung 3 Praktische Softwaretechnologie Vorlesung 3 Martin Giese Johann Radon Institute for Computational and Applied Mathematics Österr. Akademie der Wissenschaften Linz PSWT 2006 24. Oktober 2006 p.1/26 Klassendefinition

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

Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete

Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete Grundlagen der Programmierung Prof. H. Mössenböck 15. Pakete Idee Paket = Sammlung zusammengehöriger Klassen (Bibliothek) Zweck mehr Ordnung in Programme bringen bessere Kontrolle der Zugriffsrechte (wer

Mehr

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren

Mehr

10. Programmierungs-Phase: Objektorientierung Software Engineering

10. Programmierungs-Phase: Objektorientierung Software Engineering 10. Programmierungs-Phase: Objektorientierung Software Engineering Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 15. Dezember 2005 Einordnung in den Kontext

Mehr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr 3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,

Mehr

Programmiermethodik. Übung 3

Programmiermethodik. Übung 3 Programmiermethodik Übung 3 Wintersemester 2011 / 12 Fachgebiet Software Engineering george@uni-kassel.de Agenda Besprechung HA2 JUnit4 Implementierung Klassendiagramm Klassen Attribute Methoden Assoziationen

Mehr

New Features Oracle Forms 11g Nichts Neu für Forms?

New Features Oracle Forms 11g Nichts Neu für Forms? New Features Oracle Forms 11g Nichts Neu für Forms? Perry Pakull Technology Manager perry.pakull@trivadis.com Zürich, 20.04.2010 Basel Baden Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br.

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Präsentation Interfaces

Präsentation Interfaces Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.

Mehr

Feature-Oriented Programming [1]

Feature-Oriented Programming [1] Betriebssystemtechnik Operating System Engineering (OSE) Feature-Oriented Programming [1] (D. Batory) Motivation Software wird heute auf einem zu niedrigen Abstraktionsniveau modelliert im Zentrum der

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

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

Anwendungsentwicklung mit Spring

Anwendungsentwicklung mit Spring Anwendungsentwicklung mit Spring Eberhard Wolff Managing Director Interface21 GmbH Interface21 - Spring from the Source Interface21 Produkte u.a. Spring Framework Spring from the Source Consulting, Training,

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

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1

Übergang von funktionaler zu OOP. Algorithmen und Datenstrukturen II 1 Übergang von funktionaler zu OOP Algorithmen und Datenstrukturen II 1 Imperative vs. funktionale Programmierung Plakativ lassen sich folgende Aussagen treffen: funktional: imperativ: Berechnung von Werten

Mehr

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 3 Schnittstellen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr