Aufgabe 1: In der Vorlesung haben wir eine Farbmenge implementiert. Ähnlich sieht eine Ziffernmenge aus:
class ZiffernmengeImpl { protected boolean[] inhalt = new boolean[10]; // 0 bis 9 public void eintragen(char z) { if (Character.isDigit(z)) inhalt[z] = true; } public void enfernen(char z) { if (Character.isDigit(z)) inhalt[z] = false; } public boolean vorhanden(char z) { return (Character.isDigit(z)) && inhalt[z]; } }
Erweitern Sie nun diese Klasse (mit extends) um folgende Methoden (ca. 9 Programmzeilen):
int anzahl(char z); // Anzahl der vorhandenen Ziffern z in der Menge int anzahl(); // Gesamtzahl aller Ziffern in der Menge
Aufgabe 2: Zeichnen Sie die Objektstruktur (alle Variablen, Objekte und Werte) eines Stapelobjekts, die nach dem folgenden Programmausschnitt besteht:
Stapel s = new Stapel(); s.eintragen(new Button("Hallo!")); s.eintragen(1); // autoboxing s.eintragen(new Eimer()); s.entfernen();
Die Klasse Stapel wurde hierbei folgendermaßen implementiert (vereinfacht: ohne Ausnahmen):
class Stapel { private int spitze = -1; private Object[] inhalt = new Object[5]; private void eintragen(Object element) { inhalt[++spitze] = element; } private void entfernen() { spitze--; } }
Aufgabe 3: Programmieren Sie eine Knopf, das beim Drücken piepst. Sie brauchen dazu folgende Klassen und Methoden:
package java.awt; public class Frame { public void add(Button knopf); … } public class Button { public Button(String beschriftung); void addActionListener(java.awt.event.ActionListener lauscher); … } interface ActionListener { void actionPerformed(java.awt.event.ActionEvent e); … }
Folgender Methodenaufruf bewirkt ein Piepton:
java.awt.Toolkit.getDefaultToolkit XE "getDefaultToolkit" ().beep XE "beep" ();
Aufgabe 4. (40 Punkte, 15 Min): Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stichworten (nicht länger als die Zeile) dazu. Ohne Begründung gilt Ihre Antwort als falsch.
( )
Richtig
Globale Variablen heißen global, weil sie außerhalb von Klassen
vereinbart werden.
( ) Falsch
Grund:
( ) Richtig Eine
static-Variable
kann in einer Methode vereinbart werden.
( ) Falsch
Grund:
( ) Richtig
Ein Objekt kann gleichzeitig von drei Referenzen referenziert werden.
( ) Falsch
Grund:
( ) Richtig
javadoc erzeugt die Dokumentation aus dem Quellcode
( ) Falsch
Grund:
( ) Richtig
Wenn die Anzahl der Wiederholungen zu Programmierungszeit bekannt ist,
( ) Falsch kann eine Zählschleife verwendet werden.
Grund:
( ) Richtig
Eine aufgerufene Methode muss in der Klasse des Objekts vereinbart werden,
( ) Falsch für welches sie aufgerufen wird.
Grund:
( ) Richtig Die
Ordnungsoperatoren <, <=, > und >= sind in Java für Operanden
aller Typen definiert.
( ) Falsch
Grund:
( ) Richtig Die Schnittstelle
Comparable enthält nur eine
parameterlose Methode.
( ) Falsch
Grund:
Aufgabe 5: Die folgende Klasse Ampel bedient drei Kreise:
import lehrbuch.Kreis; public class Ampel { private Kreis rot, gelb, grün; int zustand; public Ampel() { rot = new Kreis(); rot.zeichnen(); rot.bemalen(Kreis.ROT); gelb = new Kreis(); gelb.zeichnen(); gelb.bemalen(Kreis.BLAU); gelb.verstecken(); grün = new Kreis(); grün.zeichnen(); grün.bemalen(Kreis.GRUEN); grün.verstecken(); zustand = 0; } …Programmieren Sie die Methode rückwärts() dieser Klasse. Der (wiederholte) Aufruf dieser Methode versetzt die Ampel in ihren vorherigen Zustand (also andersrum als in der Hauptklausur): Zu Anfang wird (wie oben programmiert) Rot angezeigt. Der erste nächste Aufruf soll auf Gelb schalten (Methode Kreis.wiederherstellen); der nächste auf Grün; der nächste auf Gelb-Rot, danach wieder Rot und es fängt alles von vorne an. Benutzen Sie die globale Variable zustand, um sich den Zustand der Ampel (zyklisch) zu merken.