ung AOP und AspectJ 2005 agentes AG
|
|
- Chantal Böhme
- vor 5 Jahren
- Abrufe
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 Oliver Böhm Darko Palic Ludger Solbach und der guten Fee Bori Gerhardt powered by Historisches (1) Dez. 2005: AspectJ Winter Camp
MehrAOP 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
MehrIst 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
MehrSW-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
MehrDie 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
MehrAOP 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
MehrSW-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)
MehrEinfü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
Mehrspectj 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
Mehr1 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
MehrEinfü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
MehrAspektorientierte 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
MehrAspekt 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
Mehr1 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
MehrOOP. Tagesprogramm. Aspektorientierte Programmierung. Annotationen
1 2014-12-03 Tagesprogramm Aspektorientierte Programmierung Annotationen 2 Aspektorientierte Programmierung Programmierparadigma AspectJ separation of concerns Modularisierung Aspekte kapseln Verhalten
MehrAspektorientierte Programmierung
Aspektorientierte Programmierung Programmierparadigma AspectJ separation of concerns Modularisierung Aspekte kapseln Verhalten das mehrere Klassen betrifft Objektorientierte Programmiertechniken: Aspektorientiertheit,
MehrAspekt-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)
MehrAspektorientierte 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
MehrApplication Frameworks
Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung
MehrBehutsame Modernisierung
Software Evolution mit Legacy Systemen Forum Forschungsförderung / ViSEK Trends im Software Engineering Software Evolution mit Legacy Systemen Behutsame Modernisierung Jan Wloka
MehrAdvanced 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,
MehrInstrumentation 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
Mehrn 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
MehrThema: 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
MehrBessere 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
MehrVorlesung 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
MehrVorlesung 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
MehrAnalyse 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
MehrAspekt-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
MehrJUnit. 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
MehrAspektorientiertes 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)
MehrTeil 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
MehrRepetitorium 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
MehrAspektorientierte 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
MehrEinfü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.
MehrVerifikation 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
MehrAOSTA. 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
MehrHauptseminar 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
MehrArrays 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
MehrEnterprise 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.
MehrHauptseminar 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
MehrHochschule 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...
MehrEinfü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
MehrInfo 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
MehrEinfü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
MehrJavaaktuell. 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
Mehr1. 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
Mehr1. 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
MehrAbschnitt 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
MehrEinfü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
MehrSEP 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
MehrEinfü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
MehrAlgorithmen 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
MehrDie 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:
MehrTag 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
MehrFWP 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
MehrErsetzbarkeit 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 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
MehrClient-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
MehrGrundlagen 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
MehrErzeugungsmuster. 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
MehrKapitel 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
MehrInformatik 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.
MehrII.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
MehrJava 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
MehrKapitel 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
MehrProgrammieren. 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
MehrII.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
MehrInterface. 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.
Mehr1. 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
MehrSoftware 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
MehrDecorator 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
MehrEinfü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
MehrJAX-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
MehrAnwendungsentwicklung 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,
MehrKapitel 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
MehrInstitut 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
MehrMartin 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
MehrSystem.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
MehrVon 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,
Mehrn 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 -
MehrAspektorientierte 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
MehrEnterprise 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.
MehrAusnahmebehandlung. 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,
Mehr1. 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
MehrEmpfehlenswerte 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
MehrInhalt. 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
Mehr10. 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
MehrGrundlagen 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
MehrProgrammieren 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
MehrClient-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
MehrSpec# 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
MehrSoftware 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