• Keine Ergebnisse gefunden

Übung 04: Generische Datenstrukturen

N/A
N/A
Protected

Academic year: 2022

Aktie "Übung 04: Generische Datenstrukturen"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Übung Softwareentwicklung 2 SS 2018

Übung 04: Generische Datenstrukturen

Abgabetermin: 19. 4. 2018, 10:15

Name: Matrikelnummer:

Informatik:  G1(Prähofer)  G2(Weninger)  G3(Prähofer)  G4 (Weninger)  G5(Löberbauer)  G6 (Aumayr) WIN:  G1 (Khalil)  G2 (Hummel)  G3 (Khalil)  G4 (Löberbauer)

Aufgabe Punkte abzugeben schriftlich abzugeben elektronisch korr. Punkte

Übung 4 24 Java-Programm,

Ausgabe eines Testlaufs

Java-Programm

Übung 04: Generische Datenstrukturen (24 Punkte)

In dieser Übungsaufgabe sollen Sie eine generische ArrayList sowie eine generische EntryBasedMap entwickeln.

Dazu werden ihnen zwei Interfaces, List und Map, zur Verfügung gestellt, welche implementiert werden müssen.

ArrayList: (10 Punkte)

Entwickeln Sie die generische Klasse ArrayList<T>, welche List<T> implementiert. Die öffentlische Schnittstelle des Interfaces umfasst die Methoden add, get, remove, contains sowie size. Die Beschreibungen der einzelnen Methoden entnehmen Sie bitte der JavaDoc des Interfaces.

Wie der Name sagt, soll ArrayList intern ein Array (vom generischen Typ) nutzen, um seine Einträge zu speichern. Sollte das interne Array bereits voll sein wenn add aufgerufen wird, muss es vergrößert (zB. doppelt so groß) werden. Es muss bei remove-Aufrufen nicht verkleinert werden, aber es muss darauf geachtet werden, dass keine Lücken im Array entstehen.

Außerdem soll ArrayList das generische Interface Iterable<T> implementieren. Dazu muss ein Iterator impelmentiert werden. Dieser soll als anonyme Klasse innerhalb der Methode iterator() implementiert werden und direkt auf das interne Array von ArrayList zugreifen.

Hinweise

:

 Um leichter mit Arrays zu arbeiten, können Sie die statischen Methoden in der Klasse Arrays (z.B.

Arrays.copyOf) sowie System.arrayCopy nutzen.

EntryBasedMap: (10 Punkte)

Eine Map ist eine Sammlung von Key-Value-Paaren.

Entwickeln Sie die generische Klasse EntryBasedMap<K, V>, welche Map<K, V> implementiert. Die öffentliche Schnittstelle des Interfaces umfasst die Methoden put, get, contains, remove, size, keyIterator, valueIterator und iterator. Die Beschreibungen der einzelnen Methoden entnehmen Sie bitte der JavaDoc des Interfaces.

Zum Speichern eines einzelnen Eintrags soll die Klasse Entry als innere Klasse innerhalb von EntryBasedMap implementiert werden. Entry soll dazu das generische Interface Tuple<K, V> mit seinen Methoden getKey und getValue implementieren. Die Typen für Key und Value sollen dabei denen von EntryBasedMap entsprechen.

Diese Klasse EntryBasedMap soll eine ArrayList vom generischen Typ Entry zur Speicherung der einzelnen Einträge nutzen.

(2)

Übung Softwareentwicklung 2 SS 2018

Bezüglich der Methoden keyIterator(), valueIterator() und iterator(): Es sollen drei verschiedene Iteratoren für die EntryBasedMap entwickelt werden: Einer, der über alle Keys der Map iteriert (KeyIterator), einer, der über alle Werte der Map iteriert (ValueIterator) und einer, der über alle KeyValue-Einträge der Map iteriert (EntryIterator). Diese 3 Iteratoren sollen als private innere Klassen innerhalb von EntryBasedMap implementiert werden und direkt auf die interne ArrayList der Map zugreifen.

Test: (4 Punkte)

Um die von Ihnen entwickelten Datenstrukturen zu testen, entwickeln Sie einen einfach Eingabe-Ausgabe-Dialog.

Dieser soll dem Benutzer erlauben, eine Einkaufsliste zu verwalten.

Eine Einkaufsliste ist eine Map, deren Schlüssel vom Typ String sind (die Gegenstände, die eingekauft werden müssen), und die Werte vom Typ Integer (die zu kaufende Anzahl des jeweiligen Gegenstands).

Der Eingabe-Ausgabe-Dialog soll folgende Funktionalität umfassen:

 Eingabe eines neuen Eintrags für die Einkaufsliste (Gegenstand + Anzahl)

 Löschen eines Eintrags (über den Gegenstandsnamen)

 Ausgabe der gesamten Einkaufsliste (Je Eintrag: Gegenstand + Anzahl)

 Anzahl der zu kaufenden Gegenstände (= Summe aller Werte in der Map)

 Anzahl der Einträge auf der Einkaufsliste

Hinweise

:

 Ein Rahmen für den Dialog wird Ihnen im Download bereitgestellt. Sie sollen an den mit // TODO:

gekennzeichneten Stellen, den entsprechenden Programmteile einfügen.

Beispielprogrammablauf:

--- --- SHOPPING LIST --- --- --- Funktionalitäten:

(1) Neuen Eintrag hinzufügen (2) Löschen eines Eintrags

(3) Einkaufsliste (Gegenstand + Anzahl) ausgeben (4) Anzahl der zu kaufenden Gegenstände ausgeben (5) Anzahl der unterschiedlichen Gegenstände (X) Ende

--- Ihre Eingabe: 1

Gegenstand: Eier Anzahl: 5

Ihre Eingabe: 1 Gegenstand: Speck Anzahl: 2

Ihre Eingabe: 3 Eier -> 5

Speck -> 2 Ihre Eingabe: 1 Gegenstand: Bananen Anzahl: 2

Ihre Eingabe: 3 Eier -> 5

Speck -> 2

(3)

Übung Softwareentwicklung 2 SS 2018

Bananen -> 2 Ihre Eingabe: 2 Gegenstand: Speck

Speck von Einkaufsliste entfernt Ihre Eingabe: 2

Gegenstand: Wasserball

Wasserball nicht auf Einkaufsliste, kann daher auch nicht entfernt werden Ihre Eingabe: 3

Eier -> 5 Bananen -> 2 Ihre Eingabe: 1 Gegenstand: Bananen Anzahl: 10

Ihre Eingabe: 3 Eier -> 5

Bananen -> 10 Ihre Eingabe: 4 15

Ihre Eingabe: 5 2

Ihre Eingabe: 6

6 ist keine valide Eingabe!

Ihre Eingabe: X

Referenzen

ÄHNLICHE DOKUMENTE

Wolfgang Hönig WS 09/101. Übung Algorithmen

• Suchbaum: Für jeden Knoten gilt: alle Schlüssel im linken Teilbaum sind kleiner und alle Schlüssel im rechten Teil- baum sind größer als der Schlüssel des Knotens. •

Dies geht, in dem man die Vergleichsfunktion so verändert, dass nicht einfach nur die Zahlen verglichen werden, sondern auch noch die Namen (wenn die Zahlen gleich sind).. mit

Ent- sprechendes gilt natürlich auch für OR, welches überall dort Einsen setzt, wo in Operand 1 oder Operand 2 (oder natürlich in beiden) schon eine 1 ist, und für XOR welches

Dies liegt an einem kleinen, aber gern gemachten Tippfehler: Die while-Schleife führt die erste Anweisung oder den ersten Block solange aus, bis die Bedingung nicht mehr erfüllt

Geben Sie eine BNF-Definition B an, die folgende Sprache beschreibt (siehe auch Zusatzaufgaben der 33. Ist die Grammatik (bzw. BNF-Definition)

Durch den Durchschnitt zweier Sprachen, welche durch EBNF-Definitionen beschrie- ben werden, kann eine neue Sprache entstehen, welche sich nicht mit einer einzelnen

Hinweis: Wenn die Übung immer noch zu langweilig ist, lohnt es sich alle Syntaxdia- grammsysteme der obigen Aufgaben in die entsprechende EBNF