Aspektorientierte Softwareentwicklung

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Aspektorientierte Softwareentwicklung"

Transkript

1 Ausarbeitung zum Thema Aspektorientierte Softwareentwicklung Erstellt von: Thomas Steinhart HS Furtwangen CN 8 Für: Leiter: Hr. F. Kaspar

2 Inhaltsverzeichnis Inhaltsverzeichnis... 2 Einleitung... 3 Aspekt-Orientierte Software Entwicklung (AOSD)... 4 Was ist ein Aspekt?... 4 Crosscutting Concerns... 4 Separation of Concerns... 5 Ein Beispiel... 6 Der objektorientierte Lösungsansatz... 6 Der aspektorientierte Lösungsansatz... 7 Aspektorientierte Tools... 9 AspectJ... 9 CaesarJ... 9 Funktionsweise von CaesarJ...10 Noch ein Beispiel...10 AspectJ vs. CaesarJ...14 Fazit...15 Literaturverzeichnis /15 Thomas Steinhart

3 Einleitung Die Aspektorientierung ist ein relativ junges Forschungsgebiet mit dem Ziel, Methoden, Sprachen und Werkzeuge für die bessere Modularisierung von funktionalen und nicht funktionalen Belangen zu entwickeln (Bonomo-Kappeler, 2004). In herkömmlichen, objekt-orientierten Systemen können die Kernfunktionen für sich allein sauber in verschiedenen Klassen modularisiert werden. Allerdings gibt es in jedem System auch nicht funktionale Belange, so genannte Crosscutting Concerns (Stal, 2005). Diese Crosscutting Concerns schneiden sich sozusagen quer durch die Kernfunktionen eines Systems (engl. crosscut). Dazu gehören Funktionen wie z.b. Autorisierung, Logging, Tracing, etc. Diese Funktionen lassen sich nicht eindeutig zu einer der Kernfunktionen zuordnen sondern sind durch das gesamte System verstreut. Dadurch verhindern sie eine wirklich saubere Modularisierung und verschlechtern somit die Wartbarkeit, Lesbarkeit, Wiederverwendbarkeit und (Rück-) Verfolgbarkeit (Bonomo-Kappeler, 2004). Diese allerdings sind heutzutage wichtige Kriterien vor allem in Bezug auf die Kosten eines Systems. Die Aspektorientierung beschäftigt sich nun genau mit diesem Problem und versucht Lösungswege aufzuzeigen und Werkzeuge bereitzustellen /15 Thomas Steinhart

4 Aspekt-Orientierte Software Entwicklung (AOSD) Aspektorientierte Software-Entwicklung ist, wie eingangs schon erwähnt, ein sehr junges Forschungsgebiet des Software Engineerings. Sie wird definiert als die Berücksichtigung von Entwurfsentscheidungen, welche quer durch das ganze System getroffen werden müssen (crosscutting concerns) (Bonomo-Kappeler, 2004). Die Aspektorientierung steckt noch in den Kinderschuhen ihrer Entwicklungsphase, zeigt aber schon einige Methoden zur Vorgehensweise auf, die z.t. auf bewährten Methoden des Software Engineerings aufsetzten wie z.b. auf UML. Wie der Name schon andeutet bezieht sich die Aspektorientierung auf einzelne Aspekte, die aus verschiedenen Funktionalitäten heraus definiert und als separate Konstrukte implementiert werden um somit Kernfunktionalitäten zu bereinigen und auf ihre eigentlichen Funktionen zu beschränken. Was ist ein Aspekt? In der Literatur lassen sich verschiedene Definitionen zu Aspekt finden. Allerdings widersprechen sich die einzelnen Definitionen nicht sondern gehen mehr oder weniger tief in die Thematik ein. 1. Definition: Aspekt. Modulare Implementierung eines Crosscutting Concerns. (Definition von Lieberherr, Orleans, Ovlinger, 2001 aus (Bonomo-Kappeler, 2004)) 2. Definition: Aspekt. Modulare Einheit einer crosscutting Implementierung. (Ivar Jacobson, 2004) 3. Definition: Aspekt. Funktionale Einheit, die durch das ganze übrige Systemverhalten gewoben ist. (Siobhán Clarke, 2005) Wie Bonomo-Kappeler zeigt, sind noch einige weitere Definitionen zu finden, allerdings ist die hier als 1.Definition genannte die bevorzugte Definition. Ein Aspekt ist also ein modular implementierter Crosscutting Concern. Was aber ist ein Crosscutting Concern? Crosscutting Concerns Das Wort Concern geht nach Duden (1997) auf lateinisch concernere beachten, berücksichtigen, betreffen, sich beziehen auf, eigentlich Unterschiedliches /15 Thomas Steinhart

