Softwareumgebung
Generelles
Ziel des Praktikums ist es Verfahren zum Generieren von Graphen zu implementieren.
Damit das Rad nicht wieder neu erfunden werden muss benutzen wir die Programmbiblithek yFiles, die bestimmte notwendige Grundfunktionalitäten zur Verfügung stellt, wie z.B. eine Implementierung der Graph Datenstruktur. Alle Implementierungen werden in der Programmiersprache
JAVA durchgeführt.
Verzeichnisorganisation
Legen Sie ein Verzeichnis an, in welchem Sie alle Dateien, welche Sie beim Praktikum erzeugen werden, ablegen. Wir nennen dieses Verzeichnis in Zukunft das Praktikumsverzeichnis.
Erzeugen Sie in diesem Verzeichnis ein Unterverzeichnis mit ihrem Nachnamen (geschrieben in Kleinbuchstaben, ohne Umlaute und sonstige Sonderzeichen).
In diesem Verzeichnis hinterlegen Sie bitte alle JAVA Quelldateien.
Dieses Verzeichnis wird im Rest dieses Tutorials Quellverzeichnis
genannt.
GraphEditor YEd
Der GraphEditor YEd ist eine Anwendung zum Anzeigen und Editieren von Graphen. Gestartet wird der GraphEditor mittels folgender Eingabe in der shell:
java -classpath /net/algo/software/yfiles/yfiles-2.2.0.1-complete/demo/yed/yed.jar:. yed.Launcher
Sie sollten sich dabei im Praktikumsverzeichnis befinden, damit der Grapheditoren ihre Klassen finden kann.
YEd kennt sogenannte Module. Module sind über den Menüeintrag Tools(Werkzeuge) erreichbar.
Sie sollen ihren Generator als Modul implementieren damit er vom YEd aus aufrufbar ist.
Modul Programmierung
Generell sollten sie ihre Module mit dem Klassenpfad
/net/algo/software/yfiles/yfiles-2.2.0.1-complete/y.jar:.
kompilieren (Achtung der unterscheidet sich von obigem Klassenpfad !).
Die Klasse y.module.YModule ist die abstrakte Basisklasse für
YEd Module. Um ein eigenes Modul zu schreiben müssen Sie folgendes tun:
- Eine Klasse im Quellverzeichnis erzeugen, welche von
y.module.YModule ableitet
- Einen Konstruktor in dieser Klasse definieren, welcher keine Argumente entgegennimmt.
- Die Methode
mainrun() überschreiben.
Die Klasse tutorial.MyGenerator ist ein Beispiel für ein Graphgenerator-Modul welches einen kompletten Graphen mit 20 Knoten erzeugt.
Jedes Modul besitzt eine Referenz auf den Graphen, der gerade im YEd dargstellt wird.
Auf diesen Graphen kann über getGraph2D() zugegriffen werden.
Graphen
Die grundlegensten Eigenschaften von Graphen sind in der Klasse y.base.Graph definiert.
Knoten im Graphen werden mit der Methode createNode() erzeugt, Kanten mit der Methode createEdge(Node u,Node v).
Knoten werden mit der Methode removeNode(Node v) aus einem Graphen entfernt, Kanten mit der Methode removeEdge(Edge e).
Der Zugriff auf die Elemente im Graphen erfolgt über
sogenannte Cursor. Näheres dazu findet man hier.
Optionen
Natürlich ist es hilfreich wenn sie bei Ihrem Generator gewisse Parameter
setzten können, wie z.B. Knotenanzahl, oder Kantenwahrscheinlichkeit.
Ein Modul verwaltet deswegen einen sogenannten OptionHandler (y.option.OptionHandler).
Um den für ihr Modul passenden OptionHandler bereitzustellen, müssen Sie die Methode createOptionHandler() überschreiben.
Darin wird eine Instanz von y.option.OptionHandler erzeugt und
die verschiedenen Parameter deklariert.
Ein ganzzahliger Parameter wird z.B. mit der Methode
addInt(String name, int defaultValue) deklariert, ein
Fliesskomma-Parameter mit addDouble(String name, double defaultValue) und ein Boolscher Parameter mit addBool(String name, boolean defaultValue).
Dabei gibt jeweils das erste Argument den Namen des Parameters an, und das zweite Argument den voreingestellten Standardwert.
In der Methode mainrun() können Sie dann die aktuelle
Instanz mittels der Methode getOptionHandler() abrufen.
Die eingstellten Parameterwerte werden mittels den Methoden getInt(String name) und ihren entsprechenden Verwandten abgefragt.
Die Klasse tutorial.MyVanillaGenerator zeigt die Verwendung eines OptionHandler.
Module Deklarieren
Damit YEd auf neue Module zugreifen kann, müssen diese deklariert werden.
Module die unter Werkzeuge/Tools im YEd ansprechbar sein sollen, werden
in der Datei tools.pkg im Verzeichnis .yed des Heimatverzeichnis deklariert. Eine Beispieldatei, welche ausschlieslich den Beispiel-Graphgenerator von oben enthält ist diese tools.pkg.
Markus Eiglsperger
Last modified: Tue Mar 2 12:37:51 CET 2004