Ukeoppgave uken 17. til 22. oktober 2007 Oppgave 1 --------- Trening med `static´ i Java. a. Hva skriver dette programmet ut? Hvorfor? class A { int x; } class B { static int x; } class AB { public static void main (String arg[]) { A a1 = new A(), a2 = new A(); B b1 = new B(), b2 = new B(); a1.x = 1; a2.x = 2; b1.x = 3; b2.x = 4; System.out.println("a1.x="+a1.x+" a2.x="+a2.x); System.out.println("b1.x="+b1.x+" b2.x="+b2.x); } } b. Er dette programmet lovlig? Hva skriver det ut? Hva skjer om vi fjerner kommenteringen? class E { int f() { return 1; } } class F { static int f() { return 2; } } class EF { public static void main(String arg[]) { E e1 = new E(); F f1 = new F(); System.out.println("e1.f->"+e1.f()); System.out.println("f1.f->"+f1.f()); // System.out.println("E.f ->"+E.f()); System.out.println("F.f ->"+F.f()); } } c. Dette programmet gir kompileringsfeil. Hvilken feil? Hvorfor? class C { int x = 9; void p() { System.out.println("x="+x); } } class D { int x = 9; static void p() { System.out.println("x="+x); } } Oppgave 2 --------- Er dette RusC-programmet lovlig? Hva skriver det ut? Hvor mange x-variable er det? func f (int x) { x = 1; } int x; func g () { int x; x = 2; f(x); } func main () { g(); putint(x); putchar(10); } Oppgave 3 --------- Skriv klassen EmptyStatmUnit som implementerer den tomme setningen i Rusc. Ta med både `parse´ og `printTree´.