Rekonfiguration durch dynamische aspektorientierte Programmierung
|
|
- Melanie Anneliese Simen
- vor 5 Jahren
- Abrufe
Transkript
1 Rekonfiguration durch dynamische aspektorientierte Programmierung Martin Gumbrecht 13. Juni 2014
2 Motivation Dynamische Rekonfiguration von Softwaresystemen Fehlerbehebung, Sicherheitsaktualisierungen, Weiterenwicklung Ohne Neustart des Systems Dynamische aspektorientierte Programmierung Mechanismen zum Einbinden von Code zur Laufzeit Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 2 31
3 Agenda Aspektorientierte Programmierung Dynamische aspektorientierte Programmierung Binärcodemanipulation Interpreterbasiert Quellcode-Instrumentierung Implementierungen Betriebssysteme Eingebettete Systeme Mehrfädige Anwendungssysteme Fazit Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 3 31
4 Agenda Aspektorientierte Programmierung Dynamische aspektorientierte Programmierung Binärcodemanipulation Interpreterbasiert Quellcode-Instrumentierung Implementierungen Betriebssysteme Eingebettete Systeme Mehrfädige Anwendungssysteme Fazit Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 4 31
5 Aspektorientierte Programmierung Modularisierung querschneidender Belange z. B. Logging, Fehlerbehandlung, Datenvalidierung Kontextunabhängige Implementierung Automatisiertes Einfügen in den Code An definierte Orte: z. B. alle/bestimmte Funktionsaufrufe Verschiedene Typen: z. B. before, after, around Realisiert durch Precompiler Querschneidende Belange Komponente Aspekt Ohne AOP Mit AOP Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 5 31
6 Begriffserklärung Advice Modularisierter Aspekt-Code logger.info("method called") Pointcut Menge von Punkten, an denen ein Advice eingefügt werden soll pointcut std_func_calls() = call("% std::% (...)"); Join-Point Diskreter Punkt, an dem ein Advice aufgerufen wird Weaver Werkzeug zum Einbinden der Aspekte in den Code Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 6 31
7 Agenda Aspektorientierte Programmierung Dynamische aspektorientierte Programmierung Binärcodemanipulation Interpreterbasiert Quellcode-Instrumentierung Implementierungen Betriebssysteme Eingebettete Systeme Mehrfädige Anwendungssysteme Fazit Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 7 31
8 Dynamische aspektorientierte Programmierung Dynamische AOP: Aspekte zur Laufzeit einbinden Nachladen von Aspekt-Code Pointcuts und Advices definieren Dynamischer Weaver Einbinden der Aspekte zur Laufzeit Zur Rekonfiguration von Softwaresystemen: Hinzufügen von Funktionalität durch dynamische Aspekte Austausch von Funktionen durch Around-Advices Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 8 31
9 Binärcodemanipulation Auffinden der Join-Points im Binärcode z. B. durch Symboltabellen Ersetzen von call-instuktionen Aufrufen von nachgeladenem Code Synchronisation erforderlich 1 caller: call aspect aspect: 2 //before 3 call func 4 //after 5 ret Problem: Compiler-Optimierungen wie Code-Inlining und Symbol-Stripping Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 9 31
10 Binärcodemanipulation + Effizient Plattform- und Compilerspezifisch Nicht für alle Programmiersprachen/Compiler realisierbar Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 10 31
11 Interpreterbasiert Angepasste Laufzeitumgebung Identifiziert Join-Points zur Laufzeit Führt bei Bedarf Aspekt-Code aus Bei Bytecodeinterpretern i.d.r. Ausführung im Debugging-Modus + Sehr mächtig Angepasste Ausführungsumgebung erforderlich Hoher Ressourcenverbrauch Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 11 31
12 Quellcode-Instrumentierung Einfügen von Join-Points zur Compile-Zeit Durch Precompiler Durch generierte Proxy-Objekte Aufrufen eines Aspektmanagers am Join-Point Auf nachgeladene Aspekte prüfen Ausführen der Aspekte Dynamische Aspekte beim Aspektmanager registrieren Quellcode call Aspektmanager register Dynamischer Aspekt Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 12 31
13 Quellcode-Instrumentierung + Plattformunabhängig Keine Definition von Join-Points zur Laufzeit Overhead auch bei ungenutzten Join-Points Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 13 31
14 Agenda Aspektorientierte Programmierung Dynamische aspektorientierte Programmierung Binärcodemanipulation Interpreterbasiert Quellcode-Instrumentierung Implementierungen Betriebssysteme Eingebettete Systeme Mehrfädige Anwendungssysteme Fazit Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 14 31
15 Rekonfiguration von Betriebssystemen Framework zur dynamischen Rekonfiguration von Betriebssystemen Nutzt Binärcodemanipulation Mehrere Aspekte pro Join-Point Aspekt-Code als Kernel-Modul nachladen Beispielhafte Implementierung für Linux Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 15 31
16 Aspekt-Code als Kernel-Modul Precompiler übersetzt Aspekte zu Kernel-Modulen (C-Code) Adresse der Funktionen in Symboltabelle nachschlagen Registrieren und Einbinden des Aspekts beim Laden Übersetzter Aspekt-Code (vereinfacht) 1 # define ADDRESS 0 xdeadbeef 2 # define TYPE before 3 void advice ( void ){ 4 printk (" this is a before - advice \n"); 5 } 6 int init_module (){ 7 register ( advice, TYPE, ADDRESS ); 8 weave ( ADDRESS ); 9 } 10 void cleanup_module (){ 11 unweave ( ADDRESS ); 12 unregister ( advice, TYPE, ADDRESS ); 13 } Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 16 31
17 Aspektmanager Dynamischer Weaver Erste Anweisung einer Funktion wird mit Aufruf des Aspektmanager ersetzt Aspektmanager Alle Pointcuts mit zugehörigen Advices als Multiliste Aspektmanager ruft zum Join-Point gehörende Advices auf : caller : base program : aspect manager : before : after call call findpointcut execbefore call return execfirstinstr execafter return Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 17 31
18 Analyse Analyse des Zeitbedarfs fehlt Liste im Aspektmanager: vermutlich O(n) Keine Implementierung der Synchronisation bei der Codemanipulation vorgestellt Keine Mechanismen zur Änderung von Datenstrukturen Durchaus geeignet für kleinere Anpassungen und Bugfixes Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 18 31
19 Agenda Aspektorientierte Programmierung Dynamische aspektorientierte Programmierung Binärcodemanipulation Interpreterbasiert Quellcode-Instrumentierung Implementierungen Betriebssysteme Eingebettete Systeme Mehrfädige Anwendungssysteme Fazit Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 19 31
20 Rekonfiguration von eingebetteten Systemen Framework für ressourcensparende dynamische Rekonfigurierung Produktfamilie mit konfigurierbarem Funktionsumfang Gleichartige Implementierung von statischen und dynamischen Aspekten (AspectC++) Entscheidung ob ein Aspekt statisch oder dynamisch eingebunden wird beim Deployment treffen Plattformunabhängigkeit durch Quellcode-Instrumentierung Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 20 31
21 Instrumentationsaspekt Statischer Aspekt ruft den Runtime-Manager auf Dieser führt dynamische Aspekte aus Pro Join-Point ein eigener Runtime-Manager Ermöglicht konstanten Overhead Realisiert durch Templates Mächtige Expression-Sprache zur Definition von Pointcuts Reduziert den Overhead durch überflüssige Join-Points 1 aspect instrument { 2 pointcut virtual dynamicjps = call ("% std ::%(...) "); 3 public : 4 dynamicjps (): before (){ 5 ArgsJnPnt < JoinPoint :: ARGS > jp; 6 jp. joinpointname = JoinPoint :: signature (); 7 monitor < JoinPoint :: JPID >:: BeforeAdvice (& jp ); 8 } 9 }; Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 21 31
22 Dynamic AspectC++ Dynamische Aspekte werden zu Shared-Library übersetzt Zur Laufzeit beim Runtime-Manager registrieren Bei Ausführung nachladen Executable joinpoint RuntimeMonitor joinpoint RuntimeMonitor joinpoint RuntimeMonitor AdviceRegister AdviceRegister AdviceRegister list of before advices list of around advices list of after advices Dynamic Aspect Libraries compiler Instrumented Code (C++) Dynamic Aspects (C++) static weaver (AspectC++) compiler (dac++) Weaver- Binding Static Aspects Base Program Dynamic Aspects (AspectC++) Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 22 31
23 Analyse Effiziente Implementierung Konstanter Laufzeitoverhead 12 Byte zusätzlicher Speicher pro Join-Point Bei vielen Join-Points immer noch problematisch Ziel: Nachladen von Funktionalität z. B. Tracing-Aspekt zur Fehleridentifizierung Austausch von Funktionen prinzipiell auch möglich Gut in bestehende Systeme integrierbar Keine Voraussetzungen an das Design bestehender Anwendungen Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 23 31
24 Agenda Aspektorientierte Programmierung Dynamische aspektorientierte Programmierung Binärcodemanipulation Interpreterbasiert Quellcode-Instrumentierung Implementierungen Betriebssysteme Eingebettete Systeme Mehrfädige Anwendungssysteme Fazit Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 24 31
25 Rekonfiguration von mehrfädige Anwendungssystemen Framework zum Hinzufügen, Entfernen und Ändern von Komponenten Komponente: Klasse mit öffentlicher Schnittstelle Öffentliche Schnittstelle darf sich nicht ändern Meachanismus für den Zustandstransfer Unterstützung für mehrfädige Programme Implementierung für.net (LOOM.NET) Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 25 31
26 Rekonfigurationsaspekt Rekonfiguration durch Proxies Erzeugt mit dem Factory-Pattern Ergänzt Komponenten um Rekonfigurationsaspekt 1 public class ReconfAspect : Aspect, IConfigure { 2 private object target ; 3 private RWLock rwlock = new RWLock (); 5 [ Call ( Invoke. Instead )] 6 [ IncludeAll ] 7 public object Proxy ( object [] args ){ 8 rwlock. AcquireReaderLock ( -1); 9 if ( target == null ){ 10 return Context. invoke ( args ); 11 } else { 12 Context. InvokeOn ( target, args ); 13 } 14 rwlock. ReleaseLock (); 15 } } Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 26 31
27 Synchronisation der Rekonfigurierung Finden eines Rekonfigurationszeitpunktes durch Reader-Writer-Locks Methodenaufrufe sind Leser Rekonfiguration ist Schreiber Rekursive Locks verhindern Deadlocks 1 public class RekonfAspect : Aspect, IConfigure { public void ReplaceReference ( object target ){ 4 rwlock. AcquireWriterLock (); 5 this. target = target ; 6 rwlock. ReleaseWriterLock (); 7 } 8 } Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 27 31
28 Zustandstransfer Zustandstransfer zwischen alter und neuer Komponente Implementierung einer Export/Import-Funktion Objektgraph traversierender Algorithmus Rekursives Kopieren der Member-Variablen Ersetzen durch neue Versionen der Objekte Erkennen von Zyklen Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 28 31
29 Analyse Konstanter Zeitverbrauch ohne Rekonfiguration Dauer der Rekonfiguration von laufenden Anfragen abhängig Grobgranularer Austausch von Komponenten Striktes Komponentenmodell erforderlich Keine Referenzen auf interne Datenstrukturen nach außen geben Eigentlich keine dynamische AOP erforderlich Rekonfigurationsaspekt ist zur Compilezeit definiert Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 29 31
30 Agenda Aspektorientierte Programmierung Dynamische aspektorientierte Programmierung Binärcodemanipulation Interpreterbasiert Quellcode-Instrumentierung Implementierungen Betriebssysteme Eingebettete Systeme Mehrfädige Anwendungssysteme Fazit Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 30 31
31 Fazit Umfassende Möglichkeiten zur Rekonfiguration durch AOP Zum Teil reicht statische AOP bereits aus Jedes Konzept hat Vor- und Nachteile Betriebssysteme: Auch für komplexe Systeme im Nachhinein realisierbar AspectC++: ressourcenschonend LOOM.NET: Austausch von Komponenten Sowohl ressourcenschonende als auch mächtige Ansätze Noch keine einheitliche Lösung für alle Anwendungsfälle Gumbrecht AKSS / SS 2014 / Rekonfiguration durch dynamische AOP 31 31
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
MehrDynamisches Aspektweben in C und C++: DAO C++ und µdyner
Aspektorientierte Programmierung Dynamisches Aspektweben in C und C++: DAO C++ und µdyner Referent: André Zweschke Referent: André Zweschke 1 Inhalt 1. Motivation: Web-Caches 2. Dynamic Aspect Oriented
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
MehrProgrammierkurs. Steffen Müthing. January 18, Interdisciplinary Center for Scientific Computing, Heidelberg University
Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University January 18, 2019 Konzepte Standard-Konzepte für Code Reuse: Polymorphie/Vererbung Funktionalität
MehrCiAO (CiAO is Aspect-Oriented)
CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat Lehrstuhl für Informatik IV Verteilte Systeme und Betriebssysteme
MehrBehutsame Modernisierung
Software Evolution mit Legacy Systemen Forum Forschungsförderung / ViSEK Trends im Software Engineering Software Evolution mit Legacy Systemen Behutsame Modernisierung Jan Wloka
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
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
MehrAspektorientierte Programmierung
Aspektorientierte Programmierung Programmierparadigma AspectJ separation of concerns Modularisierung Aspekte kapseln Verhalten das mehrere Klassen betrifft Objektorientierte Programmiertechniken: Aspektorientiertheit,
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
MehrKonzepte von Betriebssystem-Komponenten. Programmstart & dynamische Bibliotheken SS 05. Wladislaw Eckhardt.
Proseminar KVBK Programmstart dynamische Bibliotheken Konzepte von Betriebssystem-Komponenten Programmstart & dynamische Bibliotheken SS 05 Wladislaw Eckhardt Wladi23@gmx.net 1 1 Einleitung 1.1 Problematik
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
Mehr! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
Mehr1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen
1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new
MehrPrinzipien der objektorientierten Programmierung (OOP)
Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm
MehrInstitut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält
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
MehrJaneva:.NET meets J2EE
Inhalt: Motivation Was ist Janeva? Systemvoraussetzungen Installation Beispiel Converter Fazit Motivation Motivation: Janeva testen einen Überblick verschaffen Lauffähiges Beispiel Entscheidungshilfe über
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default
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
MehrOOP. Tagesprogramm. Aspekte und Annotationen. Software-Entwurfsmuster. Factory-Method. Prototype
1 2017-01-11 Tagesprogramm Aspekte und Annotationen Software-Entwurfsmuster Factory-Method Prototype 2 2017-01-11 Aspekte und Annotationen Aspektorientierte Programmierung Paradigma der Modularisierung
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen Fortgeschr. Objektorientierung SS 2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. Snelting snelting@ipd.info.uni-karlsruhe.de
Mehr1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI
1 Motivation Motivation ierte Objektmodel Standard Middleware für objektorientierte Anwendungen CORBA,.NET-Remoting Java Remote Method Invocation (RMI) Java RMI ierte Objekte undjava RMI Zusammenfassung
MehrInformatik II Übung 5
Informatik II Übung 5 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 27.03.2013
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
MehrADT: Verkettete Listen
ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch int zaehler, nenner; public Bruch(int zaehler, int nenner) this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren
MehrPraxisorientierte Einführung in C++ Lektion: "Virtuelle Methoden"
Praxisorientierte Einführung in C++ Lektion: "Virtuelle Methoden" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ April 24, 2014
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
MehrALP II Dynamische Datenmengen
ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung
MehrObjektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
Mehr7. Verkettete Strukturen: Listen
7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):
MehrDA Abschlussvortrag. Grundlagen einer industrietauglichen AOP Lösung für C. Andreas Timm
DA Abschlussvortrag Grundlagen einer industrietauglichen AOP Lösung für C Andreas Timm Übersicht Motivation Herausforderungen Lösungsansätze Umsetzung Demonstration Performanz Resultat und Aussicht 2 Übersicht
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1
Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1
Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrMaschinencode Dateiformat und Stackframes
Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel julian.martin.kunkel@informatik.uni-hamburg.de Wissenschaftliches Rechnen Fachbereich Informatik
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Mehri 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 Die 5 Leben des AspectJ
Einleitung Die 5 Leben des AspectJ Markus Völter, voelter@acm.org, www.voelter.de Martin Lippert, lippert@acm.org, www.martinlippert.com Aspekte dienen dazu, querschnittliche Belange, sogenannte Cross-Cutting
MehrHeap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
MehrPraxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"
Praxisorientierte Einführung in C++ Lektion: "Die -Chain (Vom zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 19, 2012 Christof Elbrechter Praxisorientierte Einführung
MehrVorkurs Informatik WiSe 15/16
Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann
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
Mehr7 Laufzeit-Speicherverwaltung
7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.
MehrCS1005 Objektorientierte Programmierung
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Funktionen / statische Methoden - Definition - Verwendung - Ausführung Seite 1 Th Letschert Funktionen: Definition und Verwendung
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
MehrHinweise C-Programmierung
Hinweise C-Programmierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2016/2017 V. Sieh Hinweise C-Programmierung
MehrDelegaten. d. h. eine Tätigkeitsanforderung wird weitergeleitet
Einführung Delegaten delegate ist ein Objekt, das delegiert == weiterleitet d. h. eine Tätigkeitsanforderung wird weitergeleitet - Weiterleitung erfolgt an eine Funktion - diese Funktion(en) wurde dem
MehrDie abstrakte Klasse Expression:
Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die
MehrCS1005 Objektorientierte Programmierung
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Objektorientierung I : Statische Klassen Statische Aspekte (Modularisierung) Dynamische Aspekte (Klassen-Objekte) Seite 1 Th Letschert
MehrEinstieg in die Informatik mit Java
1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren
MehrMODULARITÄT. Levi Bautz. 1/19 Levi Bautz
MODULARITÄT Levi Bautz 1/19 Levi Bautz 21.06.2018 2/19 Levi Bautz MODULARITÄT Grundprinzip der Modularität Eigenschaften modularen Codes Module und Beispiele Zusammenfassung 3/19 Levi Bautz GRUNDPRINZIP
Mehr1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
MehrJava I Vorlesung 6 Referenz-Datentypen
Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:
MehrKlassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object
Smalltalk vs. Objective-C Klassen als Objekte Klassendeklarationen Selektoren als first-class values Objekt-Erzeugung Implementierung: Eigene VM vs. Einbettung in C Smalltalk: Everything is an object Klassen
MehrGrundlagen der OO- Programmierung in C#
Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3
MehrEntwicklung einer echtzeitfähigen CLI-Laufzeitumgebung für den Einsatz in der Automatisierungstechnik
Entwicklung einer echtzeitfähigen CLI-Laufzeitumgebung für den Einsatz in der Automatisierungstechnik Echtzeit 2010 Alexej Schepeljanski Martin Däumler Matthias Werner Echtzeit 2010 / 18. November 2010
MehrJava Idioms. Basic und Advanced Java Coding Style. Prof. Dr. Nikolaus Wulff
Java Idioms Basic und Advanced Java Coding Style Prof. Dr. Nikolaus Wulff Java Idiome Operator == versus equals Methode equals und hashcode Vermeide NullPointer Java Konstruktoren Function Pointers, Interfaces
MehrEinführung in die Programmiersprache Java II
Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
MehrCrashkurs C++ Wiederholung
Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i
MehrSoftware Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
MehrProgrammiermethodik 3. Klausur Lösung
Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung
MehrVorlesung Programmieren
Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von
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
MehrAufbau eines Kernelmoduls
Kernel Module Kernelmodul = ladbare/entfernbare Objektdatei (Dateisystem, Gerätetreiber, Systemeingriffe) Vorteile: Ressourcenverbrauch abhängig vom aktuellen Anforderungen Erweiterung der Kernelfunktionalität
MehrJava Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017
Informatik 1 für Nebenfachstudierende Grundmodul Java Methoden Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel 3 - Java
MehrInformatik II Übung 6
Informatik II Übung 6 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 11.4.2018 Carina Fuss 11.4.2018 1 Übung 6 Nachbesprechung Übung 5 Objektorientierung Vererbung, Polymorphie, abstrakte Klassen, Interfaces,
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
MehrProgrammieren in Java
Programmieren in Java Vorlesung 06: Das Visitor Pattern Prof. Dr. Peter Thiemann (vertreten durch Luminous Fennell) Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg)
Mehr1. Die rekursive Datenstruktur Liste
1. Die rekursive Datenstruktur Liste 1.4 Methoden der Datenstruktur Liste Die Warteschlange (Queue) ist ein Sonderfall der Datenstruktur Liste. Bei der Warteschlange werden Einfügen und Entfernen nach
MehrAOP 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
MehrADT: Verkettete Listen
ADT: Verkettete Listen Abstrakter typ - Definition public class Bruch{ int zaehler, nenner; public Bruch(int zaehler, int nenner) { this.zaehler = zaehler; this.nenner = nenner; Konstruktor zum Initialisieren
MehrHello World! Eine Einführung in das Programmieren Das erste Programm
Hello World! Eine Einführung in das Programmieren Das erste Programm Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Betriebssystem Funktion Anwendung Gerätesteuerung
MehrÜberblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen
Überblick Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Stubs & Skeletons Aufgabe 2 Tutorial: http://download.oracle.com/javase/tutorial/reflect/index.html
MehrÜberblick. Beispiel: get()-methodenaufruf am VSBoard aus Übungsaufgabe 1. Analyse einer Methode: java.lang.reflect.method
Überblick Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Stubs & Skeletons Aufgabe 2 Tutorial: http://docs.oracle.com/javase/tutorial/reflect/index.html
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
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
MehrII.1.1. Erste Schritte - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.
MehrVererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1
MehrEinleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders
Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 07: Nebenläufigkeit Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in die Nebenläufigkeit und Java Thread Konzept: Motivation
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)
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
MehrPolymorphismus 44. Function.hpp. #include <string>
Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
MehrExploit-Entwicklung mit Python
Penetration Testing III Bachelor in Computer Science (BCS) 6. Semester Exploit-Entwicklung mit Python von Daniel Baier und Demian Rosenkranz 1 / 20 Gliederung Grundlagen Sicherheitslücken Prozess- und
MehrWie teuer ist dynamischer Polymorphismus? 194
Wie teuer ist dynamischer Polymorphismus? 194 Function f vtable data RTTI ~Function get_name type name type info "Sinus\0" execute Nicht-polymorphe Methoden und reguläre Funktionen können in C++ direkt
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
MehrStatische und Nichtstatische Methoden Properties/ Eigenschaften
Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische
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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Mehr