%course Praktische Informatik 1 %quiz Klassen und Objekte Attribute Gegeben sei die folgende Klasse: ```class A { private int x; public int y; public void f1(int x) { this.x += x; } public void f2(int y) { this.y += y; } }``` Angenommen, ein Objekt wurde per `A a = new A();` erzeugt: Welchen Wert hat Attribut `x`? $ #0 $ Welche der folgenden Anweisungen sind erlaubt? [ ] `a.x = 3;` [x] `a.y = 4;` [x] `a.f1(5);` [x] `a.f2(6);` %%% Objektvariablen Gegeben seien die folgenden Klassen: ```class A { private int x; void setX(int x) { this.x = x; } int getX() { return this.x; } } class Main { public static void main(String[] args) { A a = new A(); A b = a; b.setX(42); System.out.println( a.getX() ); } } ``` Was wird ausgegeben? (x) 42 ( ) 0 %%% Objektvariablen Gegeben seien die folgenden Klassen: ```class A { public int x; public A(int x) { this.x = x; } } class Main { public static void main(String[] args) { A a1 = new A(4); A a2 = new A(4); System.out.println( a1 == a2 ); } }``` Was wird ausgegeben? (x) `false` ( ) `true` %%% Objektvariablen Gegeben seien die folgenden Klassen: ```class Punkt { public int x, y; } class Main { public static void main(String[] args) { Punkt[] punkte = new Punkt[5]; punkte[0].x = 3; punkte[0].y = 7; } }``` Wieso erhält man einen __Compilerfehler__? (x) Für jedes Element des Arrays muss ein Objekt erzeugt werden, z.B. `punkte[0] = new Punkt();` ( ) Es ist verboten ein Array vom Typ `Punkt` anzulegen. ( ) Auf die Attribute `x` und `y` darf nur innerhalb der Methoden der Klasse `Punkt` zugegriffen werden. %%% Konstrukturen Gegeben sei die folgende Klasse: ```class A { private int x; public A() { x = 7; } public A(int x) { this(); this.x += x; } }``` Nach Ausführung von `A a = new A(6);` hat das Attribut `x` den Wert $ #13 $. %%% Konstruktoren Gegeben sei die folgende Klasse: ```class A { public A(String x) { System.out.println("hallo"); } public A(int x) { System.out.println("welt"); } }``` Durch Ausführung von `A a = new A("13");` wird #"hallo" ausgegeben. %%% Zugriffsschutz Gegeben sei die folgende Klasse: ```class C { int a; public int b, c; private int d; public void f1() { ... } private void f2() { ... } void f3() { ... } }``` Auf welche Attribute / Methoden kann von außen zugegriffen werden? [x] `a` [x] `b` [x] `c` [ ] `d` [x] `f1` [ ] `f2` [x] `f3`