Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Donnerstag, 14. April 2005 Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations- und Kulturwissenschaft Allgemeine Hinweise 1. Bearbeitungszeit: 90 Minuten. 2. Maximal erreichbare Punktzahl: 90. Zu Ihrer Orientierung sind die erreichbaren Punkte bei jeder Frage genannt – bitte teilen Sie die Arbeitszeit entsprechend ein. 3. Schreiben Sie Ihren Namen, Vornamen und Ihre Matrikelnummer (oder eine frei wählbare ID) leserlich auf alle Klausurbögen, die Sie für Ihre Lösung verwenden - bevor Sie mit der Bearbeitung beginnen! Blätter ohne diese Angaben können nicht gewertet werden. 4. Verwenden Sie nur die bereitgestellten Klausurbögen. 5. Haken Sie ggf. nach Bearbeitung die Aufgaben auf der Angabe ab, um sicherzustellen, dass Sie keine Frage ausgelassen haben. 6. Benutzen Sie keine Bleistifte, keine rotschreibenden Stifte und kein TippEx (oder ähnliche Produkte). 7. Es sind keine weiteren Unterlagen (Skripte, Vorlesungsmitschriften, etc.) zugelassen. 8. Wenden Sie sich bei Unklarheiten in den Aufgabenstellungen immer an die Aufsichtsführenden. Hinweise und Hilfestellungen werden dann, falls erforderlich, offiziell für den gesamten Hörsaal durchgegeben. Aussagen unter „vier Augen“ sind ohne Gewähr. 9. Geben Sie keine mehrdeutigen (oder mehrere) Lösungen an. In solchen Fällen wird stets die Lösung mit der geringeren Punktzahl gewertet. Eine richtige und eine falsche Lösung zu einer Aufgabe ergeben also null Punkte. 10. Verändern Sie die Aufgabenstellung nicht, um Sie an Ihre Lösung „anzupassen“. Lösungen, die sich nicht an die vorgegebenen Aufgabenstellungen halten, werden mit null Punkten bewertet. Klausur Einführung OO / Java Sommersemester 2005 Donnerstag, 14. April 2005 Fragen Punkte Aufgabe 1 Gegeben sei folgende Problemstellung: Sie entwickeln eine Verwaltungssoftware für einen Waschsalon und wollen zunächst die objekt-orientierte Modellierung durchführen. Folgende Informationen liegen Ihnen vor: Ein Waschsalon verfügt über verschiedene Geräte, darunter Waschmaschinen und Trockner. Die Geräte haben jeweils einen Betriebszustand, verfügen über mehrere Programme und können die Restlaufzeit angeben. Waschmaschinen haben einen Wasch- und Weichspülmittelbehälter, dessen Füllstand ausgelesen werden kann. Trockner haben eine Knitterschutzfunktion, die aktiviert und deaktiviert werden kann. Unter den Kunden des Waschsalons gibt es Abonnenten, deren Wasch- und Trockenvorgänge über ein Abonnement abgebucht werden. Die Abonnenten verfügen über eine Kundenkarte, mit der sie die Geräte steuern können. a) Entwerfen Sie in Java geeignete Klassen bzw. Schnittstellen für die obige Problemstellung Verwenden Sie ggf. für die Typisierung von Eigenschaften primitive Datentypen bzw. den Zeichenkettendatentyp String. (28 P.) b) Geben Sie anhand Ihres Codes je ein Beispiel für eine Vererbungs- bzw. eine Aggregationsbeziehung (4 P.). c) In welcher Beziehung stehen in Ihrem Modell die Abonnenten zu den Geräten (3P)? 2 35 P. Klausur Einführung OO / Java Sommersemester 2005 Donnerstag, 14. April 2005 Aufgabe 2 Erläutern Sie anhand eines kurzen Code-Beispiels, wie in Java neue Objekte erzeugt werden können. 6 P. Aufgabe 3 Erläutern Sie den Unterschied zwischen primitiven und ReferenzDatentypen und geben Sie je ein Beispiel für beide Typen. 6 P. Aufgabe 4 Erläutern Sie die Konzepte finale Klasse bzw. abstrakte Klasse. Wofür setzt man sie typischerweise ein? 6 P. Aufgabe 5 Erläutern Sie die Aufgabe der main()-Methode einer Java-Klasse. Wie verwenden Sie main()-Methoden, wenn Sie in einem Projekt mehrere (viele) Klassen deklariert haben? Welche Besonderheiten gelten bei Applets? 8 P. Aufgabe 6 Erläutern Sie folgenden Klassenkopf (Inhalt und Funktion der Klasse): 6 P. public final class String extends Object implements Serializable, Comparable, CharSequence Aufgabe 7 Ergänzen Sie die Leerstellen in der nachfolgenden Schleife so, dass nach Durchlaufen der Schleife in der Variablen Ergebnis das Produkt der Ganzzahlen von 1 bis 10 enthalten ist. int Ergebnis = 1; for(int Zaehler = ___; Zaehler ____; Zaehler++) { ____________________ } 3 4P Klausur Einführung OO / Java Sommersemester 2005 Donnerstag, 14. April 2005 Aufgabe 8 Die nachfolgende Klasse berechnet die Fakultät von n mit Hilfe der rekursiven Methode berechneFakultaet(). a. Wandeln Sie diese Methode in eine iterative Berechnung der Fakultät um (Berechnung mit Hilfe einer Schleife). Sie müssen dabei nur die neue Fassung von berechneFakultaet() angeben. (7 P.) b. Benennen Sie Schwächen der Klasse Fakultaet (4 P.) class Fakultaet { public static void main(String[] argv) { new Fakultaet (argv[0]); } Fakultaet (String dieEingabe) { System.out.println( berechneFakultaet( Integer.parseInt(dieEingabe))); } long berechneFakultaet(int Fakultaet) { if(Fakultaet == 0) { return 1; } else { return Fakultaet * berechneFakultaet(Fakultaet - 1); } } } 4 11 P. Klausur Einführung OO / Java Sommersemester 2005 Donnerstag, 14. April 2005 Aufgabe 9 Zwischen Klassen und Schnittstellen sind Vererbungsbeziehungen möglich. Die Pfeile zwischen Klassen und Schnittstellen stehen für eine Vererbungsbeziehung (implements bzw. extends). Diagramm A Diagramm B Diagramm C Welche der Diagramme (A, B, C) stellen in Java zulässige Vererbungsbeziehungen dar? (4 P.) Welche Fehlerarten treten auf? Bei welchen Beziehungen? (4 P.) 5 8 P.