3.2 Translation of Object-Oriented Language Constructs

Größe: px
Ab Seite anzeigen:

Download "3.2 Translation of Object-Oriented Language Constructs"

Transkript

1 Content of Lecture Compilers and Language Processing Tools Summer Term 2011 Prof. Dr. Arnd Poetzsch-Heffter Software Technology Group TU Kaiserslautern c Prof. Dr. Arnd Poetzsch-Heffter 1 1. Introduction 2. Syntax and Type Analysis 2.1 Lexical Analysis 2.2 Context-Free Syntax Analysis 2.3 Context-Dependent Analysis 3. Translation to Target Language 3.1 Translation of Imperative Language Constructs Selected Aspects of Compilers 4.1 Intermediate Languages 4.2 Optimization 4.3 Data Flow Analysis 4.4 Register Allocation 4.5 Code Generation 5. Garbage Collection 6. XML Processing (DOM, SAX, XSLT) c Prof. Dr. Arnd Poetzsch-Heffter 2 Section Outline 3.2 Translation of Object-Oriented Language Constructs c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 3 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language Concepts of Object-Oriented Programming Languages c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 5 Example: Object-Oriented Language Concepts Beispiel: (objektorientierte Sprachkonzepte) class Person { String name; Person( String n, int gd ) { name = n; gebdatum = gd; public void drucken() { System.out.println("Name:"+ this.name); System.out.println("Geb:"+ this.gebdatum); boolean hat_geburtstag ( int datum ) { return (this.gebdatum%10000) == (datum%10000); class Student extends Person { int matrikelnr; int semester; c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 7 Student(String n,int gd,int mnr,int sem) { super( n, gd ); matrikelnr = mnr; Beispiel: (objektorientierte Sprachkonzepte) We consider a class-based language and use Java as an example. class Person { Important String Concepts: name; Classes int and gebdatum; Object Creation /* in der Form JJJJMMTT */ Encapsulation Person( String n, int gd ) { Subtyping name and = n; Inheritance Dynamic gebdatum Method = Binding gd; public void drucken() { System.out.println("Name:"+ this.name); System.out.println("Geb:"+ this.gebdatum); boolean hat_geburtstag ( int datum ) { return (this.gebdatum%10000) == Concepts of Object-Oriented (datum%10000); Programming Languages c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 6 Example: Object-Oriented Language Concepts (2) class Student extends Person { int matrikelnr; int semester; Student(String n,int gd,int mnr,int sem) { super( n, gd ); matrikelnr = mnr; semester = sem; public void drucken() { super.drucken(); System.out.println( "Mnr:"+ matrikelnr); System.out.println( "Sem:" + semester); A. Poetzsch-Heffter, TU Kaiserslautern 254 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 8

2 Example: Object-Oriented Language Concepts (3) class Test { public static void main( String[] argv ) { int i; Person[] pf = new Person[3]; pf[0] = new Person( "Meyer", ); pf[1] = new Student("M\"uller", ,758475,5); pf[2] = new Student("Planck", , ,47); for( i = 0; i<3; i = i+1 ) { pf[i].drucken(); Das Beispiel zeigt Klassen, Objekterzeugung, The Vererbung example demonstrates (mit Subtyping classes, und object Spezialisierung) creation, inheritance sowie (with subtyping and specialization) and dynamic method binding. dynamisches Binden von Methoden. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language Umsetzung mit prozeduralen Sprachen Anhand des obigen Beispiels erläutern wir die Translation grundlegenden Schemes: Übersetzungsschemata: Klassen, Classes, Klassentypen class types record! Verbundtypen, types, pointer types Zeigertypen Object creation Allocation of dynamic variables/objects Objekterzeugung! Allokation dyn. Variablen/Objekte Methods, constructors procedures Methoden, Dynamic binding Konstruktoren Use of procedure! Prozeduren pointers with selection of record components dyn. Bindung! Verwendung von Prozedurzeigern We illustrate these schemes at the above example. The considered mit Selektion von Verbundkomponenten target language is C. Als Übersetzung Zielsprache verwenden der Typen wir und hier Methoden: C. Basisdatentypen von Java! Basisdatentypen von z.b. int A. Poetzsch-Heffter, nach TU int Kaiserslautern 255 boolean nach int ( typedef int boolean; ) c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 11 Implementation Referenztypen von of Example Java! Zeigertypen in C von C z.b. String nach String* Person nach Person* wobei String und Person in C geeignete Verbundtypen Fields sind. arewir realized betrachten by record die types: Implementierung von Person: typedef struct sperson Person; struct sperson { String* name; void (*drucken)( Person* ); boolean (*hat_geburtstag)( Person*, int ); ; Methoden werden als Prozeduren realisiert: void Person_drucken( Person* this ) { printf("name:%s\n", this->name ); printf("geb:%d\n",this->gebdatum); c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 13 Implementation boolean Person_hat_geburtstag of Example in C (3) (Person* this,int datum){ return (this->gebdatum%10000)==(datum%10000); Constructors are realized as procedures: Konstruktoren werden als Prozeduren realisiert: A. Poetzsch-Heffter, TU Kaiserslautern 256 Person* PersonK( String* n, int gd ) { Person* this = (Person*) malloc( sizeof(person) ); this->name = n; this->gebdatum = gd; this->drucken = Person_drucken; this->hat_geburtstag = Person_hat_geburtstag; Übersetzung von Vererbung/Spezialisierung: Bzgl. der Verbundkomponenten wird Vererbung im Wesentlichen durch Duplikation realisiert: c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 15 typedef struct sstudent Student; struct sstudent { String* name; c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 10 Translation of Types and Methods Basis Übersetzung data types of der Java Typen basis und data Methoden: types of C, for example: Basisdatentypen int int von Java! Basisdatentypen von boolean int z.b. int nach int (typedef int boolean;) boolean nach int Reference types of Java pointer types of C, for example: ( typedef int boolean; ) String String* Referenztypen Person Person* von Java! Zeigertypen von C where String z.b. andstring Person are nach record types String* C. Person nach Person* wobei String und Person in C geeignete Verbundtypen sind. Wir betrachten die Implementierung von Person: typedef struct sperson Person; struct sperson { String* name; c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 12 Implementation void (*drucken)( of Example Person* in C (2) ); boolean (*hat_geburtstag)( Person*, int ); ; Methods Methoden are realized werden by procedures: als Prozeduren realisiert: void Person_drucken( Person* this ) { printf("name:%s\n", this->name ); printf("geb:%d\n",this->gebdatum); boolean Person_hat_geburtstag Konstruktoren werden als Prozeduren (Person* this,int realisiert: datum){ return (this->gebdatum%10000)==(datum%10000); Person* PersonK( String* n, int gd ) { Person* this = (Person*) malloc( sizeof(person) ); A. Poetzsch-Heffter, TU Kaiserslautern 256 this->name = n; this->gebdatum = gd; this->drucken = Person_drucken; this->hat_geburtstag = Person_hat_geburtstag; c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 14 Translation of Inheritance and Specialization Übersetzung von Vererbung/Spezialisierung: Inheritance Bzgl. with der respect Verbundkomponenten to record components wird Vererbung is realized by duplication: im Wesentlichen durch Duplikation realisiert: typedef struct sstudent Student; struct sstudent { String* name; void (*drucken)( Student* ); boolean (*hat_geburtstag)( Student*, int ); int matrikelnr; int semester; ; Type conversions Zu beachten ist die notwendige Typanpassung beim impliziten it Argument for implicit in arguments der Unterklasse. of subclass are necessary. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language A. Poetzsch-Heffter, TU Kaiserslautern 257

3 Translation of Inheritance and Specialization (2) Bzgl. der Methoden lässt sich Vererbung ohne InheritanceCodeduplikation with respect to umsetzen; methods die can Methoden be realized der without code duplication. Oberklasse Methods lassen of superclass sich nach can geeigneter be reused after appropriate type conversion. Typkonvertierung unverändert verwenden: Student* StudentK (String* n,int gd,int mnr,int sem ) { Student* this = (Student*) malloc(sizeof(student)); this->name = n; this->gebdatum = gd; this->matrikelnr = mnr; this->semester = sem; this->drucken = Student_drucken; this->hat_geburtstag = (boolean(*)(student*,int)) Person_hat_geburtstag; this->semester = sem; this->drucken = Student_drucken; this->hat_geburtstag = (boolean(*)(student*,int)) Person_hat_geburtstag; Translation of Inheritance and Specialization (3) Spezialisierung wird durch zusätzliche Attribute (s.o.) Specialization und neue is realized Prozeduren by additional realisiert, attributes die and ggf. procedures die that may call überschriebenen overridden methods: Methoden aufrufen: void Student_drucken( Student* this ) { Person_drucken( (Person*)this ); printf("mnr:%d\n", this->matrikelnr ); printf("sem:%d\n", this->semester ); A. Poetzsch-Heffter, TU Kaiserslautern 258 Spezialisierung wird durch zusätzliche Attribute (s.o.) und neue Prozeduren realisiert, die ggf. die überschriebenen Methoden aufrufen: c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 17 Translation of Object Creation & Method Invocation void Übersetzung Student_drucken( von Objekterzeugung Student* this und ) { Person_drucken( (Person*)this ); Methodenaufruf: printf("mnr:%d\n", this->matrikelnr ); printf("sem:%d\n", this->semester ); Object creation Objekterzeugung corresponds entspricht to call einem of the Konstruktoraufruf ; constructor. Method invocation Methodenaufruf is realized wird durch byselektion selection und and call of method belonging Aufruf to the der object zum Objekt gehörenden Methode realisiert. A. Poetzsch-Heffter, TU Kaiserslautern 258 void main( String* argv[] ) { int i; Person* pf[3]; pf[0] = PersonK( "Meyer", ); pf[1] = (Person*) StudentK("M\"uller", ,758475,5); pf[2] = (Person*) StudentK("Planck", , ,47); for( i = 0; i<3; i = i+1 ) { pf[i]->drucken( pf[i] ); c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 18 Translation of Object Creation & Method Invocation (2) Note the duplicate reference to the target object in a "method call". Dynamic binding is realized by usage of procedure pointers. Remarks: Record components are not "inherited" and have to be re-listed for each subclass. No usage of superclass constructor Explicit type conversion necessary Direct pointers to methods of an object use needlessly much memory. Dynamic binding only requires dereferencing which is almost as efficient as an ordinary procedure call. Zu beachten ist die doppelte Angabe des Zielobjekts beim Methodenaufruf. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 19 Dynamische Bindung wird also durch Verwendung von Prozedurzeigern erreicht. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language A. Poetzsch-Heffter, TU Kaiserslautern Classes declare: attributes (in Java: fields) constructors methods In the following, we consider a language that supports only single inheritance (cf. Java), i.e., each class (except Object) has exactly one superclass. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 21 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 22 Object Layout Object Layout (2) Objects are handled as memory areas on the heap: Each object of class C gets a variable (object state) for each inherited and for each attribute declared in C. Additionally, it gets a variable for referring to information about the class and its methods. As object identity, often the start address of the memory area is used (or another appropriate address). Example: Beispiel: (Objektlayout) private int a2; Object Objektreferenz Reference class: a2: Klassen- Class and & Methoden- Information zu for Klasse Class A As for records, attribute instances/instance variables are addressed by a relative address (offset) with respect to the object reference. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 23 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 24

4 Object Layout (3) Object Layout (4) The size of the instance variables depends on their type. In Java, int and float variables require 4 bytes, long and double variables require 8 bytes. private int a2;... class B extends A { int b;... Klassen- Class and & Methoden- Information zu for Klasse Class C class C extends B { int c; Object Objektreferenz Reference class: a2: b: c: c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 25 Object Layout (5) The ordering of attribute instances is important to allow for subtyping: Each subclass object can be placed in all positions where a superclass object is expected. Thus, the attribute instances of the superclass have to have the same relative addresses in all sub- and superclass objects. Remarks: Bemerkungen: In the above example, Im obigen we have Beispiel not haben considered wir Attributinstanzen attribute instances der of the class Object. Klasse Object vernachlässigt Private attribute instances Private Attributinstanzen of superclasses von Oberklassen have to bemüssen present in all instances of subclasses: auch in Instanzen von Unterklassen vorhanden sein: private int a2; int m() { return a2; class B extends A { int b; int n() { return m(); Zur Klassen- und Methodeninformation siehe unten. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 26 Die Reihenfolge der Attributinstanzen ist wichtig, um Subtyping zu Translation ermöglichen: of Classes Jedes Unterklassen-Objekt muss überall dort eingesetzt werden können, wo ein Oberklassen- Objekt erwartet wird. Example: Access to Subclass Objects A avar = new B();... a.avar.a2... Deshalb müssen die Attributinstanzen der Oberklasse in Ober- und Unterklasse-Objekten die gleiche Relativadresse besitzen A. Poetzsch-Heffter, TU Kaiserslautern 263 The relative address of a2 has to be independent of the dynamic type of avar. The dynamic type of a reference-typed expression E in a state S is the type of the object that is obtained by evaluating E in the state S. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 27 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 28 Alternative Object Layout Alternative Object Layout (2) In some cases, also an object descriptor is used. Here, the example of a C object: Objektreferenz Object Reference Deskriptor Descriptor class: Klassen- Class and & Methoden- Information zu for Klasse Class C a2: b: c: Remarks: Pros: all object descriptors have the same memory requirements memory block for instance variables can be more easily moved (simplifies for instance garbage collection) Cons: more memory per object additional dereferencing step for accessing instance variables c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 29 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 30 Class Information Example: Introspection in Java The content (and the extend) of the class information depends on the language. Three typical examples: Class information is not provided at runtime. Class information contains all information required for dynamic type conversion : A avar = new b(); B bvar = (B) avar; Class information is represented by an object that allows introspection (requesting class information at runtime) and reflection (modifying the program at runtime). Java supports introspection by using objects of the class Class. For each type in a Java program, there exists one object of the class Class. The class Class contains amongst others: the static method forname the instance method getname c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 31 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 32

5 Beispiel: (Introspektion in Java) Java unterstützt Introspektion mittels Objekten der Klasse Class. Für jeden Typ eines Java-Programms gibt es ein Objekt der Klasse Class. Die Klasse Class Translation of Object-Oriented besitzt Language unter Constructs anderem: die statische Methode forname die Instanzmethode getmethod Example: Introspection in Java (2) import java.lang.reflect.*; Realization of Methods public class Inspektor { public static void main(string[] ss) { try{ Class klasse = Class.forName( ss[0] ); Method[] methoden = klasse.getmethods(); for( int i = 0; i < methoden.length; i++ ){ Method m = methoden[i]; Class rettype = m.getreturntype(); String methname = m.getname(); Class[] partypes = m.getparametertypes(); System.out.print(retType.getName() t ett pe + " " + methname+"(" ); for( int j = 0; j < partypes.length; j++ ){ if( j > 0 ) System.out.print(", "); System.out.print( partypes[j].getname() ); System.out.println( ");" ); catch( ClassNotFoundException e ) { System.out.println("Klasse "+ ss[0]+" fehlt"); Method information allows accessing methods belonging to an object: It provides the data structure for realization of dynamic binding. In class-based languages, all objects of a class have the same methods; thus, method information of all objects of a class can be stored together. (more memory-efficient compared to realization by procedures) A. Poetzsch-Heffter, TU Kaiserslautern 266 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 33 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 34 Virtual Method Table Virtual Method Table (2) Classically, method information is stored in a virtual method/functions table. (For simplicity, class information is not shown) Alle all A-Objekte objects Es existiert int a2; also für jede Klasse teilen genau share sich mtab eine mtab Methodentabelle. int m() {... Der Zeiger auf die Methoden- tabelle int wird n( int vom i Konstruktor ) {... gesetzt. Die Methodentabelle enthält Zeiger auf die A::m Object Objektreferenz Reference Methodenimplementierungen. A::n mtab: Die Technik ermöglicht Subtyping, da die Relativ- adressen von Oberklasse-Methoden so gewählt a2: werden können, dass sie in Ober- und Unterklasse gleich sind. Die Technik ermöglicht Überschreiben durch Ausstausch des entsprechenden Eintrags (s. Beispiel) c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 35 Method Overriding Beispiel: (Überschreiben von Methoden) mtab: int a2; int m() {... int n( int i ){... a2: class B extends A { int b; mtab: int m() {... void p() {... a2: b: A::m A::n B::m A::n B::p For each class, there exists exactly one method table. The pointer to the method table is set by the constructor. The method table contains pointers to the method implementations. This technique allows for subtyping, as the relative address of the subclass methods can be chosen such that there are the same addresses in super- and subclasses. It further allows method overriding by changing the according method entry. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 36 Method Overriding (2) Adressierung einer Methode jeweils indirekt über Methodentabelle und Relativadresse: A method is addressed indirectly by the method table and the relative address: A avar = new A();... avar.m()... // M[avar.mtab]+RA(m)! A::m... avar.n(7)... // M[avar.mtab]+RA(n)! A::n A avar = new B();... avar.m()... // M[avar.mtab]+RA(m)! B::m... avar.n(7)... // M[avar.mtab]+RA(n)! A::n A. Poetzsch-Heffter, TU Kaiserslautern 268 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 37 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 38 Method Overriding (3) Realization Wie bei den ofinstanzvariablen Constructors gewährleistet die richtige Reihenfolge der Einträge in der Methodentabelle, dass auf ein Unterklassen-Objekt wie auf ein Oberklassen-Objekt zugegriffen werden kann. As for instance variables, the correct ordering of the entries in the method table allows that a subclass object can be accessed in the same way as a superclass object. Overriding methods are selected automatically, if applicable. Constructors Dabei werden are realized automatisch by procedures. überschreibende Source language Methoden semantics typically ausgewählt, requires the sofern following vorhanden. for object of class C: Allocation of memory of the new C object Recursive calls of the superclass constructors Execution of the called constructor of C Potentially: class loading, initialisation of variables A. Poetzsch-Heffter, TU Kaiserslautern 269 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 39 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 40

6 Multiple Inheritance The translation technique considered so far can only be used for languages with single inheritance. In this section, we sketch the concept of multiple inheritance the problems associated with multiple inheritance Multiple inheritance exists, for instance, in C++ or Eiffel. With multiple inheritance, a class can inherit from several classes. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 41 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 42 Multiple Inheritance (2) Example: Beispiel: (Mehrfachvererbung) In folgendem Klassendiagramm erbt E mehrfach: Difficulties of Multiple Inheritance B k1 k2 C k5 A k3 k4 D k2 k3 Does E inherit the attributes of A twice, i.e., does it contain two copies of each component? (only relevant for attributes) How are name conflicts resolved? (E inherits two components with name k2.) How can E objects be realized such that they can be used as A, B, C or D objects in the same way? E k6 Problematik: Soll E die Attribute von A doppelt erben, d.h. von jeder Komponente zwei Kopien besitzen? (nur relevant im Zusammenhang mit Attributen) c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 43 Difficulties of Multiple Inheritance (2) Wie sollen Namenskonflikte aufgelöst werden? ( E erbt zwei Komponenten mit Namen k2) Assuming, E inherits Mit welchen twicetechniken from A, können an object E-Objekte contains so realisiert the following Unter der Annahme, dass E von A doppelt erbt, components: besitzt werden, ein E-Objekt dass sie auch die als folgenden A-, B-, C- Komponenten: und D-Objekte auftreten können? A B C D E A. Poetzsch-Heffter, TU Kaiserslautern 271 B::k1 B::k2 A::k3 A::k4 C::k5 A::k3 A::k4 D::k2 D::k3 E::k6 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 44 Difficulties of Multiple Inheritance (3) With the above object layout, E can be used directly as a B object or as a C object, but not as an A or D object. Solutions: Implicit type conversion with modification of the reference into the memory area (Drawback: potentially, problem with object identity) Addressing with class-specific, global relative addresses (cf. Appel) (Drawback: non-modular, complete program has to be known) Mit obigem Komponentenlayout kann ein E-Objekt direkt als B- und C-Objekt Further verwendet Aspects of Object-Oriented werden, Languages nicht aber als A- oder D-Objekt. c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 45 Lösungsansätze: 1. Implizite Typkonvertierung mit Veränderung der Referenz in den Speicherbereich. (Nachteil: ggf. Problem bei Objektidentität) 2. Adressierung mit klassenspezifischen, global verwendbaren Relativadressen (s. Appel). (Nachteil: nicht modular, gesamtes Programm muss bekannt sein) A. Poetzsch-Heffter, TU Kaiserslautern 272 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 46 Static methods Nested classes Virtual classes Encapsulation aspects Dynamic Loading Reflection c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 47 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 48

7 geschachtelte Klassen virtuelle Klassen Kapselungsaspekte dynamisches Laden Reflexion Example: Local Classes Beispiel: (Lokale Klassen) class Outer { Outer w( int j ) { int i = 2; class Local extends Outer { Outer w( int jj ) { System.out.println("i == " +i); System.out.println("j == " +j); System.out.println("j == " + j ); return new Local(); A. Poetzsch-Heffter, TU Kaiserslautern 273 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 49 Literature Example: Local Classes (2) public class LocalClassTest { static public void main(string[] args){ Outer ov = new Outer(); ov.w( 5 ).w( 7 ); ov.w( 7 ).w( 9 ); Gibt es Fehler? Questions: Was ist die Ausgabe und warum? Are there errors? What is the output and why? Lesen Sie zu Abschnitt 3.2: c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 50 Wilhelm, Maurer: Abschnitt 5.2 und Anfang von 5.3 (S ) 195) Appel: Sections , S Recommended Reading: Wilhelm, Maurer: Sect. 5.2 and 5.3. (pp ) Appel: Sect , (pp ) A. Poetzsch-Heffter, TU Kaiserslautern 274 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 51 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 52 A Simple Compiler - The Structure Tools for Compiler Realization Input File (source code) token stream (abstract) syntax tree Scanner Parser Name & Type Analysis Translator Code Generator Output File (target code) attributed (abstract) syntax tree (SL) abstract syntax tree (TL) Scanner: JFlex Parser: ANTLR, JavaCup Abstract Syntax and Attribution for Name and Type Analysis and Translation/Code Generation: Katja c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 53 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 54 Scanner Specification - MiniJava in JFlex Parser Specification - MiniJava in JavaCUP DIGIT = [0-9] LETTER = [a-za-z] %% [ \t\n\r]* { "//" [^\r\n]* (\n \r \r\n) { "/*" [^*] ~"*/" { "class" { return symbol(tokentype.class); "void" { return symbol(tokentype.void); "static" { return symbol(tokentype.static); "int" { return symbol(tokentype.int); "boolean" { return symbol(tokentype.boolean); "return" { return symbol(tokentype.return); "if" { return symbol(tokentype.if); "else" { return symbol(tokentype.else); "while" { return symbol(tokentype.while); c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 55 Statement ::= Block:b {: RESULT = b; : IF:s ParExpression:e Statement:stm {: RESULT = If(sleft, sright, e, stm, Block(-1,-1)); : IF:s ParExpression:e Statement:stm ELSE Statement:estm {: RESULT = If(sleft, sright, e, stm, estm); : WHILE:s ParExpression:e Statement:body {: RESULT = While(sleft, sright, e, body); : RETURN:s Expression:e SEMI {: RESULT = Return(sleft, sright, e); : RETURN:s SEMI {: RESULT = VoidReturn(sleft, sright); : SEMI:s {: RESULT = Block(sleft, sright); : ExpressionStatement:e {: RESULT = e; : ; c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 56

8 Katja Specification for MiniJava Abstract Syntax Implementation of Name Analysis using Katja Statement = Block ( Integer line, Integer column, BlockStatements body ) If ( Integer line, Integer column, Expression cond, Statement thenstmt, Statement elsestmt ) While ( Integer line, Integer column, Expression cond, Statement body ) Return ( Integer line, Integer column, Expression retvalue ) VoidReturn ( Integer line, Integer column ) Assignment ( Integer line, Integer column, Expression left, Expression right ) Expression public static DeclarationPos lookupin final ScopePos scope, final IdentifierPos id) throws CantFind { DeclarationPos result; if (scope == null) throw new CantFind(id); // search in cache if we already made that lookup result = scope.switch(new ScopePos.Switch<DeclarationPos, NE>() { public DeclarationPos CaseBlockStatementsPos (final BlockStatementsPos term) throws NE { c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 57 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 58 Implementation of Name Analysis using Katja (2) Implementation of Name Analysis using Katja (3) public DeclarationPos CaseMethodDeclPos(final MethodDeclPos term) throws NE { for (FormalParameterPos param : term.params()) { if (nameequals(param.ident(), id)) return param; return null; // did not find declaration of id public DeclarationPos CaseClassBodyDeclsPos (final ClassBodyDeclsPos term) throws NE { public DeclarationPos CaseTypeDeclsPos(final TypeDeclsPos term) throws NE { for (TypeDeclPos typedeclpos : term) { if (nameequals(typedeclpos.ident(), id)) return (ClassDeclPos) typedeclpos; return null; // did not find declaration of id ); return result; c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 59 c Prof. Dr. Arnd Poetzsch-Heffter Translation to Target Language 60

2.2 Übersetzung objektorientierter Sprachkonstrukte

2.2 Übersetzung objektorientierter Sprachkonstrukte 2.2 Übersetzung objektorientierter Sprachkonstrukte Vorgehen: Sprachmittel objektorientierter Programmiersprachen Übersetzung anhand eines Beispiels Übersetzung von Klassen bei Einfachvererbung Problematik

Mehr

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Java Tools JDK. IDEs.  Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation Java Tools JDK http://www.oracle.com/technetwork/java/javase/ Downloads IDEs Java SE 8 Java SE 8 Documentation Eclipse http://www.eclipse.org IntelliJ http://www.jetbrains.com/idea/ NetBeans https://netbeans.org/

Mehr

Magic Figures. We note that in the example magic square the numbers 1 9 are used. All three rows (columns) have equal sum, called the magic number.

Magic Figures. We note that in the example magic square the numbers 1 9 are used. All three rows (columns) have equal sum, called the magic number. Magic Figures Introduction: This lesson builds on ideas from Magic Squares. Students are introduced to a wider collection of Magic Figures and consider constraints on the Magic Number associated with such

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Vererbung Vererbung im Fall von Klassen Klassen unterstützen (nur) einfache Vererbung (engl. single inheritance ) Die Klasse object ist die allen gemeine Oberklasse (Hierarchie mit einer einzigen Wurzel)

Mehr

Weather forecast in Accra

Weather forecast in Accra Weather forecast in Accra Thursday Friday Saturday Sunday 30 C 31 C 29 C 28 C f = 9 5 c + 32 Temperature in Fahrenheit Temperature in Celsius 2 Converting Celsius to Fahrenheit f = 9 5 c + 32 tempc = 21

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

Mehr

Finite Difference Method (FDM)

Finite Difference Method (FDM) Finite Difference Method (FDM) home/lehre/vl-mhs-1-e/folien/vorlesung/2a_fdm/cover_sheet.tex page 1 of 15. p.1/15 Table of contents 1. Problem 2. Governing Equation 3. Finite Difference-Approximation 4.

Mehr

Beispiel: (Vererbung) Vererbung. Begriffsklärung: (Vererbung) Feststellungen: Vererben von Attributen: Hinzufügen von Attributen:

Beispiel: (Vererbung) Vererbung. Begriffsklärung: (Vererbung) Feststellungen: Vererben von Attributen: Hinzufügen von Attributen: 5.3.3 Vererbung Begriffsklärung: (Vererbung) Vererbung (engl. inheritance) im engeren Sinne bedeutet, dass eine Klasse Programmteile von einer anderen übernimmt. Die erbende Klasse heißt Subklasse, die

Mehr

Accelerating Information Technology Innovation

Accelerating Information Technology Innovation Accelerating Information Technology Innovation http://aiti.mit.edu Ghana Summer 2011 Lecture 05 Functions Weather forecast in Accra Thursday Friday Saturday Sunday 30 C 31 C 29 C 28 C f = 9 5 c + 32 Temperature

Mehr

OOSE 2 Vererbung und Polymorphie mit BlueJ & CRC Kartenmethode (Hörsaalübung)

OOSE 2 Vererbung und Polymorphie mit BlueJ & CRC Kartenmethode (Hörsaalübung) OOSE 2 Vererbung und Polymorphie mit BlueJ & CRC Kartenmethode (Hörsaalübung) SS 2015 Birgit Demuth SS 2015 Softwaretechnologie / OOSE 2 BlueJ: Vererbung (1) Erweiterung von HelloLibrary (U02) SS 2015

Mehr

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL USER GUIDE June 2016

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL USER GUIDE June 2016 Overview The Hamburg Süd VGM Web portal is an application that enables you to submit VGM information directly to Hamburg Süd via our e-portal Web page. You can choose to enter VGM information directly,

Mehr

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

Mehr

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL - USER GUIDE June 2016

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL - USER GUIDE June 2016 Overview The Hamburg Süd VGM-Portal is an application which enables to submit VGM information directly to Hamburg Süd via our e-portal web page. You can choose to insert VGM information directly, or download

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots. falls Zeit: Scheduling 8.11.

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots. falls Zeit: Scheduling 8.11. IT I: Heute Nachbetrachtung Wissensüberprüfungen Einführung Vererbung Roboter in becker.robots falls Zeit: Scheduling 8.11.2016 IT I - VO 5 1 Organisatorisches VO nächste Woche im Peter-Tunner-HS! Tutorium

Mehr

Ressourcenmanagement in Netzwerken SS06 Vorl. 12,

Ressourcenmanagement in Netzwerken SS06 Vorl. 12, Ressourcenmanagement in Netzwerken SS06 Vorl. 12, 30.6.06 Friedhelm Meyer auf der Heide Name hinzufügen 1 Prüfungstermine Dienstag, 18.7. Montag, 21. 8. und Freitag, 22.9. Bitte melden sie sich bis zum

Mehr

Data Structures and Algorithm Design

Data Structures and Algorithm Design - University of Applied Sciences - Data Structures and Algorithm Design - CSCI 340 - Friedhelm Seutter Institut für Angewandte Informatik Contents 1 Analyzing Algorithms and Problems 2 Data Abstraction

Mehr

Informatik - Übungsstunde

Informatik - Übungsstunde Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 08-25.04.2018 Lernziele const: Reference const: Pointer vector: iterator using Jonas Lauener (ETH Zürich) Informatik

Mehr

J RG IMMENDORFF STANDORT F R KRITIK MALEREI UND INSPIRATION ERSCHEINT ZUR AUSSTELLUNG IM MUSEUM LU

J RG IMMENDORFF STANDORT F R KRITIK MALEREI UND INSPIRATION ERSCHEINT ZUR AUSSTELLUNG IM MUSEUM LU J RG IMMENDORFF STANDORT F R KRITIK MALEREI UND INSPIRATION ERSCHEINT ZUR AUSSTELLUNG IM MUSEUM LU 8 Feb, 2016 JRISFRKMUIEZAIMLAPOM-PDF33-0 File 4,455 KB 96 Page If you want to possess a one-stop search

Mehr

Informatik - Übungsstunde

Informatik - Übungsstunde Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 12-23.05.2018 Lernziele Klassen Dynamic Memory Jonas Lauener (ETH Zürich) Informatik - Übung Woche 12 2 / 20 Structs

Mehr

IT I: Heute. Nachbetrachtung Wissensüberprüfung. Einführung Vererbung. Roboter in becker.robots. Filialenbelieferung 4.11.

IT I: Heute. Nachbetrachtung Wissensüberprüfung. Einführung Vererbung. Roboter in becker.robots. Filialenbelieferung 4.11. IT I: Heute Nachbetrachtung Wissensüberprüfung Einführung Vererbung Roboter in becker.robots Filialenbelieferung 4.11.2014 IT I - VO 4 1 Organisatorisches Tutorium am Mi, 12.11. schon um 11 Uhr (bis 12:30).

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

STRATEGISCHES BETEILIGUNGSCONTROLLING BEI KOMMUNALEN UNTERNEHMEN DER FFENTLICHE ZWECK ALS RICHTSCHNUR FR EIN ZIELGERICHTETE

STRATEGISCHES BETEILIGUNGSCONTROLLING BEI KOMMUNALEN UNTERNEHMEN DER FFENTLICHE ZWECK ALS RICHTSCHNUR FR EIN ZIELGERICHTETE BETEILIGUNGSCONTROLLING BEI KOMMUNALEN UNTERNEHMEN DER FFENTLICHE ZWECK ALS RICHTSCHNUR FR EIN ZIELGERICHTETE PDF-SBBKUDFZARFEZ41-APOM3 123 Page File Size 5,348 KB 3 Feb, 2002 TABLE OF CONTENT Introduction

Mehr

H.1 FORMI: An RMI Extension for Adaptive Applications H.1 FORMI: An RMI Extension for Adaptive Applications

H.1 FORMI: An RMI Extension for Adaptive Applications H.1 FORMI: An RMI Extension for Adaptive Applications Motivation The ed-object Approach Java RMI ed Objects in Java RMI Conclusions Universität Erlangen-Nürnberg Informatik 4, 2007 H-Formi-.fm 2007-12-14 13.11 H.1 1 Motivation Distributed object-oriented

Mehr

Algorithms for graph visualization

Algorithms for graph visualization Algorithms for graph visualization Project - Orthogonal Grid Layout with Small Area W INTER SEMESTER 2013/2014 Martin No llenburg KIT Universita t des Landes Baden-Wu rttemberg und nationales Forschungszentrum

Mehr

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB Read Online and Download Ebook PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB DOWNLOAD EBOOK : PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: Click link bellow

Mehr

Level 1 German, 2014

Level 1 German, 2014 90886 908860 1SUPERVISOR S Level 1 German, 2014 90886 Demonstrate understanding of a variety of German texts on areas of most immediate relevance 9.30 am Wednesday 26 November 2014 Credits: Five Achievement

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

Mock Exam Behavioral Finance

Mock Exam Behavioral Finance Mock Exam Behavioral Finance For the following 4 questions you have 60 minutes. You may receive up to 60 points, i.e. on average you should spend about 1 minute per point. Please note: You may use a pocket

Mehr

Polymorphie. 15. Java Objektorientierung II

Polymorphie. 15. Java Objektorientierung II 432 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 433 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen

Mehr

Informatik 1 Kurzprüfung 2 LÖSUNG

Informatik 1 Kurzprüfung 2 LÖSUNG Informatik 1 Kurzprüfung 2 LÖSUNG Herbstsemester 2013 Dr. Feli Friedrich 4.12.2013 Name, Vorname:............................................................................ Legi-Nummer:..............................................................................

Mehr

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots IT I - VO 5 1

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots IT I - VO 5 1 IT I: Heute Nachbetrachtung Wissensüberprüfungen Einführung Vererbung Roboter in becker.robots 8.11.2018 IT I - VO 5 1 Organisatorisches Wissensüberprüfung diese Woche wieder am Rechner Wer die Wissensüberprüfung

Mehr

Polymorphie. 15. Java Objektorientierung II

Polymorphie. 15. Java Objektorientierung II 446 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 447 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen

Mehr

Computational Models

Computational Models - University of Applied Sciences - Computational Models - CSCI 331 - Friedhelm Seutter Institut für Angewandte Informatik Part I Automata and Languages 0. Introduction, Alphabets, Strings, and Languages

Mehr

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots IT I - VO 5 1

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots IT I - VO 5 1 IT I: Heute Nachbetrachtung Wissensüberprüfungen Einführung Vererbung Roboter in becker.robots 7.11.2017 IT I - VO 5 1 Organisatorisches Wissensüberprüfung diese Woche wieder am Rechner Wer die 5. Wissensüberprüfung

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

Mehr

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

Mehr

Software Entwicklung 1. Subtyping revisited. Subtypbildung in Java: Klassen I. Subtyping und Vererbung I. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Subtyping revisited. Subtypbildung in Java: Klassen I. Subtyping und Vererbung I. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Subtyping revisited AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 40 Subtyping und Vererbung

Mehr

Application Note. Import Jinx! Scenes into the DMX-Configurator

Application Note. Import Jinx! Scenes into the DMX-Configurator Application Note Import Jinx! Scenes into the DMX-Configurator Import Jinx! Scenen into the DMX-Configurator 2 The Freeware Jinx! is an user friendly, well understandable software and furthermore equipped

Mehr

Objekt-Orientierte Programmiersprachen

Objekt-Orientierte Programmiersprachen Objekt-Orientierte Programmiersprachen Martin Gasbichler, Holger Gast 8. Dezember 2005 Heute: Interfaces Vererbung Jede Klasse hat genau eine direkte Superklasse Sie übernimmt die Implementierung der Superklasse

Mehr

Objekt-Orientierte Programmiersprachen

Objekt-Orientierte Programmiersprachen Objekt-Orientierte Programmiersprachen Vererbung Heute: Interfaces Martin Gasbichler, Holger Gast 8. Dezember 2005 Jede Klasse hat genau eine direkte Superklasse Sie übernimmt die Implementierung der Superklasse

Mehr

Mitglied der Leibniz-Gemeinschaft

Mitglied der Leibniz-Gemeinschaft Methods of research into dictionary use: online questionnaires Annette Klosa (Institut für Deutsche Sprache, Mannheim) 5. Arbeitstreffen Netzwerk Internetlexikografie, Leiden, 25./26. März 2013 Content

Mehr

Übersetzen des Quelltexts in ausführbaren Maschinen-Code Translation of source code into executable machine code

Übersetzen des Quelltexts in ausführbaren Maschinen-Code Translation of source code into executable machine code Informatik II D-BAUG Self-Assessment, 2. März 2017 Lösung Name, Vorname:............................................................. Legi-Nummer:.............................................................

Mehr

FEM Isoparametric Concept

FEM Isoparametric Concept FEM Isoparametric Concept home/lehre/vl-mhs--e/folien/vorlesung/4_fem_isopara/cover_sheet.tex page of 25. p./25 Table of contents. Interpolation Functions for the Finite Elements 2. Finite Element Types

Mehr

Informatik für Mathematiker und Physiker Woche 7. David Sommer

Informatik für Mathematiker und Physiker Woche 7. David Sommer Informatik für Mathematiker und Physiker Woche 7 David Sommer David Sommer 30. Oktober 2018 1 Heute: 1. Repetition Floats 2. References 3. Vectors 4. Characters David Sommer 30. Oktober 2018 2 Übungen

Mehr

OOSE_02 VERERBUNG UND POLYMORPHIE MIT BLUEJ CRC-KARTENMETHODE

OOSE_02 VERERBUNG UND POLYMORPHIE MIT BLUEJ CRC-KARTENMETHODE OOSE_02 VERERBUNG UND POLYMORPHIE MIT BLUEJ CRC-KARTENMETHODE Vererbung und Polymorphie mit BlueJ [Barnes2012] OOSE_02 Birgit Demuth Folie 2von XYZ BlueJ: Vererbung (1) Erweiterung von HelloLibrary (U02)

Mehr

Bayesian Networks. Syntax Semantics Parametrized Distributions Inference in Bayesian Networks. Exact Inference. Approximate Inference

Bayesian Networks. Syntax Semantics Parametrized Distributions Inference in Bayesian Networks. Exact Inference. Approximate Inference Syntax Semantics Parametrized Distributions Inference in Exact Inference Approximate Inference enumeration variable elimination stochastic simulation Markov Chain Monte Carlo (MCMC) 1 Includes many slides

Mehr

Word-CRM-Upload-Button. User manual

Word-CRM-Upload-Button. User manual Word-CRM-Upload-Button User manual Word-CRM-Upload for MS CRM 2011 Content 1. Preface... 3 2. Installation... 4 2.1. Requirements... 4 2.1.1. Clients... 4 2.2. Installation guidelines... 5 2.2.1. Client...

Mehr

MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE STUDIE ZUR LEGITIMITAT UND PRAXIS DER MODERNEN MATHEMATIK (THEORIE UND METHODE) FROM UVK

MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE STUDIE ZUR LEGITIMITAT UND PRAXIS DER MODERNEN MATHEMATIK (THEORIE UND METHODE) FROM UVK MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE STUDIE ZUR LEGITIMITAT UND PRAXIS DER MODERNEN MATHEMATIK (THEORIE UND METHODE) FROM UVK DOWNLOAD EBOOK : MATHEMATIK - MODERNE - IDEOLOGIE. EINE KRITISCHE

Mehr

Number of Maximal Partial Clones

Number of Maximal Partial Clones Number of Maximal Partial Clones KARSTEN SCHÖLZEL Universität Rostoc, Institut für Mathemati 26th May 2010 c 2010 UNIVERSITÄT ROSTOCK MATHEMATISCH-NATURWISSENSCHAFTLICHE FAKULTÄT, INSTITUT FÜR MATHEMATIK

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software 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

Mehr

Dynamische Programmiersprachen. David Schneider david.schneider@hhu.de STUPS - 25.12.02.50

Dynamische Programmiersprachen. David Schneider david.schneider@hhu.de STUPS - 25.12.02.50 Dynamische Programmiersprachen David Schneider david.schneider@hhu.de STUPS - 25.12.02.50 Organisatorisches Aufbau: Vorlesung 2 SWS Übung Kurzreferat Projekt Prüfung Übung wöchentliches Aufgabenblatt in

Mehr

C++11. neu in C++11: range-based for. Objektorientierte Programmierung mit C++ Ersetzung durch: 1. Elementares C++ int array[] = { 1, 2, 3, 4, 5 };

C++11. neu in C++11: range-based for. Objektorientierte Programmierung mit C++ Ersetzung durch: 1. Elementares C++ int array[] = { 1, 2, 3, 4, 5 }; neu in C++11: range-based for int array[] = { 1, 2, 3, 4, 5 ; for (int x : array) // value x *= 2; C++11 for (int& x : array) // reference x *= 2; Ersetzung durch: { auto && range = range-init; for ( auto

Mehr

Übungsstunde: Informatik 1 D-MAVT

Übungsstunde: Informatik 1 D-MAVT Übungsstunde: Informatik 1 D-MAVT Daniel Bogado Duffner Übungsslides unter: n.ethz.ch/~bodaniel Bei Fragen: bodaniel@student.ethz.ch Daniel Bogado Duffner 25.04.2018 1 Ablauf Self-Assessment Pointer Iterators

Mehr

Data Structures. Christian Schumacher, Info1 D-MAVT Linked Lists Queues Stacks Exercise

Data Structures. Christian Schumacher, Info1 D-MAVT Linked Lists Queues Stacks Exercise Data Structures Christian Schumacher, chschuma@inf.ethz.ch Info1 D-MAVT 2013 Linked Lists Queues Stacks Exercise Slides: http://graphics.ethz.ch/~chschuma/info1_13/ Motivation Want to represent lists of

Mehr

FEBE Die Frontend-Backend-Lösung für Excel

FEBE Die Frontend-Backend-Lösung für Excel FEBE Die Frontend--Lösung für FEBE Die Frontend--Lösung für FEBE.pptx 8.04.206 0:43 FEBE Die Frontend--Lösung für Nutzer A alle_aufträge neuer_auftrag Auftragsänderung Nutzer B alle_aufträge neuer_auftrag

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Klassenattribute und -methoden Bieniusa Software Entwicklung 1 2/ 23 Beispiel: Klassenattribute I class Uebungsgruppe

Mehr

D-BAUG Informatik I. Exercise session: week 1 HS 2018

D-BAUG Informatik I. Exercise session: week 1 HS 2018 1 D-BAUG Informatik I Exercise session: week 1 HS 2018 Java Tutorials 2 Questions? expert.ethz.ch 3 Common questions and issues. expert.ethz.ch 4 Need help with expert? Mixed expressions Type Conversions

Mehr

Information Flow. Basics. Overview. Bell-LaPadula Model embodies information flow policy. Variables x, y assigned compartments x, y as well as values

Information Flow. Basics. Overview. Bell-LaPadula Model embodies information flow policy. Variables x, y assigned compartments x, y as well as values Information Flow Overview Basics and background Compiler-based mechanisms Execution-based mechanisms 1 Basics Bell-LaPadula Model embodies information flow policy Given compartments A, B, info can flow

Mehr

Inhalt. Vererbung. The DoME example. DoME objects. DoME object model. DoME classes. Vererbung Subtyping Substitution Polymorphe Variablen

Inhalt. Vererbung. The DoME example. DoME objects. DoME object model. DoME classes. Vererbung Subtyping Substitution Polymorphe Variablen Inhalt Vererbung Vererbung Subtyping Substitution Polymorphe Variablen 4.0 The DoME example DoME objects "Database of Multimedia Entertainment" stores details about CDs and DVDs CD: title, artist, # tracks,

Mehr

Software Entwicklung 1

Software 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

Mehr

DPM_flowcharts.doc Page F-1 of 9 Rüdiger Siol :28

DPM_flowcharts.doc Page F-1 of 9 Rüdiger Siol :28 Contents F TOOLS TO SUPPORT THE DOCUMENTATION... F-2 F.1 GRAPHIC SYMBOLS AND THEIR APPLICATION (DIN 66 001)... F-2 F.1.1 Flow of control... F-3 F.1.2 Terminators and connectors... F-4 F.1.3 Lines, arrows

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Übung Informatik I - Programmierung - Blatt 8

Übung Informatik I - Programmierung - Blatt 8 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK II RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

Exercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Exercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1 Exercise (Part II) Notes: The exercise is based on Microsoft Dynamics CRM Online. For all screenshots: Copyright Microsoft Corporation. The sign ## is you personal number to be used in all exercises. All

Mehr

Level 2 German, 2015

Level 2 German, 2015 91126 911260 2SUPERVISOR S Level 2 German, 2015 91126 Demonstrate understanding of a variety of written and / or visual German text(s) on familiar matters 2.00 p.m. Friday 4 December 2015 Credits: Five

Mehr

Aufgabe 2a. ios-praktikum Alexander Neitz

Aufgabe 2a. ios-praktikum Alexander Neitz Aufgabe 2a ios-praktikum 2016 Alexander Neitz 2016-04-27 1 Aufgabe 2 Swift und Objective-C sind zueinander kompatibel, sodass Projekte aus Source-Code beider Sprachen bestehen können. Ziel dieser Aufgabe

Mehr

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

Mehr

EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE LANDESKIRCHE SACHSEN. BLAU (GERMAN EDITION) FROM EVANGELISCHE VERLAGSAN

EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE LANDESKIRCHE SACHSEN. BLAU (GERMAN EDITION) FROM EVANGELISCHE VERLAGSAN EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE LANDESKIRCHE SACHSEN. BLAU (GERMAN EDITION) FROM EVANGELISCHE VERLAGSAN DOWNLOAD EBOOK : EVANGELISCHES GESANGBUCH: AUSGABE FUR DIE EVANGELISCH-LUTHERISCHE

Mehr

Praxis der Programmierung

Praxis der Programmierung Template-Funktionen und -Klassen Einführung in Java Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn 1 Template-Funktionen 2 Minimumfunktion und offene Typen Aufruf

Mehr

Order Ansicht Inhalt

Order Ansicht Inhalt Order Ansicht Inhalt Order Ansicht... 1 Inhalt... 1 Scope... 2 Orderansicht... 3 Orderelemente... 4 P1_CHANG_CH1... 6 Function: fc_ins_order... 7 Plug In... 8 Quelle:... 8 Anleitung:... 8 Plug In Installation:...

Mehr

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell Klassen - Technisch Eine Klasse ist eine Einheit mit einem Namen, die Daten und Funktionalität beinhaltet 12. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, Kapselung,

Mehr

DHBW Stuttgart, Informatik, Advanced SW-Engineering Aug Programmierung

DHBW Stuttgart, Informatik, Advanced SW-Engineering Aug Programmierung Inhalt Aufbau des Source Codes Dokumentation des Source Codes (Layout) Qualitätskriterien berücksichtigen: Verständlichkeit Namenskonventionen Wartbarkeit: Programmierrichtlinien für erlaubte Konstrukte,

Mehr

ONLINE LICENCE GENERATOR

ONLINE LICENCE GENERATOR Index Introduction... 2 Change language of the User Interface... 3 Menubar... 4 Sold Software... 5 Explanations of the choices:... 5 Call of a licence:... 7 Last query step... 9 Call multiple licenses:...

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Subtyping revisited Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 40 Subtyping und Vererbung

Mehr

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017

Informatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017 1 Informatik II Übung 6 Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017 Heutiges Programm 2 1 Klassen - Technisch 2 Prediscussion

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving

Mehr

Abstrakte C-Maschine und Stack

Abstrakte C-Maschine und Stack Abstrakte C-Maschine und Stack Julian Tobergte Proseminar C- Grundlagen und Konzepte, 2013 2013-06-21 1 / 25 Gliederung 1 Abstrakte Maschine 2 Stack 3 in C 4 Optional 5 Zusammenfassung 6 Quellen 2 / 25

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap 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

Mehr

Haslingden High School MFL Faculty Y8 German Block A Homework In der Stadt

Haslingden High School MFL Faculty Y8 German Block A Homework In der Stadt Haslingden High School MFL Faculty Y8 German Block A Homework In der Stadt Name: Form: Subject Teacher: Date Given: Date to Hand in: Grades: Reading Writing WWW: KS3 Target : Effort : House Points: IOTI

Mehr

Level 1 German, 2016

Level 1 German, 2016 90886 908860 1SUPERVISOR S Level 1 German, 2016 90886 Demonstrate understanding of a variety of German texts on areas of most immediate relevance 2.00 p.m. Wednesday 23 November 2016 Credits: Five Achievement

Mehr

Universität Karlsruhe (TH)

Universitä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

Mehr

Introduction FEM, 1D-Example

Introduction FEM, 1D-Example Introduction FEM, D-Example /home/lehre/vl-mhs-/inhalt/cover_sheet.tex. p./22 Table of contents D Example - Finite Element Method. D Setup Geometry 2. Governing equation 3. General Derivation of Finite

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap 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

Mehr

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind:

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind: Test 1 in Programmkonstruktion 59 / 100 Punkte 1. Multiple-Choice-Aufgaben 20 / 30 Punkte Bitte wählen Sie alle zutreffenden Antwortmöglichkeiten aus. Es können beliebig viele Antwortmöglichkeiten zutreffen,

Mehr

Was heißt Denken?: Vorlesung Wintersemester 1951/52. [Was bedeutet das alles?] (Reclams Universal-Bibliothek) (German Edition)

Was heißt Denken?: Vorlesung Wintersemester 1951/52. [Was bedeutet das alles?] (Reclams Universal-Bibliothek) (German Edition) Was heißt Denken?: Vorlesung Wintersemester 1951/52. [Was bedeutet das alles?] (Reclams Universal-Bibliothek) (German Edition) Martin Heidegger Click here if your download doesn"t start automatically Was

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

C++11. exportieren ihre Aufzählungsbezeichner in den umgebenden Bereich (name clashes) schwach typisiert (z.b. keine forward Deklaration möglich)

C++11. exportieren ihre Aufzählungsbezeichner in den umgebenden Bereich (name clashes) schwach typisiert (z.b. keine forward Deklaration möglich) C - enums mit Problemen: konvertierbar nach int C++11 exportieren ihre Aufzählungsbezeichner in den umgebenden Bereich (name clashes) schwach typisiert (z.b. keine forward Deklaration möglich) enum classes

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

Mehr

Info B VL 14: Java Collections/Reflections

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

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 3 Schnittstellen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

Tube Analyzer LogViewer 2.3

Tube Analyzer LogViewer 2.3 Tube Analyzer LogViewer 2.3 User Manual Stand: 25.9.2015 Seite 1 von 11 Name Company Date Designed by WKS 28.02.2013 1 st Checker 2 nd Checker Version history Version Author Changes Date 1.0 Created 19.06.2015

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Virtuelle Methodentabellen Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 9. Juli 2015 Struktur der Objektorientierung Ein wenig Java: public

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr