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

Ähnliche Dokumente
Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr.

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Threads, Serverprozesse und Benachrichtigungen

Kapitel 6. Vererbung

Kapitel 6. Vererbung

5. Abstrakte Klassen

Kapitel 6. Vererbung

Vererbung & Schnittstellen in C#

Graphische Benutzungsoberflächen

Programmieren in Java

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Java: Vererbung. Teil 3: super()

Einstieg in die Informatik mit Java

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

3. Konzepte der objektorientierten Programmierung

Schritt 1 - Ein Spielfeld

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

Kapitel 19: Klassen und Unterklassen

Innere Klassen in Java

Graphic Coding. Klausur. 9. Februar Kurs A

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

Objektorientierte Software-Entwicklung

Institut fu r Informatik

Benutzeroberflächen. Java Teil 4

Musterlösungen zur Klausur Informatik 3

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Nachholklausur (6 ECTS) Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname... Matrikelnummer... Studienfach...

Algorithmen und Datenstrukturen 07

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

SWT. -The Standard Widget Toolkit- Inhaltsverzeichnis. Thomas Wilhelm SWT. 1. Was ist SWT?

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

3 Objektorientierte Konzepte in Java

Synchronisation in Java. Invisible Web

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

Probeklausur: Programmierung WS04/05

3 Objektorientierte Konzepte in Java

2A Basistechniken: Weitere Aufgaben

Klausur vom 14. Juni Informatik 4

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Grafische Benutzeroberflächen mit Swing

Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

2.2 Prozesse in Java

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Eignungstest Mathematik

GUI Programmierung mit JAVA Swing

GUI Programmierung in Java

Typumwandlungen bei Referenztypen

Teil 1: Grundeigenschaften von Rechnern und Software

Java Einführung Methoden in Klassen

Parallele Programmierung in Java

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Java Einführung Abstrakte Klassen und Interfaces

Java-Programmierung. Remote Method Invocation - RMI

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Folge 18 - Vererbung

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Nachholklausur (9 ECTS) Einführung in die Informatik: Programmierung und Software-Entwicklung. Nachname... Vorname... Matrikelnummer... Studienfach...

5.6 Vererbung. Vererbung

C# im Vergleich zu Java

Java - Programmierung - Objektorientierte Programmierung 1

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Abschnitt 9: Schnittstellen: Interfaces

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

4. AuD Tafelübung T-C3

Mobile und Verteilte Datenbanken

Datenbankanwendungsprogrammierung Crashkurs Java

Grundlagen Programmierung

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Datum, Uhrzeit: , Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:...

Objektorientierte Programmierung. Kapitel 12: Interfaces

Programmierkurs Java

Praktikum Informatik - 1

1. Grundlegende Konzepte in Java (6 Punkte)

BEISPIELKLAUSUR Softwareentwicklung:

Ereignisbehandlung 21

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Software Engineering Klassendiagramme Einführung

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Java Real-Time Specification

1 Polymorphie (Vielgestaltigkeit)

Client-Server-Beziehungen

von Anja Austermann Drag and Drop

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Große Übung Praktische Informatik 1

Praktikum: Objektorientierte Programmierung mit Java

PIWIN 1 Übung Blatt 5

Objektorientierte Programmierung

Verteilte Systeme CS5001

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2005/2006

Java für Computerlinguisten

Java Schulung (Java 2 Java Development Kit 5 / 6)

1 Verschlüsselung nach Caesar

Transkript:

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober 2001 Stefan Holland Informatik II Hinweise: Klausur II Verwenden Sie für Ihre Lösungen ausschließlich den Platz unterhalb der jeweiligen Aufgabe. Bei den Multiple Choice-Aufgaben genügt es, die richtigen Antworten anzukreuzen. Die Klausur besteht aus fünf Aufgaben: 1. Multiple Choice 2. Vererbung (konzeptionelle Aufgabe, Programmieraufgabe) 3. Implementierung einer sortierten Liste (Programmieraufgabe) 4. Implementierung eines Applets (Programmieraufgabe) 5. Synchronisation mit Threads (Programmieraufgabe) Die Bearbeitungszeit beträgt 120 Minuten. Füllen Sie folgende Felder leserlich aus: Name Vorname Matrikelnummer Punkte: Aufgabe 1 Aufgabe 2 Aufgabe 3 Aufgabe 4 Aufgabe 5 P Note

Aufgabe 1 (5 Punkte): Multiple Choice Kreuzen Sie für jede Aussage Richtig oder Falsch an. Pro Teilaufgabe gibt es dabei einen halben Punkt. (a) Wenn ein Thread seine run()-methode abgearbeitet hat, kann auf dem zugehörigen Thread-Objekt keine Methode mehr aufgerufen werden. (b) Abstrakte Methoden sind automatisch immer final. (c) Im Abstract Window Toolkit (AWT) besitzt eine Komponente der graphischen Benutzeroberfläche auf jeder Plattform dasselbe Erscheinungsbild. (d) In Java kann es passieren, dass zwei verschiedene Threads gleichzeitig den Code einer synchronisierten Methode ausführen. (e) Auf einem Objekt O kann eine Methode ausgeführt werden, obwohl der Konstruktor von O noch nicht zu Ende ausgeführt ist. (f) Die Container-Klasse im AWT ist von der Klasse Component abgeleitet. (g) Methoden einer Klasse K mit dem Modifikator protected sind nur in Unterklassen von K und innerhalb der Klasse K verfügbar. (h) In UML modellierte Mehrfachvererbung kann nicht direkt in Java umgesetzt werden. (i) Von einer Schnittstelle können nur abstrakte Objekte erzeugt werden. (j) Ein Applet kann nur die Methoden haben, die von der Klasse java.awt.applet geerbt sind.

