Fachbereich Informatik & Informationswissenschaft Universität Konstanz
Arbeitsgruppe Algorithmik

Wichtige Informationen zur Programmierung

Generelles

Ziel des Praktikums ist es Algorithmen zur Analyse von Netzwerken zu implementieren. Wir benutzen dafür die Programmbibliothek yFiles, die bestimmte notwendige Grundfunktionalitäten zur Verfügung stellt, wie z.B. eine Implementierung der Graph Datenstruktur. Sofern es möglich ist, sollten Datenstrukturen immer der yFiles-Bibliothek entnommen werden, um Kompatibilität zwischen den Programmen zu erreichen. Alle Implementierungen werden in der Programmiersprache JAVA durchgeführt.

Verzeichnisorganisation und CVS

Legen Sie ein Verzeichnis an, in welchem Sie alles, was zum Praktikum gehört, ablegen. Dieses Verzeichnis wird im Folgenden das Praktikumsverzeichnis genannt. In diesem Verzeichnis wird auch der Verzeichnisbaum angelegt, der unter der Kontrolle des CVS steht. Das geht wie folgt:

Sie müssen dem CVS mitteilen, wo sich das Archiv, das Sie benutzen, befindet. Dies kann auf zwei Arten geschehen:

  1. Fügen Sie in der Datei ~/.bashrc.<username> die Zeile export CVSROOT=/net/algo/cvs ein. Öffnen Sie eine neue Shell und arbeiten Sie in dieser weiter.
  2. Oder: Führen Sie das Kommando cvs jedesmal mit der Option -d /net/algo/cvs aus.

Wechseln Sie in das Praktikumsverzeichnis. Führen Sie dort das Kommando cvs checkout lehre/ws04/pp aus.

Wenn alles fehlerfrei ablief dann finden Sie jetzt einen Verzeichnisbaum der mit lehre beginnt. In lehre/ws04/pp/README steht, wie dieser Verzeichnisbaum organisiert ist.

Stellen Sie möglichst alles, mindestens aber alle Quelldateien (.java) unter die Kontrolle des CVS. Nützliche Kommandos sind:

Hilfe gibt es mit dem Kommando cvs --help bzw. cvs --help-commands. Ein sehr ausführliches Tutorial ist die CVS Dokumentation.

GraphEditor YEd

Der GraphEditor YEd ist eine Anwendung zum Anzeigen und Editieren von Graphen. Er ist sehr nützlich, wenn Sie Ihre Programme testen wollen, da Sie die Graphen (und eventuell auch die Resultate) als Bilder und nicht als lange Zahlenkolonnen sehen können. 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 Quellverzeichnis befinden, damit der Grapheditor ihre Klassen finden kann. YEd kennt sogenannte Module. Module sind über den Menüeintrag Tools(Werkzeuge) erreichbar. Sie sollen Ihre Programme von einem Modul aus aufrufen (das wiederum vom YEd aus aufrufbar ist).

Modul Programmierung

Generell sollten sie alle Programme 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.
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.

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, alle Klassen, die normalerweise im tools-Menü sind, einbindet, ist diese tools.pkg.

Programme Dokumentieren

Alle Programme, die Sie schreiben, müssen dokumentiert werden. Dies soll zum Einen die Verwendbarkeit der Programme gewährleisten (wie werden Methoden aufgerufen? was berechnen die Methoden? wie hängen die einzelnen Klassen zusammen?), zum Anderen soll der Programmcode verständlich und nachvollziehbar gemacht werden. Das zweite Ziel wird durch Kommentare im Quellcode (z.B. Zeilen, die mit // beginnen) erreicht. Zum ersten Punkt wird das Tool javadoc empfohlen. Wie dieses verwendet wird, wie Kommentare geschrieben werden, und vieles mehr steht auf der Javadoc Tool Home Page.


Jürgen Lerner