ung AOP und AspectJ 2005 agentes AG

Größe: px
Ab Seite anzeigen:

Download "ung AOP und AspectJ 2005 agentes AG"

Transkript

1 t ung 1 in AOP und AspectJ

2 Inhalt von Assember bis AspectJ Das Architektur-Dilemma Freie Sicht auf die Businesslogik Do you speak Aschbegt-Dschei? Zusammenfassung 2

3 von Assembler bis AspectJ 3

4 AspectC++ AspectJ Java C++ Smalltalk Simula C FORTRAN COBOL Abstraktion Die Geschichte der Programmiersprachen AOP OOP prozedurale Sprachen Assembler

5 Assembler / Maschinensprache SIE AUS ASS BLE IS ABE NET 5 H,T W,I,E EM R ES R viele Dialekte Prozessor-abhängig HW-abhängig schnell nur von Spezialisten zu verstehen

6 prozedurale Sprachen Bsp: Backanleitung Zwetschgenkuchen: Zutaten in eine Schüssel geben alles verrühren PASCAL COBOL C FORTRAN kuchen = backen(butter, mehl, zucker, eier,...) 6

7 Ruby OO-Sprachen SIMULA Smalltalk C++ Python Eiffel Java Kuchen Zutaten Größe kuchen = new Kuche(butter, mehl, eier); kuchen.backe(); 7 add backe

8 Aspektorientierte Sprachen = OOPS, um Aspekte angereichert, z.b. Logging-Aspekt Security-Aspekt Transaktion-Aspekt... AspectS AspectJ AspectC++ 8

9 Das ArchitekturDilemma 9

10 Die Quadratur der Architektur gute Architekturen = einfach erweiterbar offen für künftige Anforderungen ballastfrei Dilemma wie sehen künftige Anforderungen aus? welche muss ich berücksichtigen? wieviel Design ist zuviel Design? Design auf Vorrat oder das San Francisco -Syndrom 10

11 Ziel der SW-Entwicklung seit 30 Jahren Divide and Conquer Separations of Concern Concern = eigenes Interessengebiet, Konzept, Ding,... es gibt fachliche Concerns (Geschäftslogik) und nichtfachliche Concerns (Logging, Sicherheit,...) Jeder Concern soll in einem eigenen Modul, Klasse,... gekapselt werden 11

12 nichtfachliche Concernsfachliche Concerns g ik o L s s e n i Bu s Lo gg in Pers isten z g Perf orm ance g Fehlerbehandlun ltung Datenha Trans aktion en Client-Server 12 Exception-Hand ling Lastverteilung GUI Sicherheit

13 Modularität XML parsing XML-Parsing in org.apache.tomcat 13 rot = relevanter Code-Bereich begrenzt auf 1 Modul

14 aber... Logging in org.apache.tomcat 14 viele (Querschnitts-) Belange lassen sich nicht kapseln: Performance, Logging, Transaktionen... SW-Module müssen mehrere Anforderungen abdecken kaum Wiederverwendung niedrigere Produktivität neue Anforderungen haben Auswirkung auf Architektur Bsp.: Client-Server

15 Beispiel Logging: Was tun bei Log-Änderungen / -Ergänzungen? manuell aufwändig trotz IDE-Unterstützung (Refactoring) fehleranfällig Framework? Framework kann nicht entscheiden, wann geloggt werden soll autom. Einfügen/Anpassung von Log-Anweisungen (Log-Generator) bei Änderungen muss Generator angepasst werden wie konfigurieren? wie versionieren? Log-Container + (XML-)Deskriptoren EJB-Ansatz aufwendig vielleicht AOP? mal sehn... 15

16 Freie Sicht auf den Code 16

17 Beispiel: Bankkonto fachliche Concerns Einzahlung Auszahlung Überweisung Bonitätsprüfung nichtfachliche Concerns Logging Performance Authorisierung Sicherheit...

