• Keine Ergebnisse gefunden

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Allgemeine Hinweise

1. Die Bearbeitungszeit beträgt 60 Minuten. Sie könne 50 Punkte erreichen.

2. Verwenden Sie für das Lösen der Aufgaben die Programmiersprache Java. Alle gegebenen Code-Fragmente sind ebenfalls in Java verfasst. Halten Sie sich an die bekannten Regeln zur Codequalität.

3. Schreiben Sie Ihren Namen, Vornamen, Studiengang und Ihre Matrikelnum- mer leserlich unten auf jedes Angabenblatt bevor Sie mit der Bearbeitung beginnen! Blätter ohne diese Angaben werden nicht gewertet. Wenn Sie die Rückseite eines Blattes verwenden, notieren Sie dies bitte auf der Vorderseite.

Kennzeichnen Sie eindeutig, zu welcher Aufgabe eine Lösung gehört.

4. Benutzen Sie keine Bleistifte, keine rotschreibenden Stifte und kein TippEx (oder ähnliche Produkte).

5. Die Klausur ist als Closed Book-Klausur angelegt. Sie dürfen keine mitgebrach- ten Quellen oder Notizen zur Bearbeitung der Aufgaben verwenden. Techni- sche Hilfsmittel sind ebenfalls nicht erlaubt.

6. Wenden Sie sich bei Unklarheiten in den Aufgabenstellungen immer an die Klausuraufsicht (Hand heben). Hinweise und Hilfestellungen werden dann, falls erforderlich, offiziell für den gesamten Hörsaal durchgegeben. Aussagen unter vier Augen sind ohne Gewähr.

7. 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.

(2)

Teil 1: Theorie

1) Vergleiche (2 Punkte)

Nennen Sie kurz - ein Wort - die Art des Vergleichs, die mit den folgenden Operato- ren ausgeführt wird.

<=

!=

==

>

2) Klassen und Objekte (4 Punkte)

Beschreiben Sie kurz die BegriffeKlasse undObjekt und erläutern Sie deren Zusam- menhang.

3) Softwareengineering (4 Punkte)

Beschreiben Sie kurz denTop-Down-Ansatz und erläutern Sie in diesem Zusammen- hang das Prinzip derDecomposition.

Seite 2 von 9

Name, Studiengang & Matrikelnummer:

(3)

Teil 2: Codeverständnis

4) Codeanalyse (5 Punkte)

Geben ist die MethodedoStuff(int[] numbers). Beschreiben Sie kurz den Aufbau der Methode und nennen Sie anschließend den wahrscheinlichen Einsatzzweck. Ge- hen Sie davon aus, dass der gegebene Code korrekt ist.

1 p u b l i c int d o S t u f f (int[] n u m b e r s ) {

2 int min = n u m b e r s [0];

3 for (int i = 1; i < n u m b e r s . l e n g t h ; i ++) {

4 if( n u m b e r s [ i ] < min) {

5 min = n u m b e r s [ i ];

6 }

7 }

8 r e t u r n min;

9 }

(4)

5) Fehler finden (5 Punkte)

Finden Sie die Konventionsverstöße, Syntaxfehler und Bugs in der folgenden Metho- de. Markieren Sie die fehlerhaften Stellen im Code und beschreiben Sie den jeweili- gen Fehler kurz unter Angabe der Zeilennummer. Schlecht gewählte Bezeichner für Methoden und Variablen sowie fehlerhafte Einrückungen zählen nicht als Fehler. Im Code sind fünf Fehler zu finden.

1 p u b l i c c l a s s S t r i n g R e v e r s e r {

2

3 p r i v a t e s t a t i c f i n a l S t r i n g d e f a u l t R e s u l t = " ";

4 p r i v a t e S t r i n g b a s e S t r i n g ;

5

6 p u b l i c S t r i n g R e v e r s e r (S t r i n g b a s e S t r i n g ) {

7 b a s e S t r i n g = b a s e S t r i n g ;

8 }

9

10 p u b l i c int g e t B a s e S t r i n g () {

11 r e t u r n b a s e S t r i n g ;

12 }

13

14 p u b l i c S t r i n g g e t R e v e r s e d S t r i n g () {

15 S t r i n g r e s u l t = d e f a u l t R e s u l t ;

16 for(int i = b a s e S t r i n g . l e n g t h () ; i >= 0; i - -) {

17 r e s u l t += b a s e S t r i n g [ i ];

18 }

19 r e t u r n r e s u l t ;

20 }

21

22 }

Seite 4 von 9

Name, Studiengang & Matrikelnummer:

(5)

Teil 3: Code implementieren

6) Film-Datenbank (15 Punkte)

Geben sind die abstrakte BasisklasseItemsowie das Enum Type. Entwerfen Sie mit diesen Vorgaben weitere Klassen um ein Programm zur Verwaltung von Filmen zu entwerfen.Item stellt den Basistyp für alle Filme in der Datenbank dar. Für die un- terschiedlichen Medien-Typen werden eigenständige Klassen auf der Basis dieser Elternklasse erstellt. Gehen Sie davon aus, dass der gegebene Code korrekt ist.

1 p u b l i c a b s t r a c t c l a s s Item {

2 p r i v a t e int year;

3 p r i v a t e S t r i n g t i t l e ;

4 p r i v a t e Type type ;

5 p u b l i c Item (int year, S t r i n g t i t l e ) {

6 this.year = year;

7 this. t i t l e = t i t l e ;

8 this. type = Type . MISC ;

9 }

10 p u b l i c int g e t Y e a r () {

11 r e t u r n year;

12 }

13 p u b l i c S t r i n g g e t T i t l e () {

14 r e t u r n t i t l e ;

15 }

16 p u b l i c Type g e t T y p e () {

17 r e t u r n type ;

18 }

19 p u b l i c void s e t T y p e ( Type type ) {

20 this. type = type ;

21 }

22 }

1 p u b l i c enum Type {

2 DVD ,

3 VHS ,

4 MISC

(6)

a) Implementieren Sie zwei Klassen zur Verwaltung vonDVDsundVHS-Kassetten.

Beide Klassen erben vonItem.DVDverfügt über ein zusätzliches, öffentliches Attribut extrasvom Typ String. In der KlasseVHSwird über das öffentliche Attributrewound (boolean) angegeben, ob die Kassette zurückgespult ist. Für beide Klassen werden die Attribute im Konstruktor durch entsprechende Parameter initialisiert. Zusätzlich wird jeweils das geerbte Attributtypeauf den passenden Wert gesetzt.

b) Entwerfen Sie eine öffentliche MethodefilterByYear, die ein Array vom Typen Itemals Parameter übergeben bekommt.Anhand zweierint-Parameter werden aus diesem Array alle Items herausgefiltert, die zwischen den angegebene Jahren (int- Parameter) erschienen sind. Das Resultat wird alsArrayList<Item>zurückgegeben.

Sie müssen nur die Methode notieren und müssen keine umschließende Klasse an- geben.

Seite 6 von 9

Name, Studiengang & Matrikelnummer:

(7)
(8)

7) Anagramm-Checker (15 Punkte)

Implementieren Sie eine KlasseAnagrammChecker. Diese verfügt über eine öffent- liche, statische MethodeisAnagramm, die überprüft, ob zwei als Parameter überge- bene Wörter Anagramme voneinander sind. Ein Anagramm ist ein Wort, das aus den Zeichen eines anderen Wortes gebildet werden kann. Mehl ist ein Anagramm vonHelm.

Die beiden Parameter werden als Zeichenketten vom Typ String an die Methode übergeben. Nach der Überprüfung der beiden Wörter gibt die Methode einen bool- schen Wahrheitswert zurück: Handelt es sich bei den beiden Wörtern um Anagram- me, wird true zurückgegeben. Im anderen Fall wird false zurückgegeben. Ihre Methode muss mit Strings beliebiger Länge funktionieren. Dabei gelten zwei Wör- ter nur dann als Anagramm, wenn sie 1 zu 1aus den Zeichen des jeweilig anderen Wortes (ohne Auslassen von Zeichen) gebildet werden können.

Hinweis:Über die Methodechar charAt(int index)derString-Klasse können Sie auf ein Zeichen an einer bestimmten Stelle des Wortes zugreifen. Die Methode int indexOf(char ch) der selben Klasse überprüft, ob ein übergebener Buchstabe (ch) in dem String vorhanden ist. Im positiven Fall wird die Position (index) des Buchsta- ben alsint-Wert zurückgeben, im negativen Fall -1.

Einen Ausschnitt eines Strings können Sie über dieString-MethodeString substring(int beginIndex, int endIndex) extrahieren. Zurückgegeben werden alle Zeichen von

der PositionbeginIndex (inklusive) bis zur PositionendIndex (exklusive).

Seite 8 von 9

Name, Studiengang & Matrikelnummer:

(9)

Referenzen

ÄHNLICHE DOKUMENTE

Im Sommer verhalten sich Passivhäuser ganz ähnlich wie vergleichbare konven- tionelle Gebäude gleicher Bauweise. Ent- gegen häufig geäußerten Vorbehalten hilft der sehr

Innerhalb des Spiels wird das Gitter durch ein mehrdimensionales int-Array abge- bildet. Jede Zeile ist durch ein separates Array abgebildet, in dem jedes Element für eine

7b) Entwerfen Sie eine neue Klasse MailWithAttachment, die von Email erbt und über eine zusätzliche, private Instanzvariable vom Typ Attachment verfügt. Ergän- zen Sie eine

Hinweise: Mit der Methode indexOf(char c) der String-Klasse lässt sich überprüfen, ob ein Zeichen c in einem String vorkommt oder nicht. Die Methoden wird auf der

8b) Erstellen Sie eine Klasse AdTrack, die von AudioTrack erbt und zusätzlich über private Instanzvariablen für den Namen des jeweiligen Kunden sowie die vereinbar- ten Werbekosten

Vervollständigen Sie den gegebenen Code der Klasse OffsetRule um eine einfache Version der Abseitsregel beim Fussball zu implementieren. Ein Spieler wird dabei durch die Klasse

Für die Suche im Bestand können alle Medien mit einer beliebigen Anzahl an Schlagwörtern (Tags) ausge- zeichnet werden. Lagern Sie Ihren Code wenn nötig in weitere Methoden

7d) Implementieren Sie eine Klasse FancyPlant die von Plant erbt und über zwei zu- sätzliche Eigenschaften für den aktuellen und den optimalen Standort verfügt. Die Standorte werden