5 zusammenmischen (lateinisch con zusammen, mit und lateinisch cernere unterscheiden ) zurück. Es lässt sich auf Deutsch mit Angelegenheit, Interesse, Beziehung übersetzen (Langenscheidt 1991). In der Literatur zu AOSD finden sich zu Concern u.a. folgende Definitionen: 1. Definition: Concern. Spezifische Anforderung oder Gesichtspunkt, welche(r) in einem Software-System behandelt werden muss, um die übergreifenden Systemziele zu erreichen (Laddad, 2003). 2. Definition: Concern. Irgendeine Sache, die an einem System interessiert, d.h. ein Ziel oder eine Menge von Eigenschaften, die das System erfüllen muss (Definition von Brito, Moreira, 2004 aus (Bonomo-Kappeler, 2004)). Auch hier ist die erste Definition wiederum die zu bevorzugende, da sie präziser ist. Ein Concern stellt also eine spezifische Anforderung dar, die behandelt werden muss um übergreifende Systemziele umzusetzen. Dazu gehören natürlich die Kernfunktionalitäten (Core Concerns), ohne die es kein System gäbe. Aber auch durch diese Core Concerns quer schneidende (engl. crosscut), nicht zu diesen Core Concerns gehörende Funktionalitäten gehören hier dazu. Diese werden Crosscutting Concerns genannt. 3. Definition: Crosscutting Concerns. Realisieren diejenigen Funktionen eines Systems, welche die Core Concerns oder andere Crosscutting Concerns quer schneiden, beispielsweise Authentisierung oder Logging (Laddad, 2003). Ein Aspekt stellt somit eine modular implementierte, spezifische Anforderung dar, die mehrere Core Concerns betrifft und diese quer schneidet. Wie aber erkennt man nun einen solchen Aspekt bzw. den Crosscutting Concern? Separation of Concerns Generell versucht man, die Anforderungen während der Planungsphase eines Software Systems zu separieren, d.h. zu identifizieren und so zu trennen, dass die einzelnen Concerns voneinander unabhängig bzw. Schnittmengenfrei sind (Stal, 2005). Dadurch lassen sich die einzelnen Anforderungen separat planen, implementieren und erst später, wenn das Projekt schon weiter fortgeschritten ist, sauber zusammenfügen. Bei diesem Schritt fallen nun die nicht funktionalen Belange bzw. die Anforderungen, die mehrere Core Concerns betreffen, aber nicht dazugehören, auf. Sie werden als /15 Thomas Steinhart

6 Crosscutting Concerns spezifiziert und somit in die Planung mit aufgenommen und später dann als Aspekte implementiert. Ein Beispiel Anhand eines Beispiels kann die Thematik und Problematik der Aspektorientierung etwas verdeutlicht werden. Im Folgenden soll die Methode booking() einer Klasse RoomBooking am Beginn und Ende der Methode mitgeloggt werden. Dies geschieht durch eine Klasse Trace und deren Methoden traceentry(string) und traceexit(string). Der objektorientierte Lösungsansatz UML-Klassendiagramm UML-Sequenzdiagramm Trace RoomBooking :RoomBooking :Trace +traceentry() +traceexit() +booking() booking() traceentry() Code von booking() traceexit() Hier erkennt man sehr deutlich die Probleme der objektorientierten Implementation dieses Aspekts: 1. Die booking()-methode enthält neben ihren eigentlichen Kernfunktionalitäten auch noch die Aufrufe für traceentry() und traceexit(). Dadurch sind die Wiederverwendbarkeit und die Lesbarkeit des Codes eingeschränkt. Dieses Problem wird Tangling genannt (Siobhán Clarke, 2005) /15 Thomas Steinhart

