• Keine Ergebnisse gefunden

TU Kaiserslautern

N/A
N/A
Protected

Academic year: 2022

Aktie "TU Kaiserslautern"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. J. O. Blech Dipl.-Inform. M. J. Gawkowski Dipl.-Inform. N. Rauch

TU Kaiserslautern

Fachbereich Informatik AG Softwaretechnik

Übungsblatt 13: Software-Entwicklung I (WS 2007/08)

Ausgabe: 28. Januar 2008 Abgabe: 4. Februar 2008, 12.00 Uhr Abnahme praktischer Teil: 4. Februar - 7. Januar 2008

Aufgabe 1 Parametrische Typen (praktisch) (12 Punkte)

Die DatenstrukturSchlange(engl. queue) undStapel(engl. stack) unterschieden sich voneinander nach dem Prinzip, nach dem sie die von ihnen verwalteten Daten organisieren:Schlangeorganisiert die Daten nach dem LILO- undStapelnach dem LIFO-Prinzip. Die Abkürzungen LILO und LIFO stehen für die Prinzipien last in last out und last in first out. Die einzigen zugelassenen Operationen vonStapelsind

• initialise()liefert den leeren Stapels.

• empty(s)lieferttrueg.d.w.sleer ist.

• top(s)liefert den Wert des obersten Elements des Stapelss.

• push(s,x)liefert einen Stapel in demxauf allen Elementen vonsliegt.

• pop(s)entfernt das oberste Element aus dem Stapelsund liefert es; fallsempty(s), istpop(s)nicht definiert.

Die einzigen zugelassen Operationen vonSchlangesind

• initialise()liefert die leere Schlangeq.

• empty(q)lieferttrueg.d.w.qleer ist.

• enqueue(q,x)liefert eine Schlange in derxam Ende der Schlangeqsteht.

• dequeue(q) entfernt das vorderste Element aus der Schlange q und liefert es; falls empty(q), ist dequeue(q)nicht definiert.

Siehe auch im Buch "Algorithmen und Datenstrukturen" von T. Ottmann und P. Widmayer oder in Wikipedia nachschlagen.

a) Implementieren Sie eine parametrische KlasseQueue<T>, die eine Implementierung der Datenstruk- turSchlangeist. Die KlasseQueue<T>soll ähnlich wie die KlasseSLinkedListauf der Vorlesungs- folie 550 sein: Die Klasse besitzt ein Attribut first, das eine Referenz auf das erste Element einer einfach verketteten Liste vom TypSList<T>ist. Die Methoden der Schnittstelle vonQueue<T>

sollen die Listefirstverwalten, indem sie die Elemente vom TypTinfirsteinfügen oder ausfirst entfernen. Im Unterschied zuSLinkedListbesitzt die KlasseQueue<T>ein zusätzliches Attribut:

eine Referenzlast auf das letzte Element der Listefirst.last dient als Hilfsreferenz bei der Aus-

führung der Operationenqueue. (4 Punkte)

(2)

b) Erweitern Sie Ihre Implementierung der KlasseQueue<T>aus der vorangehenden Teilaufgabe um eine innere parametrische KlasseIterator<T>nach dem auf den Vorlesungsfolien Nr. 566 und 567 dargestellten Schema.

(4 Punkte) c) Schreiben Sie eine neue Version des Programms Listenverwalter, Schlangenverwalter, indem Sie die Methodemainder Klasse Mainaus der Lösung der Aufgabe 1 in Übungsblatt 11 umschreiben. In der neuen Version des Programms muss der Benutzer nach dem Start des Programms interaktiv eine Op- tion eingeben, die angibt, ob der Schlangenverwalter eine Schlange von Zahlen oder eine Schlange von Punkten verwalten soll. Das Programm soll der eingegebenen Option entsprechend entweder eine Schlange vom TypQueue<Integer>oder vom TypQueue<Point>verwalten.

(4 Punkte)

Aufgabe 2 Java Packages (praktisch) (8 Punkte)

a) Betrachten Sie die folgenden Klassendeklarationen-Auszüge:

// Datei TextComponent.java package tools.editortools;

class TextComponent{ . . . }

// Datei TextArea.java package tools.editortools;

public class TextArea { private char [] text;

int linecount;

public void getText();

public void setText();

}

// Datei TextEditor.java package tools.editortools;

public class TextEditor { . . . }

// Datei Book

import tools.editortools.*;

class Book { . . . }

und beantworten Sie die folgenden Fragen:

1. Auf welche Attribute und Methoden der Klasse TextComponent dürfen die Klassen TextArea,TextEditorundBookzugreifen?

(2 Punkte) 2. Auf welche Attribute und Methoden der Klasse TextArea dürfen die Klassen

TextComponent,TextEditorundBookzugreifen?

(2 Punkte)

(3)

3. Auf welche Attribute und Methoden der KlasseTextEditordarf die KlasseTextAreazugrei- fen?

(2 Punkte) b) In dieser Teilaufgabe sollen Sie üben Java Programme in Pakete zu verteilen, Zugriffsrechte auf die Schnittstellen der Paketenklassen zu setzen, Pakete zu erzeugen und Programme zu schreiben und zu übersetzen, welche Klassen aus den von ihnen zur Verfügung gestellten Paketen importieren und benut- zen. Zum Üben verwenden wir die von Ihnen in der vorangehenden Aufgabe implementierten Klassen Point,SList<T>undQueue<T>.

1. Lesen Sie Dokumentation der Programmejavac,javaundjar. Insbesondere sollen Sie dieje- nigen Optionen genauer studieren, welche die Verzeichnise zum Lesen und Speichern vonclass- undjar-Dateien für diese Programme festlegen.

2. Erzeugen Sie aus den Klassen Point, SList<T> und Queue<T> drei java-Dateien Point.java,SList.javaundQueue.java.

3. Bündeln Sie dort enthaltene Klassen-Deklarationen in ein Paketsoftwaretechnik.util.

4. Ändern Sie die Zugriffsrechte im Paket so, dass von außerhalb des Pakets import softwaretechnik.utilnur die KlassePointundQueueverwendet werden dürfen und die KlasseSListgekapselt wird.

5. Übersetzen sie die DateienPoint.java,SList.javaundQueue.java..

6. Erzeugen Sie aus allen class-Dateien, die das Ergebnis der Übersetzung sind, einejar-Archiv Dateiutils.jarmit dem Programmjar.

7. Legen Sie in Ihrem Arbeitsverzeichnis das Verzeichnisliban.

8. Kopieren Sieutils.jarins Verzeichnislib.

9. Legen Sie in Ihrem Arbeitsverzeichnis das Verzeichnisprojectan.

10. Schreiben Sie im Verzeichnislib die Klasse Maindes Programms Schlangenverwalter aus der vorangehenden Aufgabe folgendermaßen um: Die Datei Main.java soll die Import- Klausel import softwaretechnik.util.*;und die Deklaration der Klasse Main ent- halten.

11. Übersetzen Sie die KlasseMain

12. Protokollieren Sie alle Kommandos (einschließlich Optionen, die Sie gebraucht haben), die Sie auf dem Terminal betätigt haben.

13. Demonstrieren Sie Ihrem Tutor, dass ihre Klasse Main nur auf die Schnittstellenkomponenten der Klassen Point und Queue zugreifen können, indem Sie geeignet Quellcode der Main- Klassendeklaration verändern.

(2 Punkte)

Aufgabe 3 Störe meine Kreise nicht 2 (praktisch) (7 Punkte)

Betrachten Sie nochmal Ihren Editor von Aufgabenblatt 12 und passen Sie Ihre Implementierung gegebe- nenfalls an. Die folgenden Teilaufgaben sollen gelöst werden:

a) Ihr Editor soll genau ein Feld von Figuren verwalten. Diese Figuren sollen jeweils mit Hilfe einesdraw-

Methodenaufrufs gezeichnet werden. (1 Punkt)

b) Zusätzlich zu den Kreis-basierten Figuren sollen jetzt Rechtecke darstellbar sein. Was müssen Sie tun, um mit dem einen Feld in Ihrer Editor-Klasse auszukommen? Entwerfen Sie eine Schnittstelle und

implementieren Sie entsprechende Klassen! (5 Punkte)

c) Ergänzen Sie Ihr Hauptprogramm so, dass es das Anlegen und Verschieben sowohl von Rechtecken als

auch von Kreis-basierten Figuren erlaubt. (1 Punkt)

(4)

Aufgabe 4 Eine unkonventionelle Listenimplementierung (praktisch) (8 Punkte)

Um die Bedeutung und Benutzung einiger Sprachkonstrukte zu üben, soll in dieser Aufgabe eine unkonven- tionelle Listenimplementierung realisiert werden. Die Implementierung soll aus genau einer Klasse bestehen und folgende Eigenschaften besitzen:

• Der Typ der Listenelemente ist int.

• Die Klasse realisiert genau eine Liste; diese Liste braucht nicht extra erzeugt zu werden, sondern existiert am Programmstart und ist zunächst leer.

• Die Klasse hat genau einen Konstruktor. Verwirrenderweise erzeugt der Konstruktor keine neue Li- steninstanz, sondern hängt ein neues Element in die Liste ein.

• Die Klasse ermöglicht es dem Anwender, alle Elemente in der Liste auf der Standardausgabe in nor- maler Reihenfolge und in umgekehrter Reihenfolge auszugeben.

a) Implementieren Sie eine Klasse DLL mit den obigen Eigenschaften.

b) Testen Sie Ihre Implementierung anhand mehrerer Beispiele.

c) Nennen Sie eine Eigenschaft der Liste, die wünschenswert sein könnte. Nennen Sie eine Eigenschaft der Liste, die sehr schlechter Programmierstil ist.

Referenzen

ÄHNLICHE DOKUMENTE

[r]

[r]

[r]

[r]

[r]

Beförderungsvertrag in diesem Sinne sei aber nur das zwischen dem Absender des Guts und dem Frachtführer bestehende Rechtsverhältnis, nicht jedoch der Vertrag zwischen

[r]

&lt;S&gt;&lt;/S&gt; mit Bindestrich daran ohne Spatium, S.. Reihen etc.) spielen insofern keine Rolle, da sie über die Stücktitelaufnahme sowieso auch indirekt mit dem