Objektorientierte Programmierung Einstufungstest

Ähnliche Dokumente
EINFÜHRUNG IN DIE PROGRAMMIERUNG

Einstieg in die Informatik mit Java

Programmieren in Java -Eingangstest-

Einstieg in die Informatik mit Java

Übung Informatik I - Programmierung - Blatt 8

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

Probeklausur zur Vorlesung

Programmiertechnik Klassenvariablen & Instantiierung

JAVA für Nichtinformatiker - Probeklausur -

Computeranwendung und Programmierung (CuP)

Abgabe: (vor 12 Uhr)

boolean ispalindrome = word.equalsignorecase(reverse.tostring());

Objektorientierte Programmierung Studiengang Medieninformatik

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

Interface. So werden Interfaces gemacht

Prüfung Softwareentwicklung II (IB)

Handbuch konsultieren!

Probeklausur: Programmierung WS04/05

Informatik Hochschule Mainz Geoinformatik und Vermessung. Wiederholung. Frohes Fest und Guten Rutsch!

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Aufgabenblatt: Arrays - zweidimensional - Seite 1

Ausnahmebehandlung in Java

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

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

Fragenkatalog ESOP WS 16/17

Welche Informatik-Kenntnisse bringen Sie mit?

2 Programmieren in Java I noch ohne Nachbearbeitung

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

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1

Beispielprüfung CuP WS 2015/2016

Computeranwendung und Programmierung (CuP)

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Intensivübung zu Algorithmen und Datenstrukturen

Wiederholungsklausur "ADP" WS 2016/2017

Wie entwerfe ich ein Programm?

Tutoraufgabe 1 (Implementierung eines ADTs):

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

Semestralklausur Informatik I - Programmierung

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Computeranwendung und Programmierung (CuP)

Übung zur Vorlesung Programmierung

Java Einführung Exception Handling. Kapitel 17

Programmierung für Mathematik HS11

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

Objektorientierte Programmierung Studiengang Medieninformatik

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Basispruefung Herbst 2016/ Einführung in die Programmierung

Klausur Software-Entwicklung März 01

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Grundlagen der Modellierung und Programmierung, Übung

System.out.println("TEXT");

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

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

Verkettete Datenstrukturen: Listen

Klausur Software-Entwicklung September 00

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

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

Info B VL 8: Abstrakte Klassen & Interfaces

Universität Karlsruhe (TH)

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

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

13. Bäume: effektives Suchen und Sortieren

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Programmierkonventionen - 1 -

Transkript:

Seite 1 von 11 Objektorientierte Programmierung Name: Zeit: 120 Minuten (2 Stunden) Programmiersprache Java 8 Nr. Aufgabe 1 Theoriemix 20 2 Matrix-Transposition 20 3 Organigramm 20 4 Vorlesungskalender 20 5 Textanalyse 20 6 Huffman-Codierung 20 max. Punkte Total 120 Punkte Seite 1 von 11

Seite 2 von 11 Aufgabe 1: Theoriemix a) (4P) Welchen Wert und Typ ergeben folgende Ausdrücke? Geben Sie an, falls es dabei Fehler gibt. Ausdruck Ergebniswert Ergebnistyp 1 + 2 * 3 1 < 2-3 / 2-3.0 / 2 1 / 0 1 / 0.0 "ABC".equals("abc") '9' - '0' b) (4P) Bestimmen Sie die Variablenzustände nach den folgenden Anweisungen. int a = 0, b = 0, c = 0; boolean d = (a++ > 0 && b-- < 0) --c < 0; Variable a Zustand am Schluss b c D c) (8P) Gegeben sind zwei Klassen. class Figure { public void surround(figure other) { /* Methode 1 */ } } public void surround(rectangle other) { /* Methode 2 */ } class Rectangle extends Figure { @Override public void surround(figure other) { /* Methode 3 */ } } @Override public void surround(rectangle other) { /* Methode 4 */ } Welche der obigen Methoden wird nachfolgend jeweils aufgerufen? Begründen Sie kurz. Rectangle a = new Rectangle(); Rectangle b = new Rectangle(); a.surround(b); Methode 1 Methode 2 Methode 3 Methode 4 Grund: Seite 2 von 11

Seite 3 von 11 Figure a = new Rectangle(); Rectangle b = new Rectangle(); a.surround(b); Methode 1 Methode 2 Methode 3 Methode 4 Grund: Rectangle a = new Rectangle(); Figure b = new Rectangle(); a.surround(b); Methode 1 Methode 2 Methode 3 Methode 4 Grund: Figure a = new Rectangle(); Figure b = new Rectangle(); a.surround(b); Methode 1 Methode 2 Methode 3 Methode 4 Grund: d) (4P) Was geschieht bei der Ausführung der Methode test(). Geben Sie die einzelnen Schritte an. void test() { int[] array = null; try { System.out.println("first"); System.out.println(array[0]); System.out.println("last"); System.out.println(array[array.length - 1]); } catch(nullpointerexception e) { System.out.println("null"); } catch(arrayindexoutofboundsexception e) { System.out.println("empty"); } finally { System.out.println("length"); System.out.println(array.length); } } Seite 3 von 11

