• Keine Ergebnisse gefunden

Aufgabe 1 Listen und Iteratoren (Präsenzaufgabe)

N/A
N/A
Protected

Academic year: 2022

Aktie "Aufgabe 1 Listen und Iteratoren (Präsenzaufgabe)"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. A. Poetzsch-Heffter Dipl.-Inf. J.-M. Gaillourdet Dipl.-Inform. M. Reitz Dipl.-Inform. K. Geilmann Dipl.-Inf. P. Michel M. Sc. Y. Welsch

TU Kaiserslautern

Fachbereich Informatik AG Softwaretechnik

Übungsblatt 13: Software-Entwicklung 1 (WS 2008/09)

Ausgabe: in der Woche vom 26.01. bis zum 30.01.

Abgabe: in der Woche vom 02.02. bis zum 06.02.

Abnahme: max 2 Tage nach Abgabe

Aufgabe 1 Listen und Iteratoren (Präsenzaufgabe)

Lesen Sie die Teilaufgaben von Aufgabe 2 und entwerfen Sie ein Klassendiagramm mit allen Klassen, Methoden, Attributen und Beziehungen.

Aufgabe 2 Listen und Iteratoren (Einreichaufgabe)

a) Implementieren Sie doppelt verkettete Listen, wie auf Folie 5.77 angedeutet. Ihre KlasseLinkedList (Liste als Behälter) soll neben denen der KlasseSLinkedListaußerdem folgende Methoden besitzen:

void addLast (int n) int removeLast ()

Dabei sollen Sie sicherstellen, dass diese Operationen in konstanter Zeit erfolgen (d.h. unabhängig von der Anzahl der Elemente in der Liste).

b) Implementieren Sie Iterator-Klasse für ihre Listen-Implementierung gemäß Folie 5.80. Fügen Sie dabei folgende Methoden hinzu:

boolean hasPrevious () int previous ()

void remove () // Entfernt das aktuelle Element aus der Liste

c) Überlegen Sie sich, was mögliche Vor- und Nachbedingungen für ihre Methoden aus a) und b) sein könnten und annotieren Sie diese mit dem aus der Vorlesung vorgestellten Verfahren (4.4.1). Beschreiben Sie kurz einige gültige und ungültige Methodenaufruf-Sequenzen.

Aufgabe 3 Klassenattribute und -methoden (Einreichaufgabe)

a) Machen Sie sich mit der Schnittstelle der Klasse Math vertraut (Beschreibung aufhttp://java.sun.

com/javase/6/docs/api/java/lang/Math.html. Begründen Sie, warum statische Attribute/Me- thoden verwendet wurden.

b) Warum kann folgendes Programm nicht kompiliert werden? Schreiben Sie es so um, dass es kompiliert.

class Main { int wert ;

public static void main ( String [] args ) {

(2)

Main m = new Main ();

Main . wert = 7;

System . out . println ( wert );

} }

c) Implementieren Sie eine Klasse Count, die eine statische Methode print()besitzt, welche ausgibt, wie viele Objekte der KlasseCountbis dato instanziiert worden sind.

Aufgabe 4 Modellierung (Einreichaufgabe)

Im Folgenden modellieren Sie eine Miniwelt bestehend aus Meeren, Ländern, Flüssen und Städten. Dabei können Länder benachbart sein. Flüsse fließen durch Länder und manche Städte liegen am Ufer eines Flus- ses. Städte können aber auch an den Ufern eines Meeres liegen. In die Meere münden Flüsse. Meere selbst können aneinandergrenzen. Länder haben Küsten zu Meeren.

a) Modellieren Sie diese Miniwelt als Klassendiagramm mit Beziehungen. Wählen Sie gute Namen für die Beziehungen und legen Sie sinnvolle Multiplizitäten fest.

b) Nun verfeinern wir den Entwurf. Schreiben Sie Java-Klassen die zeigen, wie Sie die Beziehung zwischen Land und Stadt mit Attributen realisieren würden. Entwerfen Sie vier unterschiedliche Realisierungen der Beziehung zwischen Land und Meer. Was sind die Unterschiedlichen Vor- und Nachteile der Vari- anten. Wovon würden Sie die Entscheidung für eine der Varianten abhängig machen?

Aufgabe 5 Parametrische Typen (Einreichaufgabe)

Implementieren Sie eine parametrische Fassung der KlasseLinkedListausAufgabe 2, Teil a) und b).

Aufgabe 6 Grafikeditor (Präsenzaufgabe)

Lesen Sie die Teilaufgaben von Aufgabe 7 und entwerfen Sie ein Klassendiagramm mit allen Klassen, Methoden, Attributen und Beziehungen.

Aufgabe 7 Grafikeditor (Einreichaufgabe)

In dieser Aufgabe geht es darum, einen Editor für graphisch darstellbare Komponenten zu implementieren.

Der Editor hat ein Zeichenfeld, das über x und y-Koordinaten angesprochen wird. Die Bedienung des Editors erfolgt Menü gesteuert in der Kommandozeile. Eine mögliche Sitzung könnte wie folgt aussehen:

1) Neues Polygon anlegen 2) Fokus ändern

3) Verschieben Ihre Wahl: 1 Polygon eingeben:

Name: Dreieck

Anzahl der Ecken (min 3): 3 Ecke 1:

x-Koordinate: 10 y-Koordinate: 10 Ecke 2:

x-Koordinate: 10 y-Koordinate: 20

(3)

Ecke 3:

x-Koordinate: 60 y-Koordinate: 30

1) Neues Polygon anlegen 2) Fokus ändern

3) Verschieben Ihre Wahl:

Zur Bearbeitung dieser Aufgabe können Sie sich die Datei “SEGraphics.java” von der Vorlesungsseite laden und übersetzen.SEGraphicsbietet Ihnen folgendes:

• Der Konstruktor vonSEGraphicslegt eine Zeichenfläche an.

• Die Methodeclearlöscht den Inhalt einer Zeichenfläche.

• drawCircle,drawStringunddrawLinewerden zum Zeichnen auf der Zeichenfläche benutzt.

Folgende Teilaspekte sollen bearbeitet werden:

a) Entwerfen Sie eine Klasse Punkt. Der Konstruktor soll die Koordinaten des Punktes vom Benutzer erfragen, außerdem werden Methoden benötigt, die einen Punkt verschieben.

b) Ein Polygon besteht aus mindestens drei verschiedenen Punkten einer Ebene, die durch Linien mitein- ander verbunden sind. Entwerfen Sie eine KlassePolygon, mit der Sie beliebige Polygone verwalten können. Um Polygone später identifizieren zu können, soll jedes Polygon einen Namen haben. Der Konstruktor soll die Koordinaten der Eckpunkte vom Benutzer erfragen. Außerdem brauchen Sie Me- thoden und Attribute, um die Position und Farbe des Polygons zu ändern, und um das Polygon auf ein SEGraphics-Objekt zu zeichnen.

Verwenden Sie für Farben Objekte der KlasseColorder Java-API. Informationen dazu finden Sie unter http://java.sun.com/javase/6/docs/api/java/awt/Color.html.

c) Entwerfen Sie eine Klasse Editor, die eine Menge von Polygonen und eine Zeichenfläche verwaltet.

Der Editor soll eine Methode haben, die es dem Benutzer erlaubt, interaktiv Polygone zu erstellen, zu verschieben und zu löschen.

Als Besonderheit soll der Editor über einen Fokus verfügen, so dass man ein Polygon auswählt, d.h.

ihm den Fokus gibt, und anschließend z.B. mehrere Verschiebungen nacheinander auf diesem Polygon machen kann.

d) Schreiben Sie ein Hauptprogramm, das einen neuen Editor erzeugt und die Interaktionsmethode aufruft.

Referenzen

ÄHNLICHE DOKUMENTE

In fact, such an exploration strategy is shown to achieve a competitive ratio of 4/3, as long as the adjacent cells are pushed onto the unvisited stack in the following order: first

b) Suchen Sie aus dem Anfangs-Kartenstapel die kleinste Karte heraus, und legen Sie sie auf Stapel C ab, wobei die restlichen Karten wieder in der gleichen Ordnung an Position A

Namensketten sind ringförmige Schnüre, auf die kleine Würfel aufgereiht sind. Auf jedem Würfel ist ein Großbuchstabe aufgedruckt. In dieser Aufgabe wollen wir solche Ketten

Dem Compiler wird die Datei übergeben, die eine main-Methode enthält. Er erstellt dann zu jeder be- nutzen Klasse eine “.class”-Datei, die sich im selben Verzeichnis befindet.

In dieser Aufgabe wollen wir einen Mini-Interpreter sowohl in ML als auch in Java entwickeln, sowie Vor- und Nachteile der Implementierungen diskutieren. Wir betrachten die Sprache,

Die Polygonecken K heissen Knoten. Das Gelenkpolygon kann für die Untersuchung der Kräfte nach dem Vorigen den Körper dann vertreten, wenn zwischen den äusseren Kräften einerseits

Das Petrie-Polygon ist als Vektorzug eingezeichnet. Alle Vektoren sind gleich lang, und die Richtungsänderung ist immer 120°.. 2) können wir die Vektoren des Petrie-

Wir denken uns das Sechseck als starres Kantenmodell und bewegen nun eine Kopie davon, so dass zwei aufeinanderfolgende Kanten je auf ihre Nachfolgerin zu