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

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

Informatik II. Semesterklausur

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

Aufgabe 1 (Programmanalyse, Punkte)

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

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Wiederholungsklausur "ADP" WS 2016/2017

Übung Informatik I - Programmierung - Blatt 8

Allgemeine Hinweise:

Kapitel 4: Klassen und Unterklassen

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Einführung in die Programmierung

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

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

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

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

Programmieren in Java

Objektorientierte Programmierung. Kapitel 12: Interfaces

Klausur "ADP" SS 2016

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

ALP II Dynamische Datenmengen Datenabstraktion

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

Objektorientierte Programmierung. Kapitel 14: Interfaces

1. Teilklausur Gruppe A. Bitte in Druckschrift leserlich ausfüllen!

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten. Lesen Sie die Aufgaben jeweils bis zum Ende durch; oft gibt es hilfreiche Hinweise!

Musterlösung Stand: 5. Februar 2009

Verkettete Datenstrukturen: Bäume

Klausur zur Veranstaltung Programmierung (fortgeschrittene Konzepte)

Klausur "ADP" SS 2015

Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor

12 Abstrakte Klassen, finale Klassen und Interfaces

Programmiermethodik 1. Klausur

Kapitel 5: Interfaces

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Klausur Sommersemester 2012 Datenstrukturen und Algorithmen 24. September 2012

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

Algorithmen und Datenstrukturen

Name: Matrikelnr : Aufgabe 1: (ca. 8 Punkte )

Tafelübung 07 Algorithmen und Datenstrukturen

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

14 Abstrakte Klassen, finale Klassen, Interfaces

8 Baum in perfekter Komposition

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

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Einstieg in die Informatik mit Java

Programmierkurs Java

Grundlagen der Informatik 0

Info B VL 14: Java Collections/Reflections

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

Klausur: Java (Liste P)

Einstieg in die Informatik mit Java

Javakurs für Anfänger

Javakurs für Anfänger

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Vererbung, Polymorphie

Programmieren in Java -Eingangstest-

Objektorientierte Programmierung

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

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

Geordnete Binärbäume

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

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

Von der UML nach C++

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

Algorithmen und Datenstrukturen

1 Klassen und Objekte

Kapitel 12: Induktive

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Übung: Algorithmen und Datenstrukturen SS 2007

Einführung in die Programmierung

3 Objektorientierte Konzepte in Java

Klausur Einführung in die Informatik II für Elektrotechniker 16. Juli 2003

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Programmieren 1 09 Vererbung und Polymorphie

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

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

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

Verkettete Datenstrukturen: Listen

Objektorientierte Programmierung Studiengang Medieninformatik

Einführung in die Programmierung

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Institut für Programmierung und Reaktive Systeme 19. August Programmier-Labor. 1. Übungsblatt

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Probeklausur: Programmierung WS04/05

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs Java

Tutoraufgabe 1 (2 3 4 Bäume):

3 Objektorientierte Konzepte in Java

Einstieg in die Informatik mit Java

Informatik Abitur Bayern 2017 / II - Lösung

Präsentation Interfaces

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einführung in die Informatik 1

Transkript:

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli 2001 Stefan Holland Informatik II Hinweise: Klausur 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. Objektorientierte Programmierung und Java (Multiple Choice) 2. Entwicklung einer Klassenhierarchie (konzeptionelle Aufgabe, Programmieraufgabe) 3. Implementierung eines Binärbaums (Programmieraufgabe) 4. Implementierung einer Personenverwaltung (Programmieraufgabe) 5. Einlesen von URLs 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 die richtige(n) Antworte(n) an. Pro Teilaufgabe gibt es einen Punkt, falls alle richtigen Antworten angekreuzt und alle falschen Antworten nicht angekreuzt sind. (a) Eine Java-Klasse mit dem Modifikator final (A) darf kein Interface implementieren. (B) darf keine abstrakten Methoden enthalten. (C) darf keine private Methoden enthalten. (D) darf keine private Attribute enthalten. (b) Ein Java-Attribut mit dem Modifikator static (A) wird für jedes Objekt höchstens 1 mal erzeugt. (B) wird für jedes Objekt mindestens 1 mal erzeugt. (C) wird für jedes Objekt genau 1 mal erzeugt. (D) wird für die gesamte Klasse 1 mal erzeugt. (c) Java-Methoden mit dem Modifikator abstract (A) dürfen keinen Rumpf enthalten. (B) dürfen keine Signatur enthalten. (C) dürfen weder Signatur noch Rumpf enthalten. (D) dürfen nur den Rückgabetyp void haben. (d) Ein Java-Programm, dass nur die Import-Anweisung import java.util.*; enthält (A) darf nicht die Standardklassen aus dem Paket java.lang verwenden. (B) darf die Klasse StringTokenizer verwenden. (C) darf die Klasse StreamTokenizer verwenden. (D) darf die Klasse Hashtable verwenden. (e) Die Java-Klasse Object (A) ist Oberklasse jeder anderen Java-Klasse. (B) ist eine Schnittstelle (Interface), die von jeder Klasse implementiert werden muss. (C) darf nicht Oberklasse einer anderen Klasse sein. (D) ist Oberklasse der Java-Klasse Class.