Seite 4 von 11 Aufgabe 2: Matrix-Transposition Eine Matrix-Transposition spiegelt Zeilen und Spalten, d.h. die erste Spalte wird die erste Zeile, die zweite Spalte die zweite Zeile und so weiter. Beispiel: Vorher 1 2 3 4 5 6 Nachher 1 4 2 5 3 6 Implementieren Sie eine Methode, welche eine Matrix transponiert. Die Matrix kann als int[][] repräsentiert werden. Behandeln Sie Fehlerfälle bei einem ungültigen Matrix-Argument. Seite 4 von 11

Aufgabe 3: Organigramm Objektorientierte Programmierung Ein Organigramm regelt die Vorgesetzen-Hierarchien in einem Unternehmen. Seite 5 von 11 Beispiel: Anna Meier Geschäftsführung Peter Müller Leiter Entwicklung Claudia Kaufmann Leiterin Verkauf Reto Zahler Buchhaltung Klaus Schmid Ingenieur Frank Schnell Senior-Verkäufer Pia Schneider Ingenieurin Joe Do Praktikant - Peter Müller ist direkter Vorgesetzter von Klaus Schmid und direkter Unterstellter von Anna Meier. Hinweis: Ihre Lösung muss allgemein sein und nicht nur das Beispiel unterstützen a) (5P) Designen Sie Klasse(n), um Organigramme zu verwalten. Konstruktoren und Getter/Setter können Sie weglassen. Seite 5 von 11

Seite 6 von 11 b) (8P) Für einen Angestellten sollen alle seine direkten und indirekten Unterstellten gezählt werden. Implementieren Sie eine Methode. c) (7P) Für einen Angestellten sollen alle seine direkten und indirekten Vorgesetzten als Liste (von unten nach oben) bestimmt werden. Implementieren Sie eine Methode. Seite 6 von 11

Seite 7 von 11 Aufgabe 4: Vorlesungskalender An der Hochschule gibt es verschiedene Studienprogramme: Bachelor, Master sowie spezielle Nachdiplomstudien (Advanced Studies). Im Rektoratssystem werden die verschiedenen Studienprogramme (Degrees) per Enum-Typ dargestellt: enum Degree { Bachelor, Master, AdvancedStudies } class Lecture { Lecture(Degree degree, String name) { } } Degree getdegree() { } String getname() { } a) (10P) Die Vorlesungsdauer variiert nach Studienprogramm (siehe Tabelle). Schreiben Sie eine neue Methode getnofweeks() für die Klasse Lecture, welche die Anzahl Wochen zurückgibt. Studienprogramm Anzahl Wochen Bachelor 14 Master 18 AdvancedStudies 6 b) (10P) Das Design mit dem Enum-Typ ist unbefriedigend. Entwerfen Sie eine Alternative mit Typ- Polymorphismus. Das Ziel ist es, dass es kein if oder switch innerhalb getnofweeks() braucht. Irrelevante Code-Teile können Sie einfach auslassen. Seite 7 von 11

Seite 8 von 11 Seite 8 von 11

Seite 9 von 11 Aufgabe 5: Textanalyse Eine Textdatei soll analysiert werden. Pro vorkommendes Textzeichen (inkl. Leerzeichen und Sonderzeichen) soll bestimmt werden, wie viele Male es vorkommt. Beispiel: This is a text. Analyze it! Vorkommen: 'T' -> 1 'h' -> 1 'i' -> 3 's' -> 2 'a' -> 2 't' -> 3 'e' -> 2 '. ' -> 1 Und so weiter. Programmieren Sie eine Logik, welche eine beliebige Textdatei einliest und die Zeichenvorkommen darin berechnet. Encoding und IOException können Sie ignorieren. Java API Auszug Klasse FileReader FileReader(String path) throws IOException int read() throws IOException void close() Konstruktor. Öffnet Textfile zum Lesen. Eine positive Rückgabe codiert ein Textzeichen. Rückgabe -1 bedeutet end of file. Textstrom schliessen. Seite 9 von 11

Seite 10 von 11 Aufgabe 6: Huffman-Codierung Angenommen, man kennt für jeden Buchstaben die Häufigkeit seines Vorkommens. Beispiel (mit beschränkter Anzahl Buchstaben): Buchstabe Häufigkeit e 0.4 (d.h. 40%) t 0.3 (d.h. 30%) s 0.2 (d.h. 20%) r 0.1 (d.h. 10%) Dann lässt sich daraus ein Huffman-Baum als Objektstruktur erstellen. Huffman-Bäume sind binär, d.h. Zwischenknoten haben immer genau zwei Unterknoten. 1.0 e 0.4 0.6 t 0.3 0.3 s 0.2 r 0.1 Hinweis: Ihre Lösung muss allgemein sein und nicht nur das Beispiel unterstützen a) (5P) Designen Sie Klasse(n) für einen Huffman-Baum. Konstruktoren und Getter/Setter können Sie weglassen. Seite 10 von 11

Seite 11 von 11 b) (15P) Entwickeln Sie eine Logik, welche einen Huffman-Baum konstruiert. o Die Häufigkeit von Buchstaben sei in einer Map<Character, Double> gegeben (Abbildung jedes Buchstabens auf seine Häufigkeit). o Zu Beginn gibt es pro Buchstaben einen Teilbaum bestehend aus nur einem Knoten (dem Buchstaben und der Häufigkeit seines Buchstabens). o Die zwei Teilbäume mit den kleinsten Häufigkeiten werden zu einem neuen Teilbaum verschmolzen. Der neue Teilbaum hat die Summe der Häufigkeiten seiner zwei Teilbäume. o Dies wird solange wiederholt, bis es nur noch ein Baum übrigbleibt. Seite 11 von 11