DA AT E UD - IMN/HTWK

Werbung
Hochschule für Technik, Wirtschaft und Kultur
Fakultät Informatik, Mathematik und Naturwissenschaften
Softwarepraktikum 2010
Handbuch EduData
EDU
D ATA
8. Juni 2010
EDU
D ATA
Inhaltsverzeichnis
I. Benutzerhandbuch
4
1.
Einleitung
5
1.1.
Systemvoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
Installation
6
1.2.
1.3.
2.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1.
Windows
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2.
Linux
6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Deinstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Beispielanwendung
7
2.1.
7
2.2.
2.3.
2.4.
2.5.
Allgemeine Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1.
GUI Überblick
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.1.2.
Zustand laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.1.3.
Zustand speichern
8
2.1.4.
Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
TabView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
. . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1.
View herauslösen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2.
View integrieren
2.2.3.
Views geordnet darstellen
Datenstrukturen
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
10
. . . . . . . . . . . . . . . . . . . . . . .
10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.3.1.
Neue Datenstrukturen önen
. . . . . . . . . . . . . . . . . . . . .
10
2.3.2.
Einfaches Datenelement
2.3.3.
Feld
. . . . . . . . . . . . . . . . . . . . . . . .
10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.4.
Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
12
2.3.5.
Menge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.3.6.
Allgemeiner Baum
. . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.3.7.
Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
Darstellungsoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.4.1.
Animationsgeschwindigkeit
. . . . . . . . . . . . . . . . . . . . . .
16
2.4.2.
Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
Replay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.5.1.
Replay aufnehmen
18
2.5.2.
Replay laden
2.5.3.
Replay speichern
2.5.4.
Replaywiedergabe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
. . . . . . . . . . . . . . . . . . . . . . . . . . .
18
EDU
D ATA
II. Entwicklerhandbuch
19
3.
Visualisierungskomponente
20
3.1.
3.2.
3.3.
Architekturübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.1.1.
Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.1.2.
Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Übersicht Programmstruktur
21
. . . . . . . . . . . . . . . . . . . . . . . . .
23
3.2.1.
Pakete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.2.2.
Programmstruktur Liste . . . . . . . . . . . . . . . . . . . . . . . .
24
Integration einer eigenen Struktur . . . . . . . . . . . . . . . . . . . . . . .
26
EDU
Teil I.
Benutzerhandbuch
D ATA
EDU
D ATA
1. Einleitung
Dieses Handbuch stellt eine Einführung und Hilfe für die Arbeit mit EduData dar. Das
Produkt EduData unterteilt sich in zwei Komponenten. Der erste Teil und zugleich
Kernstück ist die Visualisierungskomponente. Dabei handelt es sich um eine Bibliothek,
welche Datenstrukturen sowie für diese typische Algorithmen visualisieren kann. Das
zweite Teilstück ist eine Beispielanwendung zur Unterstützung der Lehre. Diese bindet
die Visualisierungskomponente ein und dient somit als Hilfmittel für Lehrveranstaltungen
wie Algorithmen und Datenstrukturen.
EduData entstand im Rahmen des Softwareprojektes 2010 an der HTWK Leipzig.
Dabei waren Bachelor- und Master-Studenten beteiligt, wobei die Master-Studenten für
die Projektleitung und die Bachelor-Studenten für die Ausführung der anfallenden Aufgaben verantwortlich waren.
1.1. Systemvoraussetzungen
Folgende minimale Systemanforderungen werden für den reibungslosen Einsatz von der
Software EduData empfohlen:
•
Mindestens 50 MB freien Festplattenspeicher
•
Windows XP, Windows Vista, Windows 7 , Linux Ubuntu 9.10
•
Mindestvoraussetzungen der jeweiligen Betriebsysteme
•
Java 2 Plattform Standard Edition 6.0 (siehe:
•
Maus und Tastatur
•
Monitor mit einer Auösung von mindestens 800x600
http://java.sun.com/)
Es ist aber auch möglich die Software unter einer anderen Systemumgebung zu verwenden, solange Java auf dieser funktionsfähig ist. Ein problemloser Einsatz ist aber nur
sichergestellt bei der Benutzung der oben genannten Betriebsysteme, da diese Systemkongurationen ausführlich getestet wurden.
5
EDU
D ATA
1.2. INSTALLATION
1.2. Installation
Für eine erfolgreiche Installation beachten Sie bitte die Systemvoraussetzungen in Abschnitt 1.1. Insbesondere muss eine Java Plattform auf Ihren Rechner installiert und
lauähig sein.
1.2.1. Windows
Entpacken Sie nach dem Herunterladen des ZIP-komprimierten Archiv in einem Ordner
ihrer Wahl. In diesem Ordner bendet sich jetzt eine Datei namens EduData.jar . Önen
Sie dies Datei mit einem Doppelklick und das Programm wird gestartet.
1.2.2. Linux
Entpacken Sie nach dem Herunterladen des ZIP-komprimierten Archiv in einem Ordner
ihrer Wahl. In diesem Ordner bendet sich jetzt eine Datei namens EduData.jar . Önen
Sie dies Datei mit einem Doppelklick und das Programm wird gestartet.
1.3. Deinstallation
Der bei der Installation erstellte Programmordner, kann jederzeit komplett von der Festplatte gelöscht werden.
6
EDU
D ATA
2. Beispielanwendung
2.1. Allgemeine Funktionen
2.1.1. GUI Überblick
Abbildung 2.1.: Hauptfenster
Die GUI der Software besteht aus einer Menüleiste und fünf weiteren Zonen. Diese Zonen
werden in der Abbildung 2.1 durch die Ziern 1 bis 5 dargestellt.
Die Zonen 1 bis 3 dienen rein zur Ausgabe und die Zonen 4 und 5 werden für Eingaben
verwendet.
•
Zone 1 : In der Zone eins werden die zu visualisierenden Datenstrukturen grasch
dargestellt.
•
Zone 2 : In der Zone zwei werden alle durchgeführten Aktionen schrittweise noch
einmal in Textform angezeigt.
•
Zone 3 : In der Zone drei bendet sich eine Textbox, die als Legende oder Infobox
benutzt wird. Das bedeutet, wenn Sie sich beispielsweise über einen Button benden, erhalten Sie hier noch eine genauere Beschreibung der Funktionsweise des
Buttons.
•
Zone 4: In der Zone vier erhalten Sie Informationen über die aktuell ausgewählte
Datenstruktur.
7
EDU
D ATA
2.1. ALLGEMEINE FUNKTIONEN
•
Zone 5: In der Zone fünf liegt die eigentliche Kontrolläche. Hier werden in Abhänigkeit der gewählten Datenstruktur die jeweiligen Operationen angezeigt, sowie
die Replayoptionen.
2.1.2. Zustand laden
Önen Sie das Menü Datei und wählen den Eintrag Laden durch Klick aus (siehe
Abbildung 2.2). Es erscheint ein Dialog zur Dateiauswahl, indem Sie die Möglichkeit
haben eine Datei auszuwählen, in welcher Sitzungsdaten gespeichert wurden. Bestätigen
Sie ihre Auswahl mit dem OK Button. Jetzt ist der gespeicherte Zustand erfolgreich
geladen. Alternativ erreichen Sie auch durch Klick auf den Button Zustand laden im
Kontrollfeld den Dialog zur Dateiauswahl.
Abbildung 2.2.: Laden
2.1.3. Zustand speichern
Önen Sie das Menü Datei und wählen den Eintrag Speichern . Hier können Sie die
Sitzungsdaten in einer Datei speichern. Wie beim Laden önet sich auch hier ein Dialog
zur Dateiauswahl, in welchem Sie Zielpfad und Name der neuen Datei eintragen können.
Die Angabe der Dateiendung ist nicht nötig, die Anwendung ergänzt diese automatisch.
Alternativ erreichen Sie auch durch Klick auf den Button Zustand speichern im Kontrollfeld den Dialog zur Dateiauswahl.
2.1.4. Hilfe
Önen Sie das Menü Hilfe und wählen den Menüeintrag Handbuch aus (siehe Abbildung 2.3). Es erscheint jetzt eine ausführliche Dokumentation für den Umgang mit der
Anwendung.
8
EDU
D ATA
2.2. TABVIEW
Unter den Menüpunkt Version können Sie sich die Versionsnummer der genutzten Software anzeigen lassen.
Abbildung 2.3.: Hilfe
2.2. TabView
Die integrierte Funktion Tab View erleichtert die Kombination von mehreren Seiten
auf einer Seite mit Reitern (siehe Abbildung 2.4). Dies ist sehr ansprechend und nützlich
für das Organisieren von Inhalten sein.
Abbildung 2.4.: TabView
2.2.1. View herauslösen
Wählen Sie den gewünschten Tab durch ein Klick auf den entsprechenden Reiter aus. Ist
der gewünschte Tab aktiv, können Sie jetzt durch einen Doppelklick auf den Reiter den
Tab aus der TabView lösen und als eigenständiges Fenster verwenden.
9
EDU
D ATA
2.3. DATENSTRUKTUREN
2.2.2. View integrieren
Möchten Sie ein eigenständiges Fenster wieder in die Tableiste integrieren, genügt es das
Fenster einfach zu schlieÿen..
2.2.3. Views geordnet darstellen
Diese Funktion ist leider erst in einer späteren Programmversion zur Verfügung.
2.3. Datenstrukturen
2.3.1. Neue Datenstrukturen önen
Önen Sie das Menü Datei und wählen den Menüeintrag Neue Datenstruktur. Es erscheint jetzt ein Auswahlfenster (siehe Abbildung 2.5) ,indem Sie die gewünschte Datenstuktur durch Klick auswählen können.
Abbildung 2.5.: Datenstruktur önen
2.3.2. Einfaches Datenelement
Kurzbeschreibung
Ein einfaches Datenelement kann die primitiven Typen einer Sprache aufnehmen. Primitive Datentypen sind beispielsweise die numerischen Datentypen, der Zeichen-Datentyp
und der boolesche Datentyp.
Operationen Datenelement
Önen Sie eine Datenstruktur des Typs einfaches Datetenelement so wie in Abschnitt
2.3.1 beschrieben.
Das einfache Datenelemnt stellt folgende grundlegenden Operationen zur Verfügung:
10
EDU
D ATA
2.3. DATENSTRUKTUREN
•
Setzen von Wert
Diese Funktion wird über den entsprechenden Button auf der rechten Seite des Fensters
der Kontrolläche (siehe Abbildung 2.6) ausgelöst. Auch eine Generierung eines zufälligen
Wertes, wird durch den mit Fragezeichen versehenen Button ermöglicht.
Abbildung 2.6.: einfaches Datenelement
2.3.3. Feld
Kurzbeschreibung
Die Datenstruktur Feld erlaubt es, Werte eines Datentyps als Eintrag zu verwalten. Die
Ausdehnung des Feldes ist aber fest vorgegeben. Das Feld besitzt einen Index, wobei das
erste Element Index=0, dass nächste Element Index=1 usw. zugeordnet ist. Über diesen
Index kann direkt auf das entsprechende Feldelement zugegrien werden.
Operationen Feld
Önen Sie eine Datenstruktur Feld wie in Abschnitt 2.3.1 beschrieben. Es önet sich
ein Dialogfenster (siehe Abbildung 2.7 ) indem Sie die Initialgröÿe des Feldes angeben
können.
Abbildung 2.7.: Feld initialisieren
Das Feld stellt folgende grundlegenden Operationen zur Verfügung:
11
EDU
D ATA
2.3. DATENSTRUKTUREN
•
Feldgröÿe vergröÿern
•
Setzen von Werten
•
Löschen von Werten
•
Tauschen von Werten
•
Suchen von Werten
Diese Funktionen werden über die entsprechenden Buttons auf der rechten Seite des
Fensters der Kontrolläche (siehe Abbildung 2.8) ausgelöst. Auch eine Generierung eines
zufälligen Wertes, wird durch den mit Fragezeichen versehenen Button ermöglicht.
Abbildung 2.8.: Feld Operationen
2.3.4. Liste
Kurzbeschreibung Liste
Bei der hier dargestellte Datenstruktur handelt es sich um eine einfach verkettete Liste.
Eine solche Liste besteht aus einer Menge von Knoten, die untereinander verzeigert oder
auch verkettet sind. Jeder Knoten besteht damit aus einem Verweis auf das nachfolgende
Element. Das letzte Element verweist auf NULL (NULL-Zeiger). Bei der Liste handelt
es sich um eine dynamische Datenstruktur.
Operationen Liste
Önen Sie eine Datenstruktur des Typs Liste wie in Abschnitt 2.3.1 beschrieben.
Die Liste stellt folgende grundlegende Operationen zur Verfügung:
•
Einfügen von Werten
•
Setzen von Werten
12
EDU
D ATA
2.3. DATENSTRUKTUREN
•
Suchen von Werten
•
Löschen von Werten
•
Tauschen von Werten
Diese Funktionen werden über die entsprechenden Buttons auf der rechten Seite des
Fensters der Kontrolläche (siehe Abbildung 2.9) ausgelöst. In der Kontrolläche ist
eine Dropdownliste zu sehen, die es erlaubt sich bei den Operationen entweder auf eine
Position oder einen Wert zu beziehen. Auch eine Generierung eines zufälligen Wertes,
wird durch den mit Fragezeichen versehenen Button ermöglicht.
Abbildung 2.9.: Liste Operationen
2.3.5. Menge
Kurzbeschreibung Menge
Eine Menge ist eine ungeordnete Sammlung von Elementen eines bestimmten Datentyps,
von denen jeweils nur ein Exemplar enthalten sein darf.
Operationen Menge
Die Menge stellt folgende grundlegende Operationen zur Verfügung.
•
Einfügen von Werten
•
Löschen von Werten
•
Prüfung, ob ein Wert bereits enthalten ist
Diese Funktionen werden über die entsprechenden Buttons auf der rechten Seite des
Fensters der Kontrolläche (siehe Abbildung 2.10) ausgelöst. Auch eine Generierung eines
zufälligen Wertes, wird durch den mit Fragezeichen versehenen Button ermöglicht.
13
EDU
D ATA
2.3. DATENSTRUKTUREN
Abbildung 2.10.: Menge Operationen
2.3.6. Allgemeiner Baum
Kurzbeschreibung allgemeiner Baum
Unter einem allgemeinen Baum, versteht man eine Menge von Knoten und Kanten, die
besondere Eigenschaften aufweisen. Dieser Baum besitzt genau einen Knoten, der als
Wurzel bezeichnet wird. Alle weiteren Knoten sind durch genau eine Kante mit seinem
Vaterknoten verbunden. Er wird dann auch Kind dieses Knoten genannt. Ein Knoten
ohne Kind heiÿt Blatt.
Operationen allgemeiner Baum
Der allgemeine Baum stellt folgende grundlegenden Operationen zur Verfügung.
•
Einfügen von Knoten
•
Einfügen von Kinderknoten
•
Kinderknoten anzeigen
•
Anzeigen des Vaterknoten
•
Setzen des Wurzelknotens
•
Setzen des Vaterknoten
Diese Funktionen werden über die entsprechenden Buttons auf der rechten Seite des
Fensters der Kontrolläche ausgelöst. Auch eine Generierung eines zufälligen Wertes,
wird durch den mit Fragezeichen versehenen Button ermöglicht.
14
EDU
D ATA
2.3. DATENSTRUKTUREN
2.3.7. Graph
Kurzbeschreibung Graph
Ein Graph besteht aus einer Menge von Knoten zwischen denen Kanten verlaufen. Es gibt
verschiede Arten von Graphen, wobei in dieser Anwendung ungerichtete oder gerichtete
Graphen mit ungewichteteten oder gewichteteten Kanten unterstüzt werden.
Bei einem ungerichtetem Graph wird angegeben, welcher Knoten mit welchem verbunden ist, ohne dass eine Richtung bestimmt wird. Gerichtete Graphen unterscheiden sich
von den ungerichteten dadurch, dass die Kanten eine Richtung haben. Auch können die
Knoten jetzt durch zwei Kanten unterschiedlicher Richtung verbunden sein. Wenn die
Kanten mit zusätlichen Attributen versehen werden wie zB. Länge oder Gewicht, spricht
man von einem gewichteten Graphen.
Operationen Graph
Der Graph stellt folgende grundlegenden Operationen zur Verfügung.
•
Auswahl ob gerichteter oder ungerichteter Graph
•
Einfügen von Knoten
•
Einfügen von Kanten
•
Löschen von Knoten
•
Löschen von Kanten
•
Setzen von Werten eines Knotens
•
Setzen von Werten einer Kante
•
Anzeige von:
mit Knoten verbundene Knoten
mit Knoten verbundene Kanten
Kanten die am Knoten starten
Kanten die am Knoten enden
Kante die zwei Knoten verbindet
Diese Funktionen werden über die entsprechenden Buttons auf der rechten Seite des
Fensters der Kontrolläche (siehe Abbildung 2.11) ausgelöst. In der Kontrolläche ist
auch eine Dropdownliste zu sehen, die es erlaubt eine der genannten Anzeigemöglichkeiten auszuwählen. Auch eine Generierung eines zufälligen Wertes, wird durch den mit
Fragezeichen versehenen Button ermöglicht.
15
EDU
D ATA
2.4. DARSTELLUNGSOPTIONEN
Abbildung 2.11.: Graph Operationen
2.4. Darstellungsoptionen
2.4.1. Animationsgeschwindigkeit
Die Animationsgeschwindigkeit kann in zwei Stufen geregelt werden. Dazu wählen Sie in
der Menüleiste Animationsmodus eine der beiden Stufe (siehe Abbildung 2.12) schnell
oder langsam aus. Sie sehen die gegenwärtige Einstellung anhand des Häkchens an dem
entsprechenden Menüeintrag.
Abbildung 2.12.: Animationsgeschwindigkeit
2.4.2. Layout
Das Layout des Fensters kann zum einen über den Menüeintrag Layout (siehe Abbildung2.13)
der Menüleiste oder durch ziehen des Fensterrahmens Ihren Bedürfnissen angepasst werden.
16
EDU
D ATA
2.5. REPLAY
Auch die stufenlose Vergröÿerung oder Verkleinerung der Datenstruktur in der View
können Sie veranlassen, indem Sie mit gedrückter rechter Maustaste die Maus bewegen.
Dabei entspricht der Bewegung zum Körper hin der Vergröÿerung und vom Körper weg
der Verkleinerung. Somit kann jede Datenstruktur nach ihren speziellen Bedürfnissen
dargestellt werden, egal ob es sich um eine Detailansicht einzelner Datenelement oder die
Gesamtanzeige einer groÿen Datenstuktur handelt.
Bendet sich die Datenstruktur nach der Vergröÿerung oder Verkleinerung nicht mehr
an dem gewünschten Platz, so können Sie die Datenstruktur frei auf der View platzieren. Dazu müssen sie den Mauszeiger über die Datenstruktur positionieren und dann
mit gedrückter linken Maustaste und durch Bewegung der Maus die Datenstruktur wie
gewünscht platzieren.
Abbildung 2.13.: Layout
2.5. Replay
Durch die Replayoptionen (siehe Abbildung 2.14) wird ihnen ermöglicht, eine Folge von
Befehlen auf einer Datenstruktur und den dazugehörigen Animationen problemlos zu wiederholen, abzuspeichern oder wieder zu laden. Wie diese einzelnen Punkte funktionieren,
wird in den Abschnitten 2.5.1 bis 2.5.4 beschrieben.
17
EDU
D ATA
2.5. REPLAY
Abbildung 2.14.: Replayoptionen
2.5.1. Replay aufnehmen
Durch drücken des Button Record (siehe Abbildung 2.14) kann eine Aufnahme gestartet
und wieder beendet werden.
2.5.2. Replay laden
Durch drücken des Button Speichern (siehe Abbildung 2.14) önet sich ein Dateiauswahlfenster, in dem das gewünschte Replay mit dem jeweiligen Dateinamen ausgewählt
werden kann. Durch einen Klick auf Button OK bestätigen Sie ihre Auswahl. Das ausgewählte Replay steht Ihnen jetzt zur Verfügung.
2.5.3. Replay speichern
Haben Sie mit dem Record Button eine Aufnahme getätigt, so können Sie diese auch
dauerhaft speichern. Dazu reicht ein Klick auf den Button Speichern (siehe Abbildung
2.14). Jetzt erscheint ein Dateiauswahldialog, in dem Sie den Pfad zum gewünschten
Speicherort eintragen und mit OK bestätigen. Jetzt ist das Replay gespeichert und
auch über diese Sitzung hinaus verfügbar.
2.5.4. Replaywiedergabe
Um ein Replay wiedergeben zu können müssen Sie in dieser Sitzung ein Replay aufgenommen haben(siehe Abschnitt 2.5.1) oder ein Replay geladen (siehe Abschnitt 2.5.2)
haben. Ist dies der Fall, können Sie über den Button Play das Replay starten, mit
Hilfe des Button Pause können Sie das Replay anhalten und mit den Forward und
Rewind Buttons können Sie sich im Replay vorwärts und rückwärts bewegen.
18
EDU
Teil II.
Entwicklerhandbuch
D ATA
EDU
D ATA
3. Visualisierungskomponente
3.1. Architekturübersicht
3.1.1. Struktur
Abbildung 3.1.: Übersicht der Teilkomponenten
Die Benutzerschnittstelle besteht aus drei Teilkomponenten, den Views, mit der Schnittstelle um Datenstruktur Visualisierungen hinzuzufügen, einem TabView, der Views in
Reitern darstellen kann und einem ViewMgr, der neue Views erzeugt und sicherstellt,
dass ein View entweder im TabView angezeigt wird oder als separates Fenster. Da kein
20
EDU
D ATA
3.1. ARCHITEKTURÜBERSICHT
Zugri auf Daten erfolgt, können all diese Komponenten auf der Präsentationsschicht
angesiedelt werden, wobei der ViewMgr als eine Art Controller fungiert.
Die Datenstrukturen untergliedern sich ebenfalls in drei Teilkomponenten, in Datenstruktur Visualisierung, Datenstruktur Logik und den Adapter, entsprechend dem MVA
Architekturmuster. Die Logikkomponente stellt Schnittstellen zum Zugri auf die Daten,
sowie die Operationen und für die Registrierung eines Observer s. Diese Schnittstellen werden vom Adapter genutzt. Die Visualisierungen bieten eine Schnittstelle zum Ausführen
von Animationen und dem Hinzufügen eines Observer s, welche ebenfalls vom Adapter
genutzt werden. Dieses Prinzip wird von den Komponenten Einfaches Datenelement, Ar-
ray, Liste, Allgemeiner Baum und Graph umgesetzt. In Abbildung 3.1 ist auÿerdem zu
sehen, dass die Visualisierung und die Logik von der Testapplikation genutzt werden,
wohingegen der Adapter zwischen diesen vermittelt und selbst nie direkt angesprochen
wird.
Benutzerschnittstelle und Datenstrukturen sind voneinander unabhängig, bis auf die
Tatsache, dass Visualisierungen der Datenstrukturen angezeigt werden müssen. Die Kopplung erfolgt in der Anwendung, welche die Visualisierungskomponente zur Datendarstellung verwendet.
3.1.2. Kommunikation
Das Komponentendiagramm aus Abbildung 3.1 zeigt das Strukturkonzept der Visualisierungskomponente zur Datendarstellung, die Kommunikation zwischen den einzelnen
Komponenten, sowie der Ablauf einzelner Anwendungsfälle wird in nachfolgenden Sequenzdiagrammen näher betrachtet.
Abbildung 3.2.: Kommunikationsablauf: Erzeugen einer Datenstruktur und zugehöriger
Visualisierung sowie Registrierung eines Observer
21
EDU
D ATA
3.1. ARCHITEKTURÜBERSICHT
Abbildung 3.3.: Kommunikationsablauf: Ausführung einer Operation, propagieren von
Änderungen und Aktualisierung der Visualisierung
Abbildung 3.4.: Kommunikationsablauf: Erzeugen und lösen eines Views
22
EDU
D ATA
3.2. ÜBERSICHT PROGRAMMSTRUKTUR
3.2. Übersicht Programmstruktur
3.2.1. Pakete
Abbildung 3.5.: Paketübersicht
Paketbeschreibung:
•
lib
Diese Klassen werden von der Visualisierungskomponente und der Beispielanwendung verwendet (Adapter).
•
lib.logic
•
In diesem Paket werden die logischen Datenstrukturen bereitgestellt.
lib.logic.util
In diesem Paket werden die Klassen zur Verwaltung der Events von den Datenstrukturen organisiert.
•
lib.util
In diesem Paket werden Klassen zum zeichnen und animieren der Datenstrukturen bereitgestellt.
•
lib.gui
•
Dieses Paket verwaltet die Klassen der View-Bearbeitung.
lib.visualisation
In diesem Paket werden die Animationen und Visualisationen für konkrete
Datenstrukturen bereit gestellt.
23
EDU
D ATA
3.2. ÜBERSICHT PROGRAMMSTRUKTUR
3.2.2. Programmstruktur Liste
Dieser Abschnitt erklärt das Klassenkonzept am Beispiel der Datenstruktur Liste. Ziel ist
es, ein Verständnis für die Struktur der Visualisierungskomponente zu vermitteln, sodass
es, mit Kenntnissen der Programmiersprache Java, möglich ist, eigene Datenstrukturen
zu ergänzen oder bestehende Komponenten zu erweitern.
Die Logik der Liste, also die möglichen Operationen und ihre Wirkung, sind in der
Klasse ListLogic des Paktes lib.logic implementiert, die Schnittstelle ist durch IListLogic
gegeben und ermöglicht es, die konkrete Implementierung auszutauschen, ohne umfangreiche Änderungen vornehmen zu müssen. Die innere Klasse Node entspricht den Knoten
einer Liste.
Im Paket lib.logic.util ndet sich die ListEventDispatcher Klasse. Sie ist abgeleitet
von BaseEventDispatcher, die das Hinzufügen und Löschen von Listenern übernimmt.
Als Typparameter wird hierbei die Listener-Klasse angegeben, sodass im Fall der Liste
nur IListListener als Listener registriert werden können. Der ListEventDispatcher hat
es zur Aufgabe, Ereignisse, die während der Ausführung von Operationen in ListLogic auftreten, an die jeweils registrierten Listener weiterzuleiten. Welche Events konkret
auftreten können, wird durch das IListListener Interface festgelegt.
Abbildung 3.6.: lib.logic
Die Visualisierung der Liste ndet sich im Paket lib.visualisation. Die Realisierung ist
in der Klasse ListVisual erfolgt, deren Schnittstelle über IListVisual beschrieben wird.
IListVisual leitet sich hierbei von IDrawable ab, sodass es möglich ist, ListVisual auf
einem View darzustellen. In View wird getDrawable aufgerufen, um die Grakkomponente zurückgeben zu lassen und diese dann zeichnen zu können. ListVisual benutzt zum
Zeichnen die Methoden der Klasse GraphDrawer. Diese implementiert wiederkehrende
Zeichenprozeduren graphenbasierter Datenstrukturen (bspw.: Liste, Baum, Graph). Neben dem GraphDrawer existiert der ArrayDrawer, der Zeichenoperationen für feldähn-
24
EDU
D ATA
3.2. ÜBERSICHT PROGRAMMSTRUKTUR
liche Datenstrukturen bietet (bspw.: Array, Element, Set). Die Klasse Animation legt
allgemeine Eigenschaften der animierten Darstellung von Operationen auf Datenstrukturen fest, dies umfasst Animationsgeschwindigkeit und -Art.
Abbildung 3.7.: Visualisation
Abbildung 3.8 zeigt das Zusammenspiel der Logik und der Visualisierung. Die AbstractList dient als Fassade und Adapter, sie koppelt Visualisierung und Logik und ist
gleichzeitig die Schnittstelle zur Datenstruktur. Entsprechend setzt sie alle Operationen
der Liste um und delegiert diese an die interne IListLogic Implementierung. Auÿerdem
implementiert AbstractList das IDrawable Interface, wodurch sie auf einem View dargestellt werden kann. Beide Interfaces werden in IList zusammengefasst und um Methoden
ergänzt, die es ermöglichen einzelne Elemente hervorzuheben. Die Klasse List leitet sich
von AbstractList ab. Sie dient dem Initialisieren der vis und list Eigenschaften der AbstractList Klasse mit konkreten Implementierungen.
25
EDU
D ATA
3.3. INTEGRATION EINER EIGENEN STRUKTUR
Abbildung 3.8.: Adapter
3.3. Integration einer eigenen Struktur
In diesem Abschnitt nden Sie eine mögliche Vorgehensweise, wie Sie an die Implementierung ihrer eigenen Datenstruktur herangehen können.
1. In dem Paket lib.logic erstellen Sie ein Interface und die Klasse für die logische
Umsetzung Ihrer Datenstruktur.
2. Als nächstes sollten Sie sich Gedanken machen, welche Schritte für die Visualisierung einer Operation dargestellt werden sollen und welche Informationen diese
Ereignisse haben müssen um korrekt dargestellt werden zu können. Aus diesen
Überlegungen erstellen Sie jetzt das Interface I[Datenstrukturname]Listener.
package lib.logic;
public interface I[Datenstrukturname]Listener {
public <T> void nodeAdded(T newValue, int pos);
public <T> void labelSet(int pos, String value);
....
}
3. In dem Pakekt lib.logic.util erstellen Sie eine Klasse [Datenstrukturname]EventDispatcher
und tragen hier ebenfalls ihre Methode ein.
26
EDU
D ATA
3.3. INTEGRATION EINER EIGENEN STRUKTUR
package lib.logic.util;
import lib.logic.I[Datenstrukturname]Listener;
public class [Datenenstrukturname]EventDispatcher
extends BaseEventDispatcher<I[Datenstrukturname]Listener> {
public <T> void fireNodeAdded(T newValue, int pos) {
for(I[Datenstrukturname]Listener listener : listeners){
listener.nodeAdded(newValue, pos);
}
}
....
}
4. Nachdem die Eventbehandlung soweit abgeschlossen ist, wird der konkrete Listener,
also eine Implementierung des Interfaces umgesetzt. Dazu erstellen Sie die abstrakte Klasse Abstract[Datenstrukturname] in dem Paket lib. Diese Klasse dient als
Adapter zwischen Visualisierung und Logic. Der konkrete Listener wird als innere
Klasse realisiert.
package lib;
import lib.logic.IListListener;
...
public abstract class Abstract[Datenstrukturname]<T>
implements I[Datenstrukturname]<T> {
protected I[Datenstruktur]Logic<T> list;
protected I[Datenstruktur]Visual vis;
public void add(T element, int pos) {
list.add(element, pos);
}...
public class [Datenstrukturname]Listener
implements IListListener {
public <U> void nodeAdded(U newValue, int tempPos) {
vis.add(newValue.toString(), tempPos);
}...
}
}
27
EDU
D ATA
3.3. INTEGRATION EINER EIGENEN STRUKTUR
5. Jetzt erstellen Sie in dem Paket lib.visualisation das Interface
I[Datenstrukturname]Visual ,welches die Klasse IDrawable erweitert und die dazugehörige Klasse [Datensrukturname]Visual . In diesen Klassen ndet jetzt die
grasche Umsetzung Ihrer Datenstruktur statt.
package lib.visualisation;
public interface I[Datenstruktur]Visual extends IDrawable {
public void add(String value, int pos);
public void setMark(int pos);
public void removeMark(int pos);
...
}
Für die Implementation dieser Methoden in der dazugehörigen Klasse wird das
Gark Framework Piccolo verwendet. Bitte sehen Sie sich dazu die API auf der Herstellerseite
http://www.cs.umd.edu/hcil/jazz/learn/piccolo/doc-1.2/api/
an und orientieren Sie sich an den schon implementierten Datenstrukturen. In den
Drawer Klasse im Paket lib.util sind schon vorgefertigte Zeichenmethoden die Sie
bei Bedarf übernehmen können.
6. In dem Paket gui erstellen Sie jetzt eine Klasse Control[Datenstrukturname]
um die Kontrollleiste den Aktionen für Ihre Datenstruktur anzupassen. Zur Orientierung können Sie die schon implementierten Datenstrukturen zur Hilfe nehmen.
7. Wenn Sie die Beispielanwendung nicht verwenden, können Sie jetzt die Visualisierung in Ihre entwickelte GUI integrieren.
28
EDU
Index
Index
Adapter, 25
lib.visualisation, 23
Allgemeiner Baum, 14
list, 25
Animationsgeschwindigkeit, 16
Liste, 12
API, 28
ListEventDispatcher, 24
Aufnahme, 18
Menge, 13
BaseEventDispatcher, 24
Pause, 18
Blatt, 14
platzieren, 17
Deinstallation, 6
positionieren, 17
dynamische Datenstruktur, 12
Programmstruktur, 23
EduData.jar, 6
Replay, 17
eigene Struktur, 26
Replay aufnehmen, 18
Einfaches Datenelement, 10
Replay laden, 18
Replay speichern, 18
Fassade, 25
Replaywiedergabe, 18
Feld, 11
Rewind, 18
Forward, 18
Systemumgebung, 5
gerichtete, 15
TabView, 9
gewichteteten, 15
Graph, 15
ungerichtete, 15
Hilfe, 8
ungewichteteten, 15
Index, 11
Vaterknoten, 14
Installation, 6
Vergröÿerung, 17
Verkleinerung, 17
Kind, 14
Versionsnummer, 9
Kontrolläche, 8
vis, 25
Layout, 16
wiederholen, 17
lib, 23
Wurzel, 14
lib.gui, 23
lib.logic, 23
Zustand laden, 8
lib.logic.util, 23
Zustand speichern, 8
lib.util, 23
29
D ATA
Herunterladen