18 Ein Fallbeispiel public class Konto { private double kontostand = 0.0; Konto Kontostand public void einzahlen(double betrag) {einzahlen kontostand = kontostand + betrag; abheben ueberweisen public void abheben(double betrag) { kontostand = kontostand - betrag; 18 public void ueberweisen(double betrag, Konto andereskonto) { this.abheben(betrag); andereskonto.einzahlen(betrag);

19 mit Fehlerbehandlung public class Konto { private double kontostand = 0.0; t l e public void einzahlen(double betrag) { if (betrag < 0) { throw new IllegalArgumentException("Betrag negativ"); kontostand = kontostand + betrag; p p r o a d b r s e v le e h d o oc C n public void abheben(double betrag) { if (betrag < 0) { throw new IllegalArgumentException("Betrag negativ"); kontostand = kontostand - betrag; if (kontoueberzogen() { kontostand = kontostand + betrag; throw new RuntimeException( Konto überzogen ); public void ueberweisen(double betrag, Konto andereskonto) { this.abheben(betrag); andereskonto.einzahlen(betrag); 19

20 ...mit Logging public class Konto { private double kontostand = 0.0; public void einzahlen(double betrag) { System.out.println(betrag + " soll eingezahlt werden"); if (betrag < 0) { System.err.println("Einzahlung mit neg. Betrag verweigert"); throw new IllegalArgumentException("Betrag negativ"); kontostand = kontostand + betrag; System.out.println(betrag + " auf Konto eingezahlt."); t h e r c d a o r f a sb C e e l i v r r e e v hw sc public void abheben(double betrag) { System.out.println(betrag + " soll ausgezahlt werden"); if (betrag < 0) { System.err.println("Auszahlung mit neg. Betrag verweigert"); throw new IllegalArgumentException("Betrag negativ"); kontostand = kontostand - betrag; System.out.println(betrag + " von Konto ausgezahlt."); public void ueberweisen(double betrag, Konto andereskonto) { System.out.println(betrag + " soll ueberwiesen werden"); abheben(betrag); andereskonto.einzahlen(betrag); System.out.println(betrag + " auf " + andereskonto + " ueberwiesen"); 20

21 Abhilfe: Refactoring public class Konto { private double kontostand = 0.0; public void einzahlen(double betrag) { System.out.println(betrag + " soll eingezahlt werden"); if (betrag < 0) { System.err.println("Einzahlung mit neg. Betrag verweigert"); throw new IllegalArgumentException("Betrag negativ"); kontostand = kontostand + betrag; System.out.println(betrag + " auf Konto eingezahlt."); extract method public void abheben(double betrag) { System.out.println(betrag + " soll ausgezahlt werden"); if (betrag < 0) { System.err.println("Auszahlung mit neg. Betrag verweigert"); throw new IllegalArgumentException("Betrag negativ"); kontostand = kontostand - betrag; System.out.println(betrag + " von Konto ausgezahlt."); 21 public void ueberweisen(double betrag, Konto andereskonto) { System.out.println(betrag + " soll ueberwiesen werden"); this.abheben(betrag); andereskonto.einzahlen(betrag); System.out.println(betrag + " auf " + andereskonto + " ueberwiesen");

22 Abhilfe: Refactoring public class Konto { private double kontostand = 0.0; r e r public void einzahlen(double betrag) { System.out.println(betrag + " soll eingezahlt werden"); betragcheck(betrag); kontostand = kontostand + betrag; System.out.println(betrag + " auf Konto eingezahlt."); le a b s public void abheben(double betrag) { System.out.println(betrag + " soll ausgezahlt werden"); betragcheck(betrag); kontostand = kontostand - betrag; System.out.println(betrag + " von Konto ausgezahlt."); w t e as public void ueberweisen(double betrag, Konto andereskonto) { System.out.println(betrag + " soll ueberwiesen werden"); this.abheben(betrag); andereskonto.einzahlen(betrag); System.out.println(betrag + " auf " + andereskonto + " ueberwiesen"); 22 private void betragcheck(double betrag) throws IllegalArgumentException { if (betrag < 0) { System.err.println("Aktion mit neg. Betrag verweigert"); throw new IllegalArgumentException("Betrag negativ");

23 Abhilfe: Aspekte public class Konto {? g e n i d lu betrag) { public void einzahlen(double kontostand = ikontostand st nd?+ betrag; o ha ng e i W b g betrag) { public void abheben(double r g e= kontostand kontostand - betrag; l o h L Fe private double kontostand = 0.0; 23 public void ueberweisen(double betrag, Konto andereskonto) { this.abheben(betrag); andereskonto.einzahlen(betrag);

24 Hier! Fehlerbehandlung über Aspekte public aspect KontoAspect { pointcut zahlen(double betrag): call(public void Konto.einzahlen(double)) call(public void Konto.abheben(double) && args(betrag); before(double betrag): zahlen(betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); Fehlerbehandlung in Aspekt herausgezogen 24

25 weitere Prüfungen pointcut kontomethods(): call(public * Konto.*(..)); after(): kontomethods() { if (((Konto)thisJoinPoint.getTarget()).kontostand < 0) { throw new RuntimeException("Konto ueberzogen"); wird after jeder Methode eingewebt 25

26 Logging-Aspekt pointcut allpublic(): call(public * summer.camp.*.*(..)); Object around(): allpublic() { System.out.println( ">>> " + thisjoinpoint + ": " + thisjoinpoint.gettarget()); Object toreturn = proceed(); System.out.println( "<<< " + thisjoinpoint + ": " + thisjoinpoint.gettarget()); return toreturn; Aufruf des ursprünglichen Codes 26

27 Do you think in AOP? Logging Sicherheit Person Konto Security Persistenz SW-System Das System als Menge von Concerns 27

28 Der Webe-Vorgang (Weaving) Konto KontoAspect private double kontostand = 0.0; pointcut kontobewegung(double betrag): (call(public void bank.konto.einzahlen(double)) call(public void bank.konto.abheben(double))) && args(betrag); public void einzahlen(double betrag) { kontostand = kontostand + betrag; public void abheben(double betrag) { kontostand = kontostand - betrag; public void ueberweisen(double betrag, Konto andereskonto) { this.auszahlen(betrag); andereskonto.einzahlen(betrag); before(double betrag) : kontobewegung(betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); Konto.class private double kontostand = 0.0; public void einzahlen(doube betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); kontostand = kontostand + betrag; public void abheben(double betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); kontostand = kontostand - betrag; public void ueberweisen(double betrag, Konto andereskonto) { this.auszahlen(betrag); andereskonto.einzahlen(betrag); 28

29 Do you speak AschbegtDschei? 29

30 Begrifflichkeiten Joinpoint Punkte im Programm, an denen Code erweitert oder modifiziert werden soll Pointcut eine Auswahl von Joinpoints Advice der Code für den Pointcut Introduction Erweiterung anderer Klassen, Interfaces, Aspekte um zusätzliche Funktionalität Aspect Konstrukt, in dem das obige abgelegt wird 30

31 Joinpoints können sein 31 Aufrufen einer Methode Ausführen einer Methode Zugriff auf eine Variable Behandeln einer Exception Initialisierung einer Klasse Initialisierung eines Objekts

32 Joinpoints im Programm (Ausschnitt) andereskonto Konto Benutzer 1: 1 2 konto Konto 2: einzahlen(1000.0):void3 3: ueberweisenauf(andereskonto, 200.0):void : abheben(200.0):void 3.2: einzahlen(200.0):void

33 Pointcuts P3 P2 P1 Menge aller Joinpoints 33

34 Pointcut Pointcut = Pattern oder Abfrageprädikat über Joinpoints Wildcards möglich Logische Operatoren Primitive Pointcut = Pointcut ohne Namen Named Pointcut Name pointcut allpublic(): call(public * winter.camp.*.*(..)); alle public-methoden aus winter.camp mit beliebigen Parametern pointcut zahlen(double betrag): call(public void winter.camp.konto.*zahlen(double)) && args(betrag); 34

35 before-advice Aktion wird vor dem ursprünglichen Joinpoint ausgeführt before(): allpublic() { System.out.println(thisJoinPoint); für alle public-methode gib den Joinpoint aus 35

36 after-advice Aktion wird nach dem eigentlichen Joinpoint ausgeführt after(): kontomethods() { if (((Konto)thisJoinPoint.getTarget()).kontostand < 0) { throw new RuntimeException("Konto ueberzogen"); überprüfe nach jeder Konto-Methode den Kontostand 36

37 around-advice Aktion wird anstelle des Codes ausgeführt void around(double betrag): zahlen(betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); proceed(betrag); überprüfe für die zahlen-methoden den Parameter und rufe danach die eigentliche Methode auf ruft den ursprünglichen Code auf 37

38 Aspekte Aspekt = Container für die neuen Konzepte können Advices und Pointcuts enthalten Methoden, Variablen und Inner Classes Aspekte sind Klassen sehr ähnlich verhalten sich zu Klassen wie Klassen zu structs in C++ 38 können interfaces implementieren können von Klassen abgeleitet werden

39 Beispiel package winter.camp; public aspect KontoAspect { pointcut zahlen(double betrag): call(public void winter.camp.konto.*zahlen(double)) && args(betrag); void around(double betrag): zahlen(betrag) { if (betrag < 0) { throw new IllegalArgumentException("negativer Betrag"); proceed(betrag); 39

40 Introduction auch als intra-class declaration bekannt mit Introduction können andere Aspekte, Interfaces oder Klassen erweitert werden hinzugefügt werden können: KontoAspect Variablen Methoden Interfaces Vaterklassen Konto bewährtes Konzept ( open classes ), z.b. in Python Kontostand einzahlen auszahlen ueberweisen 40 Konto.istGespert( ){... s ce du o tr n i

41 Zusammenfassung 41 Am Anfang war der Assembler danach: prozedural, OO Problem: Querschnittsbelangen (Crosscutting Concerns). Lösung: AOP AOP baut auf OOP auf AspectJ baut auf Java auf AOP-Entwicklung = Aspekt-Zerlegung ConcernImplementierung Weaving ( Compiler) Begrifflichkeiten: Joinpoints Pointcuts Advice Aspekt

42 Übungen 42 AJDT herunterladen und installieren Uebung/Kap01-Intro von herunterladen und als Projekt in Eclipse anlegen

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

AOP by Examples A P. 3. August Folie 1. AOP by Examples. agentes GmbH

AOP by Examples A P. 3. August Folie 1. AOP by Examples. agentes GmbH O A P 3. oliver.boehm@agentes.de Folie 1 Inhalt von Assember bis AspectJ Hello-World-Beispiel Begrifflichkeiten noch mehr Beispiele Was ist neu in AspectJ 1.6? Zusammenfassung Folie 2 von Assembler bis

Mehr

Ist AOP reif für die Praxis? (AOP = Aspektorientierte Programmierung) aop. Juli agentes AG

Ist AOP reif für die Praxis? (AOP = Aspektorientierte Programmierung) aop. Juli agentes AG Ist AOP reif für die Praxis? (AOP = Aspektorientierte Programmierung) aop Juli 2006 Oliver.Boehm@agentes.de agentes AG Wir über uns Aktiengesellschaft mit Sitz in Stuttgart Ausgründung aus FIDUCIA IT AG

Mehr

SW-Archäologie mit AspectJ

SW-Archäologie mit AspectJ SW-Archäologie mit AspectJ Ausgrabungen vergangener SW-Architekturen Java Forum Stuttgart 2015 oliver.boehm@aosd.de 1 Agenda. 1.0 2.0 3.0 4.0 5.0 Die klassische Herangehensweise Ein kleiner Ausflug mit

Mehr

Die NullPointerException-Falle

Die NullPointerException-Falle Die NullPointerException-Falle If we were able to understand it, we wouldn't call it code! (aus http://www.michael-puff.de/ablage/signaturen.php) 5. Juli 2007 Java Forum Stuttgart Oliver.Boehm@agentes.de

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

SW-Archäologie mit AOP (Praxisbericht)

SW-Archäologie mit AOP (Praxisbericht) SW-Archäologie mit AOP (Praxisbericht) Ausgrabungen vergangener SW-Architekturen 9. Workshop SW-Reengineering Bad Honnef Mail 2007 Oliver.Boehm@agentes.de agentes AG 2006 Aktionäre Pironet NDH AG (Hauptaktionär)

Mehr

Einführung in die Aspect Orientierte Programmierung (AOP) Arno Schmidmeier, AspectSoft JUGS Zürich, Januar 2003

Einführung in die Aspect Orientierte Programmierung (AOP) Arno Schmidmeier, AspectSoft JUGS Zürich, Januar 2003 Einführung in die Aspect Orientierte Programmierung (AOP) Arno Schmidmeier, AspectSoft JUGS Zürich, Januar 2003 Inhalt AOP Einführung Meine Erfahrungen Fragen und Antworten AOP Einführung Arno Schmidmeier

Mehr

spectj AOP mit Java, Konzepte und Beispiele

spectj AOP mit Java, Konzepte und Beispiele A spectj AOP mit Java, Konzepte und Beispiele AspectJ Ist eine Erweiterung von Java Ist eine aspektorientierte Sprache (wie Java eine objektorientierte Sprache ist) Ist frei verfügbar der Compiler ist

Mehr

1 Einführung in Aspektorientierung

1 Einführung in Aspektorientierung Teil I Einleitung 3 1 Einführung in Aspektorientierung Any fool can write code that a computer can understand. Good programmers write code that humans can understand. (Martin Fowler in»refactoring«) Neue

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

Aspektorientierte Programmierung mit.net

Aspektorientierte Programmierung mit.net Aspektorientierte Programmierung mit.net David Hahn & Viktor Steinwand 1 1. 2. 3. 4. 5. Vorgehen beim AOP 6. 7. durch AOP 8. 9. 10. 2 1. AOP ist ein mächtiges Werkzeug für den Entwickler-Werkzeugkoffer

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

1 Motivation und Einleitung

1 Motivation und Einleitung AspectJ - AOP für Java Georg Blaschke (georg.blaschke@stud.informatik.uni-erlangen.de) Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Betriebssysteme und Verteilte Systeme 3. Mai 2003

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

Aspekt-orientierte Programmierung

Aspekt-orientierte Programmierung 1/100 Aspekt-orientierte Programmierung Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Separation der Interessen 2/100 Die Separation der Interessen (separation of concerns)

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

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

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

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

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

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 - n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information

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

Bessere Software durch AOP? Achim Demelt OOP 2008

Bessere Software durch AOP? Achim Demelt OOP 2008 Bessere Software durch AOP? Achim Demelt OOP 2008 Agenda Motivation Konzepte der Aspektorientierung Aspektorientierung in der Praxis Bessere Software? Die Zukunft von AOP 2 Motivation Software wird immer

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

Analyse der Klasse Konto

Analyse der Klasse Konto Klasse Konto erzeugt Objekte vom Typ Konto mit gleichen Eigenschaften mit gleichen Fähigkeiten Welche Eigenschaften hat ein Konto? Attribute Datenfelder - Konto hat eine Nummer - Konto hat Inhaber - Konto

Mehr

Aspekt-orientierte Programmierung

Aspekt-orientierte Programmierung Aspekt-orientierte Programmierung Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2006-01-09 Separation der Interessen Die Separation der Interessen (separation of

Mehr

JUnit. Software-Tests

JUnit. Software-Tests JUnit Software-Tests Übersicht Einleitung JUnit Jia Li Grundlegendes Diana Howey Hendrik Kohrs Praktische Einbindung Benjamin Koch Zili Ye Einleitung in allgemeines Testen Automatische Tests Testen ist

Mehr

Aspektorientiertes Programmieren in Java

Aspektorientiertes Programmieren in Java Vortrag im Rahmen der Vorlesung MSI an der Hochschule Mannheim 06.04.2006 Aspektorientiertes Programmieren in Java Vortragende: Anton Wagenblaß (anton.wagenblass@gmx.de ) Daniel Pech (daniel-p@gmx.de)

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Aspektorientierte Middleware Florian Wagner

Aspektorientierte Middleware Florian Wagner Anwendungen der Aspektorientierung (5) Übersicht Middleware? Middleware-Concerns Java 2 Enterprise Edition AO Implementierung AOP & JBoss 2 mid dle ware (mĭd'l-wâr') n. Software that serves as an intermediary

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.

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

AOSTA. Aspects in Operating Systems: Tools and Applications

AOSTA. Aspects in Operating Systems: Tools and Applications AOSTA Aspects in Operating Systems: Tools and Applications Michael Engel, Philipps-Universität Marburg AG Verteilte Systeme engel@informatik.uni-marburg.de Aspektorientierung in 5 Minuten ;-) Crosscutting

Mehr

Hauptseminar AOSD. Design-by-Contract

Hauptseminar AOSD. Design-by-Contract Hauptseminar AOSD Seite 1 Entstehung Was ist das? Java Annotations und AOP ConceptJ Zusammenfassung Seite 2 Entstehung Entwickelt von Bertrand Meyer Heute Prof. an der ETH Zürich Erstmals in Programmiersprache

Mehr

Arrays von Objekten. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Arrays von Objekten. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Arrays: Wiederholung Ein

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

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

Hochschule Furtwangen

Hochschule Furtwangen Hochschule Furtwangen Seminar Aktuelle Themen der Informatik Ausarbeitung Tools für Aspekt-orientierte Programmierung Harald Schwecht, CN 7 19.05.2006 Inhaltsverzeichnis 1. Einleitung... 3 2. Begriffserklärung...

Mehr

Einführung in die Programmierung für NF. Fehler und Ausnahmen

Einführung in die Programmierung für NF. Fehler und Ausnahmen Einführung in die Programmierung für NF Fehler und Ausnahmen Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java- Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Teil 8: Vererbung Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 1. Dezember 2015 Martin

Mehr

Javaaktuell. Sonderdruck. in Höchstform. iii iii iii ijug. iii. Java EE 6: GlassFish, JBoss und Geronimo, Seite 11

Javaaktuell. Sonderdruck. in Höchstform. iii iii iii ijug. iii. Java EE 6: GlassFish, JBoss und Geronimo, Seite 11 D: 4,90 EUR A: 5,60 EUR CH: 9,80 CHF Benelux: 5,80 EUR ISSN 2191-6977 Java in Höchstform Java EE 6: GlassFish, JBoss und Geronimo, Seite 11 Android: Wissenschaftliche Applikationen der nächsten Generation

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Abschnitt 7: Weitere Konzepte der oo Programmierung in Java

Abschnitt 7: Weitere Konzepte der oo Programmierung in Java Abschnitt 7: Weitere Konzepte der oo Programmierung in Java 7. Weitere Konzepte der oo Programmierung in Java 7.1 Peer Kröger (LMU München) Einführung in die Programmierung WS 14/15 596 / 627 Überblick

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 11. Fehler und Ausnahmen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Ziele 2 Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen können Ausnahmen behandeln können Fehlerhafte

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 13/14. Kapitel 11. Fehler und Ausnahmen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 13/14. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Ziele 2 Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen können Ausnahmen behandeln können Fehlerhafte

Mehr

Algorithmen implementieren. Implementieren von Algorithmen

Algorithmen implementieren. Implementieren von Algorithmen Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente

Mehr

Die Klasse java.lang.object. Thorsten Treffer

Die Klasse java.lang.object. Thorsten Treffer Die Klasse java.lang.object Thorsten Treffer 6. Dezember 2003 1 java.lang.object Die Klassenhierarchie von Java kann als Baum aufgezeichnet werden, dessen Wurzel die Klasse Object ist. Mit anderen Worten:

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen

FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen Sommersemester 2013 Michael Theis, Lehrbeauftragter Java EE Spezifikation definiert ein Programmiermodell für Applikationen die Eigenschaften

Mehr

Ersetzbarkeit und Verhalten

Ersetzbarkeit und Verhalten Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void

Mehr

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

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 854 Überblick 9. Weitere Konzepte der oo Programmierung in Java 9.1 Vererbung, abstrakte Klassen, Polymorphismus 9.2 Interfaces 9.3 9.4 Polymorphie versus Typsicherheit Peer Kröger (LMU München) Einführung

Mehr

Client-Server-Beziehungen

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

Mehr

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung Clientseitige Web-Programmierung mit JavaScript Version 1.1 3.5.2010 1 aktuelles 2 clientseitige Web-Programmierung verschiedene Ansätze JavaScript Java Applet Adobe Flash Microsoft Silverlight RIA: rich

Mehr

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Erzeugungsmuster. Kapselung der Objekt-Erzeugung Erzeugungsmuster Kapselung der Objekt-Erzeugung Definition Erzeugungsmuster dienen für die Lose Koppelung, bei der erst zur Laufzeit der Typ des zu erzeugenden Objekts festgelegt wird. Abstract Factory

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

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Informatik II Übung 06. Benjamin Hepp 5 April 2017 Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.

Mehr

II.4.4 Exceptions - 1 -

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

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

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

Programmieren. JUnit-Tests. Heusch -- Ratz -- Institut für Angewandte Informatik

Programmieren. JUnit-Tests. Heusch -- Ratz --   Institut für Angewandte Informatik Programmieren JUnit-Tests Heusch -- Ratz -- KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development

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

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

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

Software Engineering II Fachvortrag. Sarah Kaschper, Nicole Netzbandt, Nessi Durkaya, Christoph Kozielski, Marno Schmigotzki

Software Engineering II Fachvortrag. Sarah Kaschper, Nicole Netzbandt, Nessi Durkaya, Christoph Kozielski, Marno Schmigotzki Software Engineering II Fachvortrag Sarah Kaschper, Nicole Netzbandt, Nessi Durkaya, Christoph Kozielski, Marno Schmigotzki Gliederung Das Spring Framework - Gliederung Frameworks Java-Frameworks Aspektorientierte

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

Einführung in die Programmierung für NF. Vererbung

Einführung in die Programmierung für NF. Vererbung Einführung in die Programmierung für NF Vererbung Ziele Vererbungsprinzip der objektorien=erten Programmierung verstehen und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden

Mehr

JAX-RS 2.0 REST mit Java EE 7

JAX-RS 2.0 REST mit Java EE 7 Enterprise Java, Web Services und XML JAX-RS 2.0 REST mit Java EE 7 Java User Group Darmstadt 13. Juni 2013 http://www.frotscher.com thilo@frotscher.com Vorstellung Freiberuflicher Softwarearchitekt und

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

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

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. Januar 2018 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 17. Februar

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

System.out.println("TEXT");

System.out.println(TEXT); Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class

Mehr

Von Objektorientierung zu Aspektorientierung AspectJ

Von Objektorientierung zu Aspektorientierung AspectJ Von Objektorientierung zu Aspektorientierung AspectJ Michael Kanis Technische Universität München 24.06.2008 Zusammenfassung Dieser Artikel gibt einen Überblick über die Konzepte aspektorientierter Programmierung,

Mehr

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 -

Mehr

Aspektorientierte Programmierung mit AspectJ5

Aspektorientierte Programmierung mit AspectJ5 Oliver Böhm Aspektorientierte Programmierung mit AspectJ5 Einsteigen in AspectJ und AOP dpunkt.verlag Inhaltsverzeichnis Vorwort v I Einleitung 1 1 Einführung in Aspektorientierung 3 1.1 Von Assembler

Mehr

Enterprise JavaBeans Überblick: 12. Session Facade Einleitung 12.2 Problem 12.3 Lösung. Prof. Dr. Björn Dreher Liste V Enterprise JavaBeans 460

Enterprise JavaBeans Überblick: 12. Session Facade Einleitung 12.2 Problem 12.3 Lösung. Prof. Dr. Björn Dreher Liste V Enterprise JavaBeans 460 Enterprise JavaBeans Überblick 1. Überblick Komponententechnologien 2. Einführung 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.

Mehr

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren Ausnahmebehandlung Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren Ausnahmen abfangen Ausnahmen definieren Sinnvolle Verwendung von Ausnahmen Informatik II: Objektorientierte SW-Entwicklung, Algorithmik,

Mehr

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 - 1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen Folge von

Mehr

Empfehlenswerte Literatur

Empfehlenswerte Literatur Empfehlenswerte Literatur 1 Flanagan, David: Java in a Nutshell, O Reilly, UK, 2002 (50 ) Online Referenzen unter http://www.wi3.uni-erlangen.de/lehre/ http://java.sun.com http://www.javaworld.com/ Online

Mehr

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms. Inhalt Algorithmus Euklidscher Algorithmus Sortieren Programmiersprachen Entwicklungsschritte eines Programms Algorithmen 1 Algorithmus Eindeutige Beschreibung eines allgemeinen Verfahrens unter Verwendung

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

Grundlagen der Programmierung in C Klassen

Grundlagen der Programmierung in C Klassen Grundlagen der Programmierung in C Klassen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple address pointer reference structured integral

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen

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

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Spec# Einführung Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Inhalt Einführung in C# Das Spec# System Die Konstrukte Vererben der Verträge System Architektur Einführung

Mehr

Software Factories SS 2016. Prof. Dr. Dirk Müller. 9 Aspektorientierte Programmierung

Software Factories SS 2016. Prof. Dr. Dirk Müller. 9 Aspektorientierte Programmierung Software Factories 9 Aspektorientierte Programmierung Prof. Dr. Dirk Müller Übersicht Motivation Scattering und Tangling Separation of Concerns Geschichte und Terminologie Fallstudie: Patientendatensystem

Mehr