Fachbereich Informatik & Informationswissenschaft Universität Konstanz
Arbeitsgruppe Algorithmik

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:
  1. Eine Klasse im Quellverzeichnis erzeugen, welche von y.module.YModule ableitet
  2. Einen Konstruktor in dieser Klasse definieren, welcher keine Argumente entgegennimmt.
  3. 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