Aufgabe 2 (9 Punkte): Vererbung (a) Stellen Sie eine Vererbungshierarchie für die Klassen Text, NatuerlichSprachlicherText, ComputerProgramm, DeutscherText, EnglischerText, AssemblerProgramm, ObjektorientiertesProgramm, ProgrammInC++ und ProgrammInJava graphisch dar (Baumstruktur). (b) Überlegen Sie sich, in welchen Klassen die Attribute String text Vector programmier_befehle Vector umlaute Vector modifikatoren definiert werden sollten. Dabei soll die Vererbung möglichst gut ausgenützt werden. (c) Implementieren Sie für die Klassen Text, NatuerlichSprachlicherText, DeutscherText und EnglischerText Konstruktoren. Diese sollen sich soweit wie möglich auf den jeweiligen Oberklassenkonstruktor abstützen und soweit sinnvoll den in (b) angegeben Attributen Werte zuweisen. (d) In welchen Klassen muss die Methode quellcodesyntaxcheck definiert bzw. implementiert werden? Geben Sie die Signaturen der Methode für alle betroffenen Klassen an. Sie können dabei davon ausgehen, dass es mehrere verschiedene Assemblersprachen gibt.

Aufgabe 3 (9 Punkte): Binärer Suchbaum Ein Binärbaum ist folgendermassen definiert: Der leere Baum ist ein Binärbaum. Ein nichtleerer Binärbaum hat genau eine Wurzel. Die Wurzel und alle anderen Knoten haben keinen, einen oder zwei Söhne. Jeder Knoten enthält einen ganzzahligen Schlüssel. Ein binärer Suchbaum besitzt zusätzlich die Suchbaumeigenschaft, d.h. für jeden Schlüssel x gilt: Alle Söhne am linken Teilbaum von x haben nur Schlüssel, die kleiner oder gleich x sind. Alle Söhne am rechten Teilbaum von x haben nur Schlüssel, die größer sind als x. Entwickeln Sie eine Klasse BinaerSuchBaum, die diese Datenstruktur implementiert. Gehen Sie dabei folgendermaßen vor: (a) Schreiben Sie den Klassenrahmen und die globalen Attribute, die für den Binärbaum nötig sind. Schreiben Sie zwei Konstruktoren, die den leeren bzw. den einelementigen Binärbaum erzeugen. Dem zweiten Konstruktor wird dabei ein int als Wurzelelement übergeben. Überlegen Sie sich dabei auch, wie Sie den leeren Baum implementieren! (b) Implementieren Sie eine Methode suchen(int elem), die überprüft, ob ein bestimmtes Element in dem Baum vorkommt. (c) Implementieren Sie das Einfügen eines Schlüssels in einen binären Suchbaum. Die Suchbaumeigenschaft soll dabei natürlich erhalten bleiben. (d) Implementieren Sie die Methode loeschen(), die alle Elemente des Baums entfernt.

Aufgabe 4 (10 Punkte): Personenverwaltung Es soll eine Personenverwaltung in Java implementiert werden. Für die Klasse Person sollen Informationen über Name, Vorname, Alter, Kinder, Vater und Mutter gespeichert werden. Sie können davon ausgehen, dass eine Person durch Name und Vorname eindeutig bestimmt ist. (a) Zeichnen Sie ein UML-Diagramm zur Modellierung dieses Sachverhalts. Eltern-Kind-Beziehungen sollen durch Assoziationen realisiert werden, bei denen auch die Kardinalitäten (mit Begründung!) zu definieren sind. (b) Schreiben Sie die Klasse Person einschließlich der Attribute. Wählen Sie auch geeignete Typen und Modifikatoren. (c) Implementieren Sie eine Methode Vector getkinder(), die die Kinder zu einer Person zurückgibt. (d) Implementieren Sie eine Methode Vector geteltern(), die die Eltern einer Person zurückgibt. (e) Implementieren Sie eine Methode Vector getvorfahren(), die alle (auch die indirekten!) Vorfahren einer Person zurückgibt. (f) Implementieren Sie eine Methode boolean istkonsistent(), die eine Person auf Inkonsistenzen prüft, d.h. es soll false zurückgeben werden, falls deren Kinder nicht diese Person als Vater oder Mutter haben oder umgekehrt falls Vater oder Mutter nicht diese Person als Kind haben. Ansonsten soll true zurückgegeben werden.

Aufgabe 5 (13 Punkte): Einlesen von URLs Es soll die zu einer gegebenen URL gehörende HTML-Seite und die zu deren Links gehörenden HTML-Seiten eingelesen werden. Gehen Sie dabei folgendermaßen vor: (a) Schreiben Sie eine Klasse ReadURL extends Thread, in der eine Methode zum Einlesen einer HTML- Seite aus einer gegebenen URL implementiert ist. Da aus Effizienzgründen auch das gleichzeitige Einlesen mehrerer URLs möglich sein soll, sollen Java-Threads verwendet werden. Denken Sie auch daran, mögliche Exceptions abzufangen. (b) Schreiben Sie eine weitere Klasse Html, die eine Methode String gethtml(string url) enthält, mit der die HTML-Seite einer URL ermittelt wird (verwenden Sie die Klasse ReadURL). (c) Implementieren Sie die Methode Vector getlinks(string inhalt), die mit Hilfe des StringTokenizer alle Links der HTML-Seite inhalt, die auf weitere HTML-Seiten verweisen, zurückgibt. Ein Link ist in HTML stets so aufgebaut: <A HREF="http://www.uni-augsburg.de/"> Text</A>, wobei der Text zwischen den Anführungszeichen den eigentlichen Link (=URL) angibt. Sie dürfen unterstellen, dass A HREF stets einen Link einleitet. (d) Schreiben Sie eine Methode Vector getall(string url), die die zu url gehörenden verlinkten HTML- Seiten zurückliefert. Das Lesen dieser Seiten soll parallel mithilfe der Thread-Methoden start() und join() realisiert werden.