Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Übersetzerbau 1   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
pruefungen:hauptstudium:ls2:ueb1-2012-02 [12.04.2012 17:55] neverpanicpruefungen:hauptstudium:ls2:ueb1-2012-02 [29.09.2012 14:54] (aktuell) buntfalke
Zeile 34: Zeile 34:
  
 ==== Innere Klassen in Java ==== ==== Innere Klassen in Java ====
- 
 **P:** Gegeben: Blatt mit Pseudo-Code \\ **P:** Gegeben: Blatt mit Pseudo-Code \\
 Class "Outer" "Inner" \\ Class "Outer" "Inner" \\
Zeile 57: Zeile 56:
  
 **S:** Class "Outer" "Outer$Inner" **S:** Class "Outer" "Outer$Inner"
- 
   class Outer {   class Outer {
   public static int a;   public static int a;
   private static int b;   private static int b;
 +  
   public int i;   public int i;
   private int j;   private int j;
     
-  static access$0{..} // getB() because var is private +  static int access$0() { 
-  static access$1{..} // setB() because var is private +   return b; // getB() because var is private 
-   access$2{..} // getJ() because var is private +  } 
-  access$3{..// setJ() because var is private +
-  foo(){ +
-  // ?? I think "Outer." could be omitted here +
-  Outer.a++; //"Outer." because public static +
-  // b++; +
-  int temp = Outer.getB(); +
-  Outer.setB( temp+1 );+
      
-  this$0.i++; //"this$0" because public instance +  static int access$1(int b) { 
-   // j++; +  Outer.b = b; // setB() because var is private 
-   int temp = getJ(); +   
-  setJtemp+1 );+   
 +  static int access$2(Outer o{ 
 +  return o.j; // getJ() because var is private
   }   }
 +  
 +  static int access$3(Outer o, int j) {
 +  return o.j = i; // setJ() because var is private
 +  }
 +  
   }   }
 +  
   class Outer$Inner{   class Outer$Inner{
   Outer this$0; // needed e.g. for i++   Outer this$0; // needed e.g. for i++
-  Outer$Inner( Outer outer ){+   
 +  Outer$Inner(Outer outer) {
   this$0 = outer;   this$0 = outer;
   }   }
-  foo(){...}+   
 +  void foo() { 
 +  Outer.a++; //"Outer." because public static 
 +   
 +  // b++; 
 +  Outer.access$1(Outer.access$0() + 1); 
 +   
 +  this$0.i++; //"this$0" because public instance 
 +   
 +  // j++; 
 +  Outer.access$3(this$0, Outer.access$2(this$0) + 1); 
 +  }
   }   }
  
 ==== SV-Verweis ==== ==== SV-Verweis ====
- 
 **P:** Sowas wie "this$0" hatten wir schon mal, was denn? \\ **P:** Sowas wie "this$0" hatten wir schon mal, was denn? \\
 **S:** SV-Verweis statischer Vorg.-Verweis **S:** SV-Verweis statischer Vorg.-Verweis
Zeile 129: Zeile 140:
  
 ==== Stack-Frame ==== ==== Stack-Frame ====
- 
 **P:** Stack-Frame Aufbau. **P:** Stack-Frame Aufbau.
 **S:** Zeichnung vereinfachter Stack (max. bis 0) **S:** Zeichnung vereinfachter Stack (max. bis 0)
Zeile 143: Zeile 153:
  
 ==== Compiler-Komponenten und deren Zusammenspiel am Bsp. assert ==== ==== Compiler-Komponenten und deren Zusammenspiel am Bsp. assert ====
- 
 **P:** Ausgehend von Übungs-Compiler-Sprache, \\ **P:** Ausgehend von Übungs-Compiler-Sprache, \\
 neues Feature einbauen: \\ neues Feature einbauen: \\
Zeile 244: Zeile 253:
 Gelerntes erklären und ausformulieren am besten mit Lernpartner vor der mündl. Prüfung üben. Gelerntes erklären und ausformulieren am besten mit Lernpartner vor der mündl. Prüfung üben.
 ("aktives Wissen") ("aktives Wissen")
-