• Keine Ergebnisse gefunden

2. Praktikum "Algorithmen und Programmierung II"

N/A
N/A
Protected

Academic year: 2022

Aktie "2. Praktikum "Algorithmen und Programmierung II""

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

2. Praktikum "Algorithmen und Programmierung II"

SS 2014

Schriftlich zu beantwortende Fragen:

Was ist ein Typparameter?

Was bedeutet „Typlöschung“ (type erasure) Was ist Paketsichtbarkeit?

Vorbemerkung:

Bei den folgenden Aufgaben geht es in erster Linie darum. dass Sie sich erstmals mit der Definition und der Verwendung von einfachen Behälterklassen vertraut machen. Zunächst sollen Sie die Klasse Array so schreiben, dass sie die Tests erfüllt. Anschließend sollen Sie das Array in der Klasse Bank durch diese Klasse ersetzen. Beachten Sie, dass die Klasse Array bereits die Anzahl der gespeicherten Elemente kennt!

Die vorgefertigten Klassen zu den Praktikumsaufgaben finden Sie auf der AP2-Seite unter www.gm.fh-koeln.de/ehses/ap in der Datei vorlage2.zip

Die folgenden Aufgaben geben die empfohlene Vorgehensweise wieder. Vorzuzeigen ist nur das Endergebnis!

Wenn Sie vorlage2.zip auspacken, finden Sie die Paketverzeichnisse anwendung, util und bank.

Erzeugen Sie für alle Klassen javadoc-Dateien!

Aufgabe 1.

Vervollständigen Sie Datei: util/Array.java um die noch fehlenden Methodenimplemen- tierungen, so dass sich eine funktionsfähige Klasse ergibt, die ein sich automatisch vergrößerndes Array darstellt. Testen Sie dies durch Ausführung der Klasse util.ArrayTest.

Lernziele: Schreiben einer Behälterklasse. Kennenlernen von Typparametern..

Aufgabe 2.

Ersetzen Sie in der Klasse Bank das Array von Konto durch Array<Konto>.

Motivation: In der Klasse Konto wird die Klasse Array<T> verwendet um ein bequemes Array<Historie> zu haben. Genauso sollte es möglich sein, in der Klasse Bank das vorhandene Array durch ein Array<Konto> zu ersetzen. Orientieren Sie sich an der Klasse Konto!

Aufgabe 3.

Vervollständigen Sie die Klasse Main so wie dort in den Kommentaren angegeben.

Überblick über die Klassen :

bank.Historie: Objekte speichern eine Kontobewegung (Einzahlung, Auszahlung oder Überweisung). Sie werden in der Klasse Konto erzeugt.

(2)

Schließlich gibt es in dem Paket bank drei Klassen, die Sie an den angegebenen Stellen erweitern sollen. Dabei sollten Sie wiederum die Kommentare nicht vergessen!

bank.Aktion definiert einen Aufzählungstyp mit den Elementen BAR_EIN, BAR_AUS, UEBERW_EIN, UEBERW_AUS. Diese Konstanten werden beim Anlegen von Trans- aktionsobjekten in der Klasse Konto angesprochen.

bank.Konto speichert die Daten zu einem Konto und definiert alle Operationen.

bank.Bank definiert die öffentlichen Operationen für Bankaufträge. Die Aufträge werden ausgeführt, indem die entsprechende Operation des jeweiligen Kontos ausgeführt wird.

Lernziele: Verständnis einer einfachen Klassenstruktur, Pakete

Hinweis zu Typparametern und zur Klasse Array<T> :

Array<String> sagt aus, dass die Methoden der Klasse Array so zu verwenden sind, als lauteten sie

int size()

String get(int index) void add(String neu)

entsprechend bedeutet Array<Konto>:

int size()

Konto get(int index) void add(Konto neu)

in der Klasse Array<T> selbst betrachten Sie T einfach als Datentyp der Elemente.

Verwenden Sie zum Überprüfen, ob ein Arrayindex korrekt ist, die Methode checkIndex(index)!

Weitere Hinweise finden Sie in Vorlesungsfolien (Datei Nr. 2) und im Skript.

Referenzen

ÄHNLICHE DOKUMENTE

Schreiben Sie die Funktion inorder mit akkumulierendem Parameter für binäre

Auf einem N*N großen Schachbrett sind N Damen so aufzustellen, dass sie sich gegenseitig nicht schlagen können.. Zwei Damen können sich schlagen, wenn sie in der gleichen

Beurteilen Sie das Laufzeitverhalten der Sortieralgorithmen und vergleichen Sie dieses mit dem der Bibliotheksfunktion. Können Sie für die Algorithmen eine einfache

2. Der Algorithmus verwendet einen LIFO-Stack. Er entspricht dem Verfahren der rekursiven Baumtraversierung. Häufig wird anstelle der hier verwendeten Implementierung das

Anregung für Interessierte: Sie können das auch ganz einfach hinkriegen, wenn Sie eine Klasse schreiben, die die Schnittstelle parser.Builder&lt;Double&gt; sinnvoll

Dieses Praktikum ist eine Variante des Praktikums 8. Anstelle der Codegenerierung wird hier der erzeugte Syntaxbaum direkt interpretiert. Es gibt zwei Baumoperationen:

Grundbausteine eines Java Programms Schlüsselwörter, Kommentare Variablen und Datentypen Operatoren und Ausdrücke Kontrollstrukturen. Anweisungsfolge (Sequenz) Auswahlstrukturen

Grundbausteine eines Java Programms Schlüsselwörter, Kommentare Variablen und Datentypen Operatoren und Ausdrücke Kontrollstrukturen. Anweisungsfolge (Sequenz) Auswahlstrukturen