OPP II Klausuraufgaben - Schnittstellen (I.) Versuchen Sie alle Aufgaben wie in der Klausur am Schreibtisch zu lösen! Halten Sie es aus, nicht sofort die Lösung zu erkennen! Diese Aufgaben(und speziell Kodieren hat damit zu tun, Zeit in eine Lösung/Fehlersuche zu investieren) (II.) Überprüfen Sie ihre Lösung! Unabhängig davon können Sie den Quellcode kopieren und zeilenweise ausführen! Beobachten Sie die Werte der Variablen! (III.) Lesen Sie sich meine Lösungen durch und versuchen Sie die Erklärungen 100% zu verstehen! (IV) Ich habe diese Aufgaben und Lösungen nach besten Wissen und Zeit neu zusammengestellt, bedenken Sie, dass geg. Fehler in den Lösungen jeglicher Art auftreten können! Ich habe allerdings den Vorteil für Sie höher eingeschätzt, ihnen meine Lösungen mit zu kopieren! Viele Erfolg und Spaß beim Lösen! (1.) Welchen beiden Fehler sind in untenstehendem Kode? interface A private int i; (2.) Wie lautet die Ausgabe von folgendem Programm: interface A void mymethod(); class B public void mymethod() System.out.println("My Method"); class C extends B implements A class MainClass A a = new C(); a.mymethod(); (3.) Kann eine Klasse mehr als eine Schnittstelle implementieren? OPP II Klausuraufgaben - Schnittstellen S. 1/13
(4.) Warum erzeugt nachstehender Kode einen Compilerfehler? interface X void methodx(); class Y implements X void methodx() System.out.println("Method X"); (5.)Welcher Fehler taucht bei nachfolgendem Quellcode auf: interface A int i = 111; class B implements A void methodb() i = 222; (6.) Stimmt der folgende Quellkode? class A //Class A interface B extends A //Interface B extending Class A OPP II Klausuraufgaben - Schnittstellen S. 2/13
(7.) Wie ist die Programmausgabe? interface P String p = "PPPP"; String methodp(); interface Q extends P String q = "QQQQ"; String methodq(); class R implements P, Q public String methodp() return q+p; public String methodq() return p+q; R r = new R(); System.out.println(r.methodP()); System.out.println(r.methodQ()); (8.) Können Schnittstellen Konstruktoren haben? OPP II Klausuraufgaben - Schnittstellen S. 3/13
(9.) Wie ist die Programmausgabe? class A implements B public int methodb(int i) return i =+ i * i; interface B int methodb(int i); B b = new A(); System.out.println(b.methodB(2)); (10.) Warum kompliert dieser Quellkode nicht? interface ABC public void methodone(); public void methodtwo(); interface PQR extends ABC public void methodone(); public void methodtwo(); (11.)Kann ein Interface statische Methoden haben? OPP II Klausuraufgaben - Schnittstellen S. 4/13
(12.) Wie ist die Programmausgabe? interface ABC void methodone(); interface PQR extends ABC void methodtwo(); abstract class XYZ implements PQR public void methodone() methodtwo(); class MNO extends XYZ public void methodtwo() methodone(); ABC abc = new MNO(); abc.methodone(); OPP II Klausuraufgaben - Schnittstellen S. 5/13
(13.) Wie ist die Programausgabe? interface X char c = 'A'; char methodx(); class Y implements X System.out.println(c); public char methodx() char c = this.c; return ++c; Y y = new Y(); System.out.println(y.methodX()); System.out.println(y.c); System.out.println(X.c); (14.) Kann man Schnittstellen als abstrakt deklarieren? OPP II Klausuraufgaben - Schnittstellen S. 6/13
(15.) Wie ist die Programmausgabe? interface One String s = "Mr. Big"; String methodone(); interface Two String methodone(); abstract class Three String s = "Coded by "; public abstract String methodone(); class Four extends Three implements One, Two public String methodone() String s = super.s + One.s; return s; Four four = new Four(); System.out.println(four.methodONE()); One one = four; System.out.println(One.s+" say goodbye!"); OPP II Klausuraufgaben - Schnittstellen S. 7/13
(16.) Wie ist die Programmausgabe? interface X void method(); class Y public void method() System.out.println("CLASS Y"); class Z extends Y implements X X x = new Z(); x.method(); (17.) Können Schnittstellen andere Methoden als abstrakte haben? OPP II Klausuraufgaben - Schnittstellen S. 8/13
(18.)Wie lautet die Programausgabe? interface A int methoda(); interface B int methodb(); interface C int methodc(); class D implements A, B, C int i = 7; public int methoda() i =+ i / i; return i; public int methodb() i =- i * i; return i; public int methodc() i = ++i - --i; return i; D d = new D(); System.out.println(d.i); System.out.println(d.methodA()); System.out.println(d.methodB()); System.out.println(d.methodC()); (19.) Alle Deklarationen einer Schnittstelle sind per Voreinstellung public! Stimmt dies? OPP II Klausuraufgaben - Schnittstellen S. 9/13
(20.) Bestimmen Sie die Programausgabe: interface A String A = "A"; String methoda(); interface B String B = "B"; String methodb(); class C implements A, B public String methoda() return A+B; public String methodb() return B+A; class D extends C implements A, B String D = "D"; public String methoda() return D+methodB(); C c = new C(); System.out.println(c.methodA()); System.out.println(c.methodB()); c = new D(); System.out.println(c.methodA()); System.out.println(c.methodB()); OPP II Klausuraufgaben - Schnittstellen S. 10/13
(21.) Bestimmen Sie die Programmausgabe! interface X void methodx(); interface Y void methody(); class Z implements X, X.Y methodx(); System.out.println(1); public void methodx() methody(); System.out.println(2); public void methody() System.out.println(3); Z z = new Z(); z.methodx(); z.methody(); X x = z; x.methodx(); OPP II Klausuraufgaben - Schnittstellen S. 11/13
(22.) Welche Compilerfehler liegen hier vor? interface X void methodx(); interface Y extends X void methody(); class Z implements Y public void methody() System.out.println("Method Y"); OPP II Klausuraufgaben - Schnittstellen S. 12/13
(23.)Bestimmen Sie die Ausgabe! class A class B extends A class C extends B interface ABC void method(a a); interface PQR void method(b b); class M implements ABC, PQR public void method(a a) System.out.println(2); public void method(b b) System.out.println(3); M m = new M(); m.method(new A()); m.method(new B()); m.method(new C()); OPP II Klausuraufgaben - Schnittstellen S. 13/13
OPP II Klausuraufgaben - Schnittstellen - Lösungswege (1.) Eine Konstante darf nicht als privat deklariert werde und muss initialisiert werden! (2.) My Method (3.) Ja, das ist im Gegensatz zur Vererbung bei Java möglich! (4.) Die Methode muss als public deklariert werden! (5.) Die Konstante i kann in der implementierten Klasse nicht verändert werden! Deklarationen von Variablen im Interface sind per Voreinstellung final und static! (6.) Eine Klasse kann nicht implementiert werden! (7.) QQQQPPPP PPPPQQQQ (8.) Nein (9.) 4 (10.) Ja, da ein Interface nicht ein Interface implementieren muss! (11.) Ab Java 8 ist dies möglich! (12.) Dies Programm hat kein Ende weil sich die Methoden methodone und methodtwo gegenseitig unendlich oft aufrufen! Schließlich kommt es zu einem StackOverflow! (13.) ABAA Das erste A durch die println Anweisung in der Klasse Y! (14.) Ja, aber Schnittstellen sind bereits als abstrakt per Voreinstellung deklariert! (15.) Coded by Mr. Big Mr. Big say goodbye! (16.) Class Y (17.) Ab Java8 gibt es statische und default Methoden! (18.) 7 1-1 1 (19.) Ja! OPP II Klausuraufgaben - Schnittstellen - Lösungswege S. 1/2
(20) AB BA DBA BA (21.) 3 2 1 3 2 3 3 2 (22.) Die Klasse Z muss auch die Methode methodx() implementieren! (23.) 2 3 3 OPP II Klausuraufgaben - Schnittstellen - Lösungswege S. 2/2