Aufgabe 1 (Klassen in Java) a) Implementieren Sie die Klassen Clock und Calendar (vgl. Vorlesung, Kapitel 12 oder Präsenzblatt 11) in Java. Tragen Sie den Code in die beiden folgenden Code-Zellen ein. In [ ]: /* Klasse Clock Methoden: Konstruktor, toString, tic */ In [ ]: /* Klasse Calendar Methoden: Konstruktor, toString, nextDay */ b) Testen Sie Ihre Klassen, indem Sie Objekte davon instanziieren und geeignete Methoden-Aufrufe durchführen. Schreiben Sie in die Zelle mit dem Kommentar Test-Code Anweisungen, die ein Clock bzw. ein Calendar-Objekt instanziieren und die Methode tic bzw. nextDay 25 bzw. 366 Mal aufrufen und dann toString aufrufen. Überzeugen Sie sich, dass Ihre Implementierung sinnvolle Ergebnisse liefert. In [ ]: /* Test-Code */ Aufgabe 2 (Vererbung in Java) a) Realisieren Sie die Klasse CalendarClock in Java. Versuchen Sie, sinnvoll die beiden Klassen Calendar und Clock aus der vorherigen Aufgabe zu nutzen. Wie müssen Sie eine der beiden Klassen umstrukturieren, um sie als interface mit default-Methoden nutzen zu können? In [ ]: /* Klasse CalendarClock */ b) Würde Ihr Vorgehen aus Teilaufgabe 2a ebenfalls funktionieren, wenn die Klasse Calendar eine Methode tic statt nextDay hätte? Begründung! Aufgabe 3 (Sichtbarkeit) a) Überlegen Sie sich Fälle, bei denen Methoden als protected, private oder public deklariert werden sollten. b) Wie verhält sich das analog für Datenattribute? Aufgabe 4 (Wiederholung) Suchen Sie sich aus den bisherigen Präsenz- und Hausblättern die drei Aufgaben heraus, mit denen Sie die größten Schwierigkeiten hatten. Informieren Sie Ihren Tutor vorab, welche das sind. (Die am häufigsten gewünschten Aufgaben werden dann in der Übung besprochen)