Aufgabe 2 (9 Punkte): Vererbung Gegeben sind die Begriffe Körper, Pyramide, Rechteck, Fläche, Kugel, Polygon (Vieleck), Würfel, Kreis, Quader, Punkt und Ellipse. Jeder dieser Begriffe wird dabei durch eine Klasse modelliert. (a) Erstellen Sie einen Graphen, der die ist-ein Beziehung zwischen den obigen Begriffen wiedergibt. In diesem geht eine Kante von A nach B, falls gilt: B ist ein A. (b) Betrachten Sie folgenden Ausschnitt aus einer Java-Implementierung: class Ellipse... protected float radius1, radius2; protected Punkt mittelpunkt; public Ellipse (Punkt p, float r1, float r2) radius1 = r1; radius2 = r2; mittelpunkt = p; public void zeichne()... class Kreis extends Ellipse public Kreis (Punkt p, float r1, float r2) super(p,r1,r2); Erklären Sie kurz, welches Problem hier auftreten kann. Hinweis: p r r2 r1 p Kreis Ellipse (c) Skizzieren Sie analog zu obigem Programmfragment eine Implementierung von Kreis und Ellipse, bei der der Kreis die Ober- und Ellipse die Unterklasse bildet.

Aufgabe 3 (9 Punkte): Sortierte Liste Es soll eine Klasse SortedList von Elementen des Typs ListNode (bzw. einer Unterklasse) implementiert werden. Gehen Sie dazu folgendermaßen vor: (a) Programmieren Sie zunächst die abstrakte Klasse ListNode inklusiv der Methode lessthan(...). (b) Implementieren Sie die Klasse SortedList einschließlich Konstruktor(en) und die Methoden insert(...), delete(...) und print(...). (c) Leiten Sie von ListNode zwei Unterklassen für die Verwaltung von ganzen Zahlen und Zeichenketten ab. (d) Schreiben Sie zu ListNode eine main()-methode, in der Sie die Methoden der Klasse ListSort mit Elementen der Unterklasse für Zahlen austesten.

Aufgabe 4 (10 Punkte): Applet Es soll ein Applet programmiert werden, daß ein Balkendiagramm zeichnet. Das Balkendiagramm soll die Anzahl der Ausprägungen von Farben wiedergeben, wobei die Höhe (=Anzahl Pixel) eines Balkens die Anzahl des Auftretens der jeweiligen Farbe angibt. Farbe Anzahl gelb 120 rot 80 blau 140 grün 30 Dabei soll jeder Balken in der Farbe dargestellt werden, die er repräsentiert und auf einer Achse/Linie liegen. Wenn der Mauszeiger bei einem Mausklick über einem Balken liegt, soll die Anzahl der Farben in diesem Balken in einem Textfeld ausgegeben werden. Das Applet sollte etwa folgendermaßen aussehen: Hinweise HTML-Code für das Applet ist nicht nötig. Denken Sie daran, dass der Ursprung einer graphischen Komponente (z.b. Balken) links oben ist.

Aufgabe 5 (13 Punkte): Synchronisieren von Threads Bei der Einsichtnahme für die Klausur Informatik II im Kaffeeraum dürfen maximal fünf Studierende gleichzeitig Einsicht nehmen. Zwischendurch soll der Kaffeeraum gereinigt werden. Das Reinigungspersonal darf den Raum aber erst betreten, wenn keine Studierenden mehr im Raum sind. Umgekehrt gilt, dass der Raum während der Reinigungsarbeit nicht benutzt werden darf. Das Reinigungspersonal soll bevorrechtigt sein, d.h. wenn das Reinigungspersonal wartet, dürfen keine Studenten den Kaffeeraum betreten. Schreiben Sie dazu eine Klasse Kaffeeraum, die die Methoden beginneinsicht, endeeinsicht, beginnreinigung und endereinigung implementiert. Verwenden Sie geeignete Java-Synchronisationsmechanismen, um obige Bedingungen zu erfüllen. Die folgende Klasse stellt ein Testprogramm für die Klasse Kaffeeraum dar. public class Putztrupp extends Thread private Kaffeeraum kaffeeraum; public Putztrupp(Kaffeeraum raum) kaffeeraum = raum; public void run() try while(true) sleep(20000); // Putze woanders System.out.println("Putztrupp moechte in Kaffeeraum"); kaffeeraum.beginnreinigung(); System.out.println("Putztrupp betritt Kaffeeraum"); sleep(3000); // Putze Kaffeeraum kaffeeraum.endereinigung(); System.out.println("Putztrupp verläßt Kaffeeraum"); catch (InterruptedException x) public static void main(string [] args) Kaffeeraum raum = new Kaffeeraum(); StudentenGenerator studenten = new StudentenGenerator(raum); Putztrupp putztrupp = new Putztrupp(raum); studenten.start(); putztrupp.start(); Die main()-methode könnte prinzipiell natürlich auch in einer eigenen Klasse sein. Implementieren Sie die Klassen StudentenGenerator und Student, wobei der StudentenGenerator eine unendliche Menge von Studenten mit zufälligem Zeitabstand erzeugt. Die Klasse Student soll analog zur Klasse Putztrupp so definiert sein, dass er seine Klausur durchsieht und danach wieder geht.