7 2. Das Tracing-Verhalten ist über beide Klassen (RoomBooking, Trace) verteilt. Dies hat zur Folge, dass auch jede andere Methode, die das Tracing implementieren soll, die Methodenaufrufe implementieren muss. Änderungen des Aufrufs müssen also in allen aufrufenden Methoden durchgeführt werden. Dieses Problem wird Scattering genannt (Siobhán Clarke, 2005). Diese Probleme sind mit den Methoden der Objektorientierung nicht oder nur sehr schwer zu umgehen. Der aspektorientierte Lösungsansatz Der aspektorientierte Lösungsversuch moduliert nun die Tracing-Funktionalität als Aspekt. Somit enthält die Klasse RoomBooking keinen Aufruf von traceentry() oder traceexit() mehr. Das übernimmt alles der Aspekt Tracing. Der dafür erforderliche Code des Tracing-Aspekts sieht in AspectJ in etwa folgendermaßen aus: public aspect Tracing { before () : withincode (void Main.startTest()) && call (void RoomBooking.booking()){ Trace.traceEntry(); after () : /15 Thomas Steinhart

8 withincode (void Main.startTest()) && call (void RoomBooking.booking()){ Trace.traceExit(); Der Code kann natürlich nicht mit dem normalen Java-Compiler kompiliert werden. Dazu ist (in diesem Fall) der AspectJ-Compiler verantwortlich /15 Thomas Steinhart

9 Aspektorientierte Tools AspectJ AspectJ ist eine Mehrzweck-, aspektorientierte Erweiterung zur Java- Programmiersprache. Aus diesem Grund ist jedes gültige Java Programm auch ein gültiges AspectJ Programm. Ein AspectJ-Compiler erzeugt.class-dateien die konform mit der Java Byte-Code Spezifikation sind und die von jeder Java Virtual Machine ausgeführt werden können. Dadurch, dass AspectJ Java als Grundsprache verwendet, nutzt es alle Vorteile von Java und macht es Java Programmierern einfach, die AspectJ Sprache zu verstehen (Laddad, 2003). Aspektorientiertes Programmieren funktioniert kurz gesagt folgendermaßen: Man entwickelt die Java Klassen mit den Kernfunktionen seines Systems, dann entwickelt man die Aspekte, die die Crosscutting Concerns bilden. Ob man die Objekte und Aspekte zusammen, separat, nacheinander oder parallel entwickelt hängt nur davon ab, welche Entwicklungsstrategie man verwendet. Wichtig ist, dass, nach dem man alles fertig entwickelt hat, man das Ganze mit dem AspectJ-Compiler kompiliert. Er macht die komplette horizontale Bündelung in Java und erzeugt dann den ausführbaren Byte-Code (Kiselev, 2003). Der AspectJ-Compiler ist als Eclipse Plug-In erhältlich unter CaesarJ Bisher wurde nur die Möglichkeit in Betracht gezogen, Crosscutting Concerns in AspectJ zu implementieren. CaesarJ bietet dagegen die Möglichkeit, Aspekte nicht nur zu lokalisieren sondern sie auch wieder verwendbar zu machen. CaesarJ bietet sich somit sehr gut an für Produktlinienarchitekturen die z.b. viel mit Plug-Ins arbeiten. CaesarJ ist wie AspectJ eine auf Java basierende, aspektorientierte Sprache die Mechanismen zur Verfeinerung und Komposition in größerem Umfang integriert. Kompositionsmechanismen wie Vererbung und Polymorphie werden auf Gruppen von Klassen und nicht nur auf einzelne Klassen angewendet. Ausserdem bietet CaesarJ die Möglichkeit, neue Komponenten ohne Änderung des bestehenden Quelltextes in ein existierendes System zu integrieren. Wie für AspectJ gibt es auch für CaesarJ ein Eclipse Plug-In unter /15 Thomas Steinhart

10 Funktionsweise von CaesarJ CaesarJ arbeitet mit in sich geschlossenen Funktionseinheiten, die mehrere Klassen und alle relevanten Abstraktionen, die für eine Komponente bzw. ein Feature notwendig sind, beinhalten. Das bedeutet, dass alle für eine Komponente bzw. ein Feature notwendigen Klassen in abstrakten Klassen geschachtelt sind, ähnlich wie inner classes in Java. Allerdings können hier die inneren Klassen, genau wie die Methoden in diesen Klassen, in Ableitungen der äußeren Klasse überschrieben bzw. erweitert werden. Diese inneren Klassen sind darum virtuelle Klassen. Um sowohl innere als auch äußere CaesarJ Klassen von normalen Java Klassen zu unterscheiden, werden sie nicht mit dem normalen class-schlüsselwort eingeleitet sondern mit cclass. Die Funktionseinheiten entsprechen in etwa den Aspekten, die oben definiert wurden. Allerdings sind diese Funktionseinheiten wieder unterteilt in Core Concerns und Elementen, die direkt mit der originalen Anwendung zu tun haben. Dies garantiert eine modulare Bauweise der Komponenten. Als Schnittstelle von einer Komponente bzw. einem Feature zu einer Anwendung werden in CaesarJ so genannte collaboration Interfaces (CI) implementiert. Diese definieren die Klassenordnung sowie provided - und expected - Methoden für die virtuellen Klassen. Provided Methoden definieren die Funktionalität und damit die Core Concerns der Komponente bzw. des Features. Expected Methoden dienen zur Abfrage kontextspezifischer Informationen, die notwendig sind wenn bestimmte Teile der Komponente anwendungsspezifisch sind. Noch ein Beispiel An einem Beispiel (entnommen aus (Iris Groher, 2005)) soll gezeigt werden, wie die Implementierung aussehen kann. Dabei soll eine Pricing-Komponente zu einer StockInformationBrocker-Anwendung hinzugefügt werden, um Aktienkursabfragen preislich zu belangen. Die Anwendung sieht wie folgt aus: /15 Thomas Steinhart

11 Folgender Code zeigt die Implementierung eines collaboration Interfaces für die Pricing-Komponente: abstract cclass PricingCI { abstract public cclass Customer { /* provided */ abstract public double getbalance(); abstract public void charge(item it); abstract public Bill createbill(); /* expected */ abstract public String getcustinfo(); abstract public cclass Item { /* provided */ public double getprice(); public double gettax(); public BillLine createbillline(); /* expected */ public double getbaseprice(); public String getitemdescr(); Die einfache Implementierung der Pricing-Komponente sieht folgendermaßen aus, wobei hier nur die provided Methoden implementiert werden, da sie nur die Core Concerns der Komponente darstellt: abstract cclass SimplePricing extends PricingCI { abstract public cclass Customer { private double balance; private List billlines; public double getbalance() { return balance; public void charge(item item) { balance -= item.getprice(); /15 Thomas Steinhart

12 billllines.add(item.createbillline()); public Bill createbill() { String header = "Bill for " + getcustinfo();... abstract public cclass Item { public double getprice() { return getbaseprice() + gettax(); public BillLine createbillline() { return new BillLine(getItemDescr(), getprice(), gettax()); public double gettax() {... Nun muss diese Implementierung aber auch an die originale StockInformationBroker- Anwendung gebunden werden, d.h. sie muss in die Anwendung integriert werden. Dies geschieht bei CaesarJ mit Hilfe eines Bindings. Dabei werden die restlichen expected Methoden implementiert: abstract public cclass PerStockRequestBinding extends PricingCI { public cclass ClientCustomer extends Customer wraps Client { public String getcustinfo() { return wrappee.getclientname() + " " + wrappee.getclientid(); public cclass StockItem extends Item wraps StockInfoRequest { public double getbaseprice() { return 5 + wrappee.getstocks().length * 0.2; public String getitemdescr() { return "Stock req. "+ wrappee.getstocks().length; after(client client, StockInfoRequest request) : (call(stockinfo StockInfoBroker.collectInfo(..)) && this(c) && args(request)) { ClientCustomer(client).charge(StockItem(request)); /15 Thomas Steinhart

13 Das Binding beschreibt also die Verbindung zwischen Features und Anwendung. Bisher waren alle Klassen abstrakt. Um die ganzen Einzelteile nun funktionsfähig miteinander zu kombinieren muss ein Binding mit einer Komponentenimplementierung (den Core Concerns) kombiniert werden. In diesem Beispiel kann mit der folgenden Deklaration SimplePricing mit PerStockRequestBinding kombiniert werden: cclass SimplePricingPerStockRequest extends SimplePricing & PerStockRequestBinding { Dieses Konstrukt zeigt nun eine Klasse die von zwei anderen Klassen erbt. Das ist möglich, da CaesarJ eine einfache Form der Mehrfachvererbung unterstützt wobei die Vererbungshierarchie linearisiert wird, um die typischen Probleme von Mehrfachvererbung zu vermeiden. Die Klassenkomposition setzt sich durch den &-Operator rekursiv in allen geschachtelten Klassen fort, d.h. durch die Komposition der umschließenden Klassen werden auch alle anderen, unterschiedlichen Erweiterungen derselben virtuellen Klassen ebenfalls miteinander kombiniert. Somit werden alle Implementierungen der expected und der provided Methoden der virtuellen Klassen miteinander kombiniert: Um nun die SimplePricingPerStockRequest Klasse tatsächlich einzubinden, muss ein Objekt dieser Klasse explizit mit Hilfe eines Deployment-Mechanismus aktiviert werden. Hierzu wird das Pricing-Feature für den Block innerhalb der Klammern nach dem Schlüsselwort deploy aktiviert, danach ist es wieder deaktiviert: final SimplePricingPerStockRequest pricing = /15 Thomas Steinhart

14 new SimplePricingPerStockRequest(); deploy (pricing) { StockInfoRequest request = new StockInfoRequest(stockList); StockInfo si = StockInformationBroker.getInstance().collectInfo( request); /* Advice ist während der Ausführung dieses Blocks aktiviert*/ CaesarJ bietet mehrere unterschiedliche Deployment-Mechanismen, von denen hier aber nur dieser eine verwendet wird. Dieser ganze Aufwand bringt nun einige Vorteile zur üblichen Implementierung mit AspectJ oder gar mit objektorientierten Mitteln: Die einzelnen Implementierungen, wie PerStockRequestBinding (Binding), SimplePricing (Core Concerns) und PricingCI (Collaboration Interface) können wieder verwendet werden. Verschiedene Implementierungen können miteinander kombiniert werden. Und die Einbindung erfolgt komplett nicht invasiv, was bedeutet, dass die Klassen der ursprünglichen Anwendung nicht geändert werden müssen. AspectJ vs. CaesarJ AspectJ und CaesarJ unterscheiden sich in einigen wesentlichen Punkten: - Behandlung von Aspekten: Bei AspectJ ist ein Aspekt keine Java Klasse und kann deshalb auch nicht instanziiert werden. Bei CaesarJ werden Aspekte als Objekte implementiert und könne je nach bedarf aktiviert oder deaktiviert werden. - Ansatz in der Sichtweise: AspectJ wird meist nur in Verbindung mit der Lösung von Crosscutting Concerns gesehen. CaesarJ wurde mit der Aufgabenstellung entwickelt, ein effektives Werkzeug für die Entwicklung von Software-Systemfamilien zu haben /15 Thomas Steinhart

15 Fazit Meiner Meinung nach ist die Entwicklung und Anwendung von CaesarJ ein logischer Schritt nach der Entwicklung und Einführung der AOSD und AspectJ. Der generelle Ansatz der AOSD ist wichtig und gut um Software besser zu Modularisieren und vermehrt Wiederverwendbar zu machen. Ob der Quellcode dadurch allerdings Lesbarer wird (Bonomo-Kappeler, 2004) wage ich angesichts der komplexen Strukturen von CaesarJ zu bezweifeln. Literaturverzeichnis - Bonomo-Kappeler, I. (2004). Aspektorientierte Software-Entwicklung Unter Besonderer Berücksichtigung Der Begrifflichen Zusammenhänge Und Der Einbettung in Den Entwicklungsprozess. Unpublished Diplomarbeit, Universität Zürich, CH-5430 Wettingen. - Iris Groher, V. G., Christa Schwanninger, Klaus Ostermann. (2005). Aspektorientierte Softwareentwicklung Mit Caesarj. Java Spektrum, 6/2005, Ivar Jacobson, P.-W. N. (2004). Aspect-Oriented Software Development with Use Cases: Addison-Wesley. - Kiselev, I. (2003). Aspect-Oriented Programming with Aspectj: Sams Publishing. - Laddad, R. (2003). Aspectj in Action. Greenwich: Manning Publications Co. - Siobhán Clarke, E. B. (2005). Aspect-Oriented Analysis and Design - the Theme Approach: Addison-Wesley. - Stal, M. (2005). Aspekte Ohne Grenzen. Java Spektrum, 6/2005, /15 Thomas Steinhart

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

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

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

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

Thema: Aspekt-orientierte Entwicklung: Einführung

Thema: Aspekt-orientierte Entwicklung: Einführung Thema: Aspekt-orientierte Entwicklung: Einführung Student: Doris Tchouaffé Studiengang: Master Technische Informatik Matrikelnummer: 11021433 Betreuer: Prof. Dr. Hans W. Nissen Abgabedatum: 08.05.2008

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

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

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

Kompilieren und Linken

Kompilieren und Linken Kapitel 2 Kompilieren und Linken Bevor wir uns auf C++ selbst stürzen, brauchen wir einiges Vorgeplänkel, wie man komfortabel ein größeres C++- kompilieren kann. Mit Java stellt sich der Kompiliervorgang

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

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt Objektorientierter Software-Entwurf Grundlagen 1 1 Einordnung der Veranstaltung Analyse Design Implementierung Slide 1 Informationssystemanalyse Objektorientierter Software-Entwurf Frühe Phasen durch Informationssystemanalyse

Mehr

Software-Entwurfsmuster

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

Mehr

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

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

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

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

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

Projektmodell Softwareentwicklung: Unified Software Development Process / Unified Process (Teil I)

Projektmodell Softwareentwicklung: Unified Software Development Process / Unified Process (Teil I) Projektmodell Softwareentwicklung: Unified Software Development Process / Unified Process (Teil I) Historisch Kulturelle Informationsverarbeitung Hauptseminar: KLIPS 2.0 Dozent: Prof. Dr. Thaller Referent:

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

Mehr

Alltagsnotizen eines Softwareentwicklers

Alltagsnotizen eines Softwareentwicklers Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,

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

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

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

Einführung in Generatives Programmieren. Bastian Molkenthin

Einführung in Generatives Programmieren. Bastian Molkenthin Einführung in Generatives Programmieren Bastian Molkenthin Motivation Industrielle Entwicklung *!!*,(% % - #$% #!" + '( & )!* Softwareentwicklung Rückblick auf Objektorientierung Objektorientierte Softwareentwicklung

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

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was

Mehr

CORBA. Systemprogrammierung WS 2006-2007

CORBA. Systemprogrammierung WS 2006-2007 CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA

Mehr

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Fortgeschrittenes Programmieren mit Java. Test Driven Development Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test

Mehr

Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG

Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG Einführung Was sind Aspekte? Anforderungen: Thema / Aspekt Berühren viele andere

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

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

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

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

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

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

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

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

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Aspektorientierte Modellierung

Aspektorientierte Modellierung Aspektorientierte Modellierung Softwaretechnik-Seminar 2002 Thema: Evolutionäre Software Referent: Alexander Winter Gliederung Einführung und Motivation Was ist Aspektorientierte Modellierung? Vorstellung

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

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

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D 1 1. EINLEITUNG... 3 2. ZWECK... 3 3. MOTIVATION... 3 4. ANWENDBARKEIT... 6 5. STRUKTUR... 6 6. TEILNEHMER... 7 7. INTERAKTION...

Mehr

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

Software Analyse Tooldemo: JQuery Sommersemester 2011. Jonas Pusch

Software Analyse Tooldemo: JQuery Sommersemester 2011. Jonas Pusch Software Analyse Tooldemo: JQuery Sommersemester 2011 Jonas Pusch Gliederung 1. Was ist JQuery? 2. Browsing Code (Motivation for JQuery) 3. Wie funktioniert JQuery? i. JQuery Features ii. TyRuBa (Sprache

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

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

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

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

Quellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke

Quellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke Quellcode-Repräsentation in Eclipse Seminarvortrag PG Reclipse Jan Rieke Gliederung Motivation Architektur von Eclipse Quelltext-Repräsentation in Eclipse Java-Modell Java DOM/AST Zusätzliche Konzepte

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

JMangler. Frithjof Kurtz. Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1

JMangler. Frithjof Kurtz. Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1 JMangler Frithjof Kurtz Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1 JMangler Vortragsgliederung Motivation Java Grundlagen JMangler Grundlagen Transformationen Algorithmen

Mehr

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

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

Mehr

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Kurzanleitung zu. von Daniel Jettka 18.11.2008

Kurzanleitung zu. von Daniel Jettka 18.11.2008 Kurzanleitung zu Tigris.org Open Source Software Engineering Tools von Daniel Jettka 18.11.2008 Inhaltsverzeichnis 1.Einführung...1 2.Das Projektarchivs...3 2.1.Anlegen des Projektarchivs...3 2.2.Organisation

Mehr

Zum Beispiel ein Test

Zum Beispiel ein Test Zum Beispiel ein Test Torsten Mandry OPITZ CONSULTING Deutschland GmbH Gummersbach Schlüsselworte Beispiele, Specification by Example, Akzeptanztest, Lebende Spezifikation, Java Einleitung Beispiele helfen

Mehr

Informationssystemanalyse Use Cases 11 1

Informationssystemanalyse Use Cases 11 1 Informationssystemanalyse Use Cases 11 1 Use Cases Slide 1 Als ein populäres Mittel um Anforderungen zu erfassen und Systeme zu beschreiben, werden Use Cases benutzt. Sie bilden die Basis für eine umfassendere

Mehr

Software - Testung ETIS SS05

Software - Testung ETIS SS05 Software - Testung ETIS SS05 Gliederung Motivation Was ist gute Software? Vorurteile gegenüber Testen Testen (Guidelines + Prinzipien) Testarten Unit Tests Automatisierte Tests Anforderungen an Testframeworks

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

IT-Projekt-Management

IT-Projekt-Management IT-Projekt-Management email: vuongtheanh@netscape.net http: www.dr-vuong.de 2005 by, Bielefeld Seite 1 Vorgehensmodell 2005 by, Bielefeld Seite 2 Was ist ein Vorgehensmodell? Strukturbeschreibung über

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

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

So funktioniert s: Affiliate- Daten per API mit dem Content verschmelzen

So funktioniert s: Affiliate- Daten per API mit dem Content verschmelzen So funktioniert s: Affiliate- Daten per API mit dem Content verschmelzen Die Nutzung von Affiliate-Programmen und -Netzwerken gehört für viele Webseitenund Portalbetreiber bereits zum Alltag. Grafisch

Mehr

Vortrag von: Ilias Agorakis & Robert Roginer

Vortrag von: Ilias Agorakis & Robert Roginer MDA Model Driven Architecture Vortrag von: Ilias Agorakis & Robert Roginer Anwendungen der SWT - WS 08/09 Inhalt Was ist MDA? Object Management Group (OMG) Ziele Konzepte der MDA Werkzeuge Vor- und Nachteile

Mehr

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

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

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

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

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

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

Aspektorientierte Softwareentwicklung. Vorstellung

Aspektorientierte Softwareentwicklung. Vorstellung Seminar im Hauptstudium WS 07/08: Aspektorientierte Softwareentwicklung Vorstellung Seite 1 Thema Modularisierung von aus objektorientierter Sicht quer verstreuten Zuständigkeiten (Crosscutting Concerns)

Mehr

Generatives Programmieren

Generatives Programmieren Generatives Programmieren Seminar Produktlinien WS03/04 Tammo van Lessen 08.01.2004 Outline Einleitung Generatoren Generatives Programmieren Fazit Einleitung Industrielle Entwicklung 1826 Austauschbare

Mehr

Ereignisbehandlung 21

Ereignisbehandlung 21 Ereignisbehandlung 21 3 Ereignisbehandlung Dieses Kapitel beschäftigt sich mit der Ereignisbehandlung, d.h. der Reaktion eines Programms auf Eingaben durch benutzende Personen. Nach einigen ersten Beispielen

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

Spamschutz bei TYPO3. von Bernd Warken bei Fa. Netcos AG

Spamschutz bei TYPO3. von Bernd Warken bei Fa. Netcos AG Spamschutz bei TYPO3 von Bernd Warken bei Fa. Netcos AG Kapitel 0: Einleitung 3 0.1 Vorwort 3 0.2 Lizenz 3 Kapitel 1: Aktivierung und Konfiguration 4 1.1 config.spamprotectemailaddresses 4 1.2 config.spamprotectemailaddresses_atsubst

Mehr

Inhalt. Max Lini. ax. inie. Einleitung... VII

Inhalt. Max Lini. ax. inie. Einleitung... VII rst Inhalt Einleitung....................................................... VII 1 Schöne neue Welt: Objektorientierte Programmierung in PHP 5.............. 1 Klassen, Interfaces und Objekte...................................

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

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

Generative Prozessmodelle Patrick Otto MDD Konferenz 22.03.2009

Generative Prozessmodelle Patrick Otto MDD Konferenz 22.03.2009 Generative Prozessmodelle Patrick Otto MDD Konferenz 22.03.2009 Gliederung 1. Generative Programmierung 2. Möglichkeiten und Einsatzgebiet 3. Prozess / Tools 4. Zusammenfassung 19.03.2009 GENERATIVE PROGRAMMIERUNG

Mehr

Artikel Test-Organisation in grösseren Magento(1)-Projekten

Artikel Test-Organisation in grösseren Magento(1)-Projekten Artikel Test-Organisation in grösseren Magento(1)-Projekten Ein Tipp von unserem Entwickler Claudio Kressibucher Köln/Bergisch Gladbach Münster Aachen Kapstadt/Südafrika www.kennziffer.com GmbH Friedrich-Ebert-Straße

Mehr

Objektorientiertes JavaScript

Objektorientiertes JavaScript Objektorientiertes JavaScript Christoph Fabritz dm121506@fhstp.ac.at http://goo.gl/jzqxnw Inhalt JavaScript Objektorientierung OO in JavaScript Literatur JavaScript Interpretiert / gescriptet Dynamische

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

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

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

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer) Programmieren I Grundlagen von JAVA Dr. Klaus Höppner Hello World in JAVA Hochschule Darmstadt WS 2007/2008 Elementare Datentypen 1 / 17 2 / 17 Eigenschaften von JAVA Prinzipieller Ablauf Plattform-und

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

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:

Mehr

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Jens Kohlmeyer 05. März 2007 Institut für Programmiermethodik und Compilerbau ActiveCharts Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Seite 2 Übersicht

Mehr

C# - PROGRAMME MIT PLUGINS ERWEITERN

C# - PROGRAMME MIT PLUGINS ERWEITERN C# - PROGRAMME MIT PLUGINS ERWEITERN Schreibt man ein Programm welches erweiterbar sein soll, dann gibt es häufig mehrere Möglichkeiten dies umzusetzen. Die Objektorientierung ist dabei der erste Schritt,

Mehr