Matrikelnummer: 1 Aufgabe 1: Quickies (30 Punkte) a) Wird das folgende Programm von einem Java-Übersetzer ohne Beanstandungen übersetzt? Falls nicht,

Ähnliche Dokumente
5. Lesen Sie vor der Bearbeitung einer Aufgabe den gesamten Aufgabentext sorgfältig durch!

Lesen Sie zuerst die Hinweise auf der Rückseite!

Lesen Sie zuerst die Hinweise auf der Rückseite!

Lesen Sie zuerst die Hinweise auf der Rückseite!

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

Lesen Sie zuerst die Hinweise auf der Rückseite!

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Allgemeine Hinweise:

Lesen Sie zuerst die Hinweise auf der Rückseite!

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Vorkurs Informatik WiSe 15/16

Objekt-Orientierte Programmierung. II/Wb17

1 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Die Klasse java.lang.object. Thorsten Treffer

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

Probeklausur: Programmierung WS04/05

Algorithmen und Datenstrukturen 07

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Kurs Einführung in die objektorientierte Programmierung (Kursdurchführung des Sommersemester 2015) Hauptklausur am

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Klausur Grundlagen der Programmierung

Klausur: Java (Liste P)

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Lesen Sie zuerst die Hinweise auf der Rückseite!

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Kurs Einführung in die objektorientierte Programmierung (Kursdurchführung des Sommersemester 2017) Klausur am

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Prof. Dr. Uwe Schmidt. 21.August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211)

Einführung in die Programmierung

14 Abstrakte Klassen, finale Klassen, Interfaces

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. Juni 2004

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Das Interface-Konzept am Beispiel der Sprache Java

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Allgemeine Informatik II SS :30-13:30 Uhr

Die abstrakte Klasse Expression:

Technische Universität Braunschweig

Klausur zur Vorlesung Informatik 1 im Wintersemester 2014/2015 am 18. Februar Bearbeitungszeit: 90 Minuten Gesamtpunktezahl: 90 Punkte

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Allgemeine Informatik II SS :30-11:30 Uhr

Einstieg in die Informatik mit Java

Semestralklausur Informatik I - Programmierung

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006

Klausur Software-Entwicklung März 01

Allgemeine Hinweise:

Javakurs für Anfänger

Matrikelnummer:

Kurs Einführung in die objektorientierte Programmierung (Kursdurchführung des Sommersemester 2016) Klausur am

UNIVERSITÄT SIEGEN Fachbereich 12, Elektrotechnik und Informatik Fachgruppe Betriebssysteme / verteilte Systeme

Klausurdauer: 3 Stunden. Lesen Sie zuerst die Hinweise auf der Rückseite!

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Technische Universität Braunschweig

Aufgaben NF 11; Seite 1

Aufgabe 1: Quer durch Java (4 Punkte) super abstract abstract protected

Streichen Sie bitte eine der Aufgaben 3-5!

Bachelorprüfung: Objektorientierte Softwareentwicklung

hue13 January 30, 2017

Einführung in die Programmierung mit Java

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Einführung in die Informatik 1

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

Programmieren 2 Java Überblick

Informatik II. Semesterklausur

Lesen Sie zuerst die Hinweise auf der Rückseite!

Fakultät IV Elektrotechnik/Informatik

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur Algorithmen und Datenstrukturen I SS 03

Probeklausur zur Vorlesung

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Testklausur 2 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Algorithmen und Datenstrukturen

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

Kapitel 5: Interfaces

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Objektorientierte Programmierung Studiengang Medieninformatik

Vererbung, Polymorphie

Transkript:

Wir begrüßen Sie zur Klausur zum Kurs 1618 " Einführung in die objektorientierte Programmierung. Beachten Sie: Dies ist NICHT die Klausur zum Kurs 1814. Bitte lesen Sie die folgenden Hinweise sorgfältig und vollständig durch, bevor Sie mit der Bearbeitung der Klausur beginnen! 1. Prüfen Sie die Vollständigkeit Ihrer Unterlagen. Die Klausur umfasst: 1 Deckblatt, diese Hinweise und 4 Aufgaben auf Blatt 1 bis Blatt 5 (nur einseitig bedruckt). Geben Sie diese Unterlagen zusammen mit Ihren Lösungen später bitte vollständig ab, einschließlich Aufgabenstellung! 2. Füllen Sie jetzt bitte zuerst das Deckblatt aus! 3. Schreiben Sie Ihre Lösungen mit Kugelschreiber oder Füllfederhalter (kein Bleistift)! Sie können eigenes Papier benutzen. Schreiben Sie unbedingt auf jedes Blatt, auf dem sich Teile Ihrer Lösungen befinden, die Aufgabennummer und Ihre Matrikelnummer! Kreuzen Sie die bearbeiteten Aufgaben auf dem Deckblatt an! 4. Als Hilfsmittel sind beliebige schriftliche Unterlagen (z.b. Basistext, Leittexte, Einsendeaufgaben, Lösungsvorschläge) zugelassen, dagegen keinerlei elektronische (z.b. Laptops, Taschenrechner, Mobiltelefone!). 5. Lesen Sie vor der Bearbeitung einer Aufgabe den gesamten Aufgabentext sorgfältig durch. 6. Achten Sie darauf, dass Sie bei Programmieraufgaben Ihre Lösungen ausführlich und sinnvoll (keine bloße Beschreibung der Sprachkonstrukte) kommentieren! Bei fehlender Kommentierung oder Unleserlichkeit der Programme werden Punkte abgezogen. 7. Es sind maximal 100 Punkte erreichbar. Wenn Sie mindestens 40 Punkte erreichen, haben Sie die Klausur mit Sicherheit bestanden. 8. Leider können wir noch nicht abschätzen, wann die Korrektur abgeschlossen sein wird. Falls Sie die Klausur Ende September noch nicht zurück erhalten haben, sollten Sie bei uns nachfragen. 9. Legen Sie jetzt noch Ihren Studentenausweis und einen amtlichen Lichtbildausweis bereit, dann kann die Arbeit beginnen. Wir wünschen Ihnen viel Spaß und viel Erfolg beim Bearbeiten der Klausur!

Matrikelnummer: 1 Aufgabe 1: Quickies (30 Punkte) a) Wird das folgende Programm von einem Java-Übersetzer ohne Beanstandungen übersetzt? Falls nicht, warum? Begründen Sie Ihre Antwort! (3 Punkte) class Peter void Arnd(String Wilfried) /*... */ class Joerg extends Peter private void Arnd(String Monika) /*... */ b) Beschreiben Sie möglichst genau, aus welchen Teilen die folgende Java-Anweisung aufgebaut ist und was diese Teile bedeuten! System.err.print(); (3 Punkte) c) Zeichnen Sie das Objektgeflecht, das entstanden ist, wenn die Ausführung der main- Methode die markierte Stelle erreicht hat! (6 Punkte) class Geflecht Geflecht a,b,c; public synchronized static void main(string[] Ute) Geflecht u = new Geflecht(); Geflecht v = new Geflecht(); Geflecht w = new Geflecht(); u.a = v; v.a = w; w.a = u.a; v.b = u; u.b = v; v.c = v.a; w.c = u; u.c = v.b; /* Markierung */

Matrikelnummer: 2 d) Betrachten Sie das folgende Java-Programm: class A void m() if(this instanceof A) System.out.println("Ich bin ein A Objekt"); if(this instanceof B) System.out.println("Ich bin ein B Objekt"); class B extends A void m() super.m(); public static void main(string[] s) A a = new B(); a.m(); Was wird bei der Ausführung der main-methode ausgegeben? Begründen sie Ihre Antwort! e) Was wird ausgegeben, wenn die main-methode des folgenden Programms ausgeführt wird? Begründen Sie ihre Antwort! class K K() System.out.println("K"); public static void main(string[] oho) new M(); class L extends K L() System.out.println("L"); class M extends L M() System.out.println("M"); f) Schreiben Sie ein kleines Programmbeispiel, bei dessen Ausführung dynamisch gebunden wird! Erklären Sie genau, an welcher Stelle der Programmausführung dynamisch gebunden wird! Ihr Beispiel soll übersetzbar und ausführbar sein. (5 Punkte) g) Schreiben Sie ein kleines Programmbeispiel, an dessen Ausführung man man erkennen kann, dass der Attributzugriff in Java nicht dynamisch gebunden wird! Ihr Beispiel soll übersetzbar und ausführbar sein. (5 Punkte)

Matrikelnummer: 3 Aufgabe 2: Ein Aufzählungstyp (25 Punkte) a) Betrachten Sie das folgende Programmfragment eines Aufzählungstypen für Wochentage: public class Wochentag private int tag; public Wochentag()... public void settag(int i) throws KeinTagException... public int gettag()... public void naechstertag()... public void vorhergehendertag()... public String tostring()... Aufgabe: Vervollständigen Sie die Implementierung so, dass die folgenden Eigenschaften gelten! Vereinbaren Sie bei der Implementierung in der Klasse Wochentag keine neuen Attribute! 1. Der Konstruktor soll ein Wochentag-Objekt erzeugen und den aktuellen Wochentag auf Montag setzen. (1 Punkte) 2. Die Methode naechstertag() soll ein Wochentag-Objekt auf den folgenden Wochentag setzen. (Die Wochentage werden zyklisch behandelt!) (2 Punkte) 3. Die Methode vorhergehendertag() soll ein Wochentag-Objekt auf den vorhergehenden Wochentag setzen. (2 Punkte) 4. Die Methode settag(int i) soll den Wochentag des Wochentag-Objektes setzen (0 für Montag, 1 für Dienstag, usw.). Falls ein int-wert kleiner Null oder größer sechs übergeben wird, soll eine KeinTagException geworfen werden. Vereinbaren Sie eine Klasse KeinTagException. KeinTagException soll Subtyp von Exception sein und die gesamte Funktionalität von Exception erben. 5. Die Methode gettag() soll den Tag codiert als int-wert als Ergebnis liefern. (2 Punkte) 6. Die tostring()-methode soll den Namen des Wochentages als String zurückliefern. b) Leiten sie von der Klasse Wochentag eine Klasse Werktag mit den unten angegebenen Eigenschaften ab, deren Objekte nur die Tage von Montag bis Samstag aufzählen! (d.h. nach einem Samstag folgt ein Montag und vor einem Montag ist ein Samstag.) (10 Punkte) ffl Die Klasse Werktag soll keine weiteren Attribute vereinbaren. ffl Sorgen Sie dafür, dass Sie die Methoden naechstertag(),vorhergehendertag() und settag(int i) entsprechend arbeiten!

Matrikelnummer: 4 Aufgabe 3: OO-Programmierung (25 Punkte) Gegeben sei das folgende Programmfragment: interface Container public void replaceelementat(int i, Object o) throws ContainerException; public Object getelementat(int i) throws ContainerException; public int getlength(); interface Comparable public int compareto(object o); class ContainerException extends Exception class Sort public static void sort(container c) /* hier erweitern */ Objekte des Typs Container können Referenzen auf Objekte speichern. In einem Container- Objekt c sind c.getlength()-viele Objekte an den Stellen 0 bis c.getlength()-1 gespeichert. ffl Die replaceelementat(int i, Object o)-methode ersetzt das Objekt an der Stelle i des Containers durch o. Eine Ausnahme wird erzeugt, falls i nicht gültig ist. ffl Die getelementat(int i)-methode liefert das in einem Container an Stelle i gespeicherte Objekt. Eine Ausnahme wird erzeugt, falls i nicht gültig ist. ffl getlength() liefert die Anzahl der im Container enthaltenen Objekte. Objekte des Typs Comparable können mit der compareto-methode verglichen werden. Seien o1 und o2 Variablen mit Referenzen auf Objekte von Typ Comparable. Es gilt ffl o1.compareto(o2) < 0, falls o1 < o2, ffl o1.compareto(o2) == 0, falls o1 = o2 und ffl o1.compareto(o2) > 0, falls o1 > o2. Aufgabe: Ergänzen Sie an der gekennzeichneten Stelle die Methode sort der Klasse Sort so, dass die sort-methode die in dem übergebenen Container-Objekt enthaltenen Objekte nach einem beliebigen Verfahren aufsteigend sortiert! Sie können davon ausgehen, dass in dem übergebenen Container-Objekt nur Objekte des Typs Comparable enthalten sind.

Matrikelnummer: 5 Aufgabe 4: Threads (20 Punkte) a) Jedes Thread-Objekt hat eine public void run() und eine public void start()- Methode. Beschreiben Sie die unterschiedliche Bedeutung der beiden Methoden! (5 Punkte) b) Betrachten Sie das folgende Programm, das die Implementierung einer Speicherzelle für int-werte darstellt: class Speicherzelle private int wert; public synchronized void setwert(int w ) wert = w; public synchronized int getwert() return wert; public synchronized void swapwert(speicherzelle s) int h = s.getwert(); s.setwert(wert); setwert(h); Führen mehrere Threads den obigen Programmcode gleichzeitig aus, so kann es zu einer Verklemmung kommen. Beschreiben Sie eine solche Situation anhand eines konkreten Beispiels, in dem nur die swapwert-methode aufgerufen wird! (15 Punkte)