Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Metamodell, Reflection in objektorientierten Sprachen Probevorlesung Friedrich Steimann.

Ähnliche Präsentationen


Präsentation zum Thema: "Metamodell, Reflection in objektorientierten Sprachen Probevorlesung Friedrich Steimann."—  Präsentation transkript:

1 Metamodell, Reflection in objektorientierten Sprachen Probevorlesung Friedrich Steimann

2 F Steimann Metamodell, Reflection in objektorientierten Sprachen Voraussetzungen Grundbegriffe der Objektorientierung Klasse, Beziehung, Subklasse, Verhalten etc. grundlegende Notationselemente der UML Klassendiagramm Grundlegende Programmierkenntnisse in Java

3 F Steimann Metamodell, Reflection in objektorientierten Sprachen Metamodell, Reflection in objektorientierten Sprachen

4 F Steimann Metamodell, Reflection in objektorientierten Sprachen Kontext: letzte Vorlesung Durchgängigkeit der Objektorientierung annähernd gleiche Konzepte in Analyse, Design (Modell) und Implementierung Modell Klasse Attribut Beziehung Verhalten Programm Klasse Instanzvariable (Feld) Instanzvariable (Feld) Array, Collection Methode

5 F Steimann Metamodell, Reflection in objektorientierten Sprachen Modell (Beispiel) Student Dozent Modul Teil belegt bietet an Universität

6 F Steimann Metamodell, Reflection in objektorientierten Sprachen Wechsel des Gegenstandsbereichs Notation der Modelle bleibt gleich andere Notation denkbar, ändert nichts an der Bedeutung wie sich auch Notation von Modellierung und Implementierung unterscheiden Sprachkonstrukte der Modellierungssprache vom Gegenstandsbereich unabhängig

7 F Steimann Metamodell, Reflection in objektorientierten Sprachen Modell (anderes Beispiel) StückAbsatz besetzt gehört zu Akt Szene Text RolleDarsteller Regieanweisung TheaterMaxx

8 F Steimann Metamodell, Reflection in objektorientierten Sprachen Wechsel der Ebene Modelle können selbst Gegenstand der Modellierung sein! Programme können selbst Gegenstand der Programmierung sein! Modellierung der Modellierung unter Verwendung derselben Sprachkonstrukte Programmierung der Programmierung unter Verwendung derselben Sprachkonstrukte

9 F Steimann Metamodell, Reflection in objektorientierten Sprachen Modell der objektorientierten Modellierung (Metamodell) Klasse Beziehung abstrakte Klasse konkrete Klasse Verhalten unendlicher Regress! Vererbung

10 F Steimann Metamodell, Reflection in objektorientierten Sprachen Modell des Modells der objektorientierten Modellierung MetaklasseBeziehung Vererbung Meta-Metamodell

11 F Steimann Metamodell, Reflection in objektorientierten Sprachen Modell des Modells des Modells der objektorientierten Modellierung KlasseBeziehung Entity-Relationship-Modell! Meta-Meta-Metamodell

12 F Steimann Metamodell, Reflection in objektorientierten Sprachen Metaprogramme Programme, die Programme als Ein- und/oder Ausgabe haben Compiler/Interpreter Refactoring-Werkzeuge Programme, die sich selbst als Ein- und/oder Ausgabe haben (Reflektion) selbstbewußter Code selbstmodifizierender Code Metaprogrammierung

13 F Steimann Metamodell, Reflection in objektorientierten Sprachen Stufen der Metaprogrammierung Typ-Introspektion C++ mit RTTI allgemeine Introspektion Java (häufig Reflektion genannt) Interzession oder Interzeption Lisp MOP, AspectJ (volle) Reflektion Maschinencode (!), Lisp, Prolog, Smalltalk

14 F Steimann Metamodell, Reflection in objektorientierten Sprachen Javas Reflection-API KlasseBeschreibung Object Methode getClass() Class Instanzen repräsentieren Klassen und Interfaces Constructor Aufruf von Konstruktoren variablen Typs Field Information über und Zugriff auf Felder variabler Typen Method Information über und Aufruf von Methoden variabler Typen Modifier Information über Access Modifier von Typen und deren Membern Array Erzeugung von und Zugriff auf Arrays variablen Typs

15 F Steimann Metamodell, Reflection in objektorientierten Sprachen Beispiel reflektive Programmierung Absatz absatz = …; if (absatz instanceof Regieanweisung) … … (Regieanweisung) absatz … public class Object { public final Class getClass() … } public final class Class extends Object … Constructor[] getConstructors() … Fields[] getFields() … Method[] getMethods() … } Typ-Introspektion allg. Introspektion

16 F Steimann Metamodell, Reflection in objektorientierten Sprachen Weitere einfache Beispiele …

17 F Steimann Metamodell, Reflection in objektorientierten Sprachen Beispiel Serialisierung class C { int a = 1; String b = "abc"; D d = new D(); void serializeOn(PrintStream aStream) { aStream.println("a"); aStream.println(a); aStream.println("b"); aStream.println(b); aStream.println("d"); d.serializeOn(aStream); } }

18 F Steimann Metamodell, Reflection in objektorientierten Sprachen Reflektive Serialisierung void serializeOn(PrintStream aStream) { Class myClass = getClass(); Field[] myFields = myClass.getFields(); for (Field field : myFields) { aStream.println(field.getName()); try { Object value = field.get(this); if (field.getType().isPrimitive() || value == null) aStream.println(value); else value.printFieldsOn(aStream); } catch (Exception e) {…} } }

19 F Steimann Metamodell, Reflection in objektorientierten Sprachen Weitere Beispiele …

20 F Steimann Metamodell, Reflection in objektorientierten Sprachen Einsatzmöglichkeiten der Metaprogrammierung Tracing, Logging, Security etc. Spracherweiterungen/-anpassungen Optimierung von Code dynamisch konfigurierte Systeme (very late binding), z. B. Web Services genetische Programmierung Künstliche Intelligenz

21 F Steimann Metamodell, Reflection in objektorientierten Sprachen Bewertung der Metaprogrammierung Vorteile: Ergänzung von Funktionalität zur Laufzeit kompaktere Programme Nachteile: schwer lesbar keine Übersetzungszeit, keine Fehlerprüfung Fazit: nur sehr kontrolliert einsetzen!

22 F Steimann Metamodell, Reflection in objektorientierten Sprachen Geschichtliches Russellsches Paradox Dieser Satz ist falsch. Antwort: Russelsche Typtheorie Trennung von Aussagen in Ebenen Aussagen nur über Aussagen niedrigerer Ebene Vorläufer heutiger Typsysteme Tarskis Untersuchungen über Wahrheit Trennung von Objekt- und Metasprache

23 F Steimann Metamodell, Reflection in objektorientierten Sprachen Literatur Abelson & Sussman Structure and Interpretation of Computer Programs Chapter 4: Metalinguistic Abstraction (http://mitpress.mit.edu/sicp/) Krüger, Stark Handbuch der Java-Programmierung Kapitel 43 und 44 (www.javabuch.de) historische Grundlagen Whitehead und Russel Principia Mathematica Vorwort und Einleitungen (1910) Tarski The semantic conception of truth Philosophy and Phenomenological Research 4 (1944)


Herunterladen ppt "Metamodell, Reflection in objektorientierten Sprachen Probevorlesung Friedrich Steimann."

Ähnliche Präsentationen


Google-Anzeigen