Verwendung der Visage Java-API

Ähnliche Dokumente
Verwendung der Visage Java-API

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Eclipse 3.0 (Mac) 1. Eclipse installieren. 2. Welcome Projekt schliessen

JBuilderX: Installation und Kurzanleitung (Windows)

Eclipse 3.0 (Windows)

SX3 PC Software rev. 0.99c

Kurzanleitung zu XML2DB

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Breiten- und Tiefensuche in Graphen

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

So bringst du Prolog zum Laufen...

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Einführung in Javadoc

Verknüpfung auf dem Desktop erstellen und konfigurieren

Programmieren in Java

GameGrid mit BlueJ Seite 1

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Einführung in die Informatik Tools

Einbindung der Tastatur

Hello World in Java. Der Weg zum ersten Java-Programm

Zeiterfassung-Konnektor Handbuch

Eine Einführung in. für mathematisch- technische Assistenten / Informatik (IHK)

Java Programmierung auf der Konsole / unter Eclipse

Eclipse :Bis(s) zum Javacode Einführung in die Eclipse-IDE

Tutorium Java Ein Überblick. Helge Janicke

Einführung in die Nutzung von eclipse

Java Wireless Toolkit (JWT) Bei der Programmierung von Anwendungsprogrammen für mobile Endgeräte eignet sich die Verwendung des Java Wireless Toolkit.

Projekt AGB-10 Fremdprojektanalyse

Software-Engineering Grundlagen des Software-Engineering

Dokumentation des Projektes Tic Tac Toe

Konvertieren von Settingsdateien

VMscope GmbH. Plugins entwickeln für den VM Slide Explorer Daniel Heim, Seite 1/15

Handbuch B4000+ Preset Manager

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Grundlagen der Informatik Übungen 1.Termin

1. Der Einstieg in Java. Was heißt Programmieren?

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

Objektorientierte Programmierung

Übung zur Vorlesung Einführung in Software Engineering

- Technische Beschreibungen MIDOSAXML INSTALLATIONSANLEITUNG... 1

Diese Anleitung bezieht sich auf FixFoto, V In älteren oder neueren Versionen könnte die Arbeitsweise anders sein.

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

1 Vorraussetzungen. 2 Installiere Eclipse. FS 2015 Herausgabe: Dr. A. L. Schüpbach, D. Sidler, Z. István Departement Informatik, ETH Zurich

Einführung in Eclipse und Java

Probeklausur: Programmierung WS04/05

Grundlagen der Programmierung APPLETS

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Inhaltsverzeichnis. 2.2 Grundlagen der UML Zusammenfassung... 53

JDBC. Allgemeines ODBC. java.sql. Beispiele

KURZANLEITUNG CLOUD BLOCK STORAGE

3 Objektorientierte Konzepte in Java

Umstellung VPSMail von Java-Web-Start auf Installer

Blender-Tutorial: MP3, Ogg-Vorbis und MIDI in der Game Engine Stand:

5.5.8 Öffentliche und private Eigenschaften

Java-Schulung Grundlagen

ColorGenCalculator Kerstin Werner

1. BlueJ installieren (nach dem Buch Java lernen mit BlueJ von David J. Barnes; Michael Kölling)

Kurzanleitung Installation der Zend Studio Sprachpakete

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Installation / Aktualisierung von Druckertreibern unter Windows 7

Info: Standard DO-178B. 5. Mocking. Zusammenspiel von Klassen testen. Allgemein: Klassen testbar machen

Begleitendes Praktikum zur Vorlesung Künstliche Intelligenz

Anleitungen zu Inside FHNW

Allgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Asynchrone Webservices mit Axis 1.x in Java

7. Pakete Grundlagen der Programmierung 1 (Java)

Prozedurale Programmierung (PPG)

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Einführung in die Informatik 1 - Javainstallationsanleitung

ANT. Kurzvortrag von Manuel Schulze.

Das Build Tool Ant. Sebastian Mancke,

Aufgabenblatt Nr. 5 Generizität und TicTacToe

1. Der Einstieg in Java

Das Handbuch zu KSnapshot

Lego Mindstorms NXT über lejos und Eclipse mit Java programmieren

1 MAKROS AUFZEICHNEN. 1.1 Einführung

Leitfaden für die Installation der freien Virtual Machine. C-MOR Videoüberwachung auf einem VMware ESX Server

Auszug aus Axis2 Übungen

LEGO-Mindstorms-Roboter im Informatikunterricht 1 - mit Java-

Anleitung: Installation von WISO Mein Büro auf einem Mac

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Software-Update zum Buch 3D-Spieleprogrammierung mit DirectX 9 und C++

B) Klassenbibliotheken Turtle und Util (GPanel, Console) installieren Ein Unterverzeichnis classes auf der Festplatte erstellen, z.b.

Technische Beschreibung: EPOD Server

Installation und Nutzung des Audio-Chatsystems teamspeak3

PC-Kaufmann 2014 Datensicherung manuell einspielen

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

B) Klassenbibliotheken Turtle und Util (GPanel, Console) installieren Ein Unterverzeichnis classes auf der Festplatte erstellen, z.b.

Java I Vorlesung 11 Graphische Oberflächen mit Swing

3 Objektorientierte Konzepte in Java

Java Einführung Packages

Programmieren in Java

Installationsanleitung für R

Erste Schritte mit Eclipse

Java Einführung Abstrakte Klassen und Interfaces

Transkript:

Verwendung der Visage Java-API Whitepaper Andraes Fest Stand: 27. April 2010 bezieht sich auf Cinderella 2.1 Build 1197 1 Vorbemerkungen Die interaktive Geometrie-Software Cinderella bietet verschiedene Programmierschnittstellen. Neben der Programmierung in der Software-eigenen Skriptsprache CindyScript und in Python ist es auch möglich, animierte Algorithmen in Java über das in Cinderella eingebaute API zu implementieren. Dieses Interface ist besonders für die Programmierung von Graphenalgorithmen mit der Visage-Erweiterung geeignet. Allerdings unterscheiden sich die Möglichkeiten, die die Visage Java-API bietet in einigen Details von denen der CindySkript-Schnittstelle. Programme, die in CindyScript geschrieben werden, sind in das Cinderella User- Interface vollständig integriert und ermöglichen wesentlich bessere Interaktion mit der Zeichenoberfläche von Cinderella, z.b. durch Zusammenarbeit mit dem Cinderella-Event-Modell. So können Algorithmen sehr einfach bei jeder Veränderung der Inputinstanz just-in-time ausgeführt und ihr Ergebnis angezeigt werden. Die Visage Java-API bietet dafür geeignete Methoden, um Algorithmen schrittweise ausführen zu können und bei Bedarf einen entsprechenden Pseudocode anzuzeigen. Die volle Flexibilität der Cinderella Visage-Programmierung entfaltet sich vollends durch das geschickte Zusammenspiel der verschiedenen Programmierschnittstellen. Eine ausführliche Dokumentation beider Schnittstellen sowie eine Reihe von Beispielen werden nach und nach auf der Projektseite http://cinderella.de/visage/ zu finden sein. 1

2 Vorbereitungen Zur Verwendung der Cinderella Java-API wird Cinderella 2.1 Build 1197 oder höher benötigt. Eine aktuelle Version des Cinderella-Installationsprogramms kann von http://beta.cinderella.de/public/ heruntergeladen werden. Dort findet sich jeweils die aktuellste Beta-Version von Cinderella. Diese Cinderella-Version ist zunächst zu installieren. Für den Einsatz in diesem Kurs benötigen wir die Visage-Schnittstelle von Cinderella. Diese wird zur Zeit mit Cinderella zusammen weiterentwickelt. Für die Programmierung von Visage-Algorithmen empfiehlt es sich deshalb, stets die aktuellste Version von Cinderella zu installieren. Dazu muss lediglich im lib/-verzeichnis innerhalb des Cinderella-Installationspfades die Datei cindy2.jar gegen die aktuellste Version ausgetauscht werden, die ebenfalls von http://beta.cinderella.de/public/ heruntergeladen werden kann. Einen Versions-Log mit den für Visage relevanten Änderungen werden wir auf der Visage-Projekthomepage aufbauen. Außerdem wird eine Lizenz für Cinderella.2 benötigt. Eine entsprechende Lizenzdatei für den Kurs ADM wird zur Verfügung gestellt. Diese Datei muss in Cinderella geöffnet werden. Anschließend sollte Cinderella neu gestartet werden. 2.1 Visage starten Visage kann gestartet werden, in dem im Scripting -Menü der Punkt Visage starten ausgewählt wird. Alternativ können Sie die Toolbar von Cinderella ändern und so die Visage-Toolbar auswählen. Dies ist dann zu empfehlen, wenn Sie öfter mit Visage als mit dem Standard-Modus von Cinderella arbeiten wollen. Gehen Sie dazu mit der Maus auf einen freien Bereich der Toolbar, drücken die rechte Maustaste und wählen in dem erscheinenden Popup-Menü den Punkt Toolbars auswählen. Sie können dies auch im Datei-Menü finden. Nun erscheint ein kleines Fenster mit einer Auswahl, bei der Sie Visage wählen. Damit ändert sich die Toolbar, die meisten Buttons verschwinden, dafür erscheint ein neuer. Das Auswahlfenster kann nun geschlossen werden. Wenn Sie auf den neuen Visage-Button drücken, erscheint ebenso wie bei Auswahl von ein Visage starten im Scripting -Menü ein neues Auswahlfenster. Hier kann man verschiedene vorprogrammierte Graphen-Algorithmen wählen, z.b. Breitensuche, Tiefensuche oder Dijkstra, oder später auch selbst 2

implementierte Algorithmen. Je nach Algorithmus erscheinen oder verschwinden wieder einige Buttons zum Graphen konstruieren. Spielen Sie ruhig ein wenig damit rum! (Aber erschrecken Sie nicht, wenn ab und an Cinderella dabei abstürzt oder nicht mehr reagiert. Wie bereits erwähnt, Visage ist noch in der Entwicklung es ist noch nicht alles fehlerfrei. Starten Sie dann Cinderella neu und probieren etwas anderes. Wenn Ihnen solche Fehler auffallen, wäre es schön, wenn Sie uns benachrichtigen, was Sie vorher genau gemacht haben und was für eine Fehlermeldung dabei erschien. Schicken Sie Ihren Fehlerbericht bitte an visage@cermat.org)!!!!! Wenn Sie selbst entwickelte Algorithmen verwenden wollen, wählen Sie use external Algorithmus und geben den vollständigen Klassennamen ein. Es steht auch ein graphisches Auswahlfenster für eigene Algorithmen zur Verfügung. 2.2 Ausgaben auf die Konsole Cinderella schaltet Ausgaben auf die Konsole standardmäßig aus. Beim eigenen Entwickeln von Algorithmen möchte man jedoch gerne oftmals eigene Ausgaben mittels System.out.println(...) erzeugen oder die Fehlermeldungen der Exceptions auf System.err einsehen. Um also die Konsolen-Ausgaben zu sehen gehe man wie folgt vor: Mac OS X Die Kosolenausgaben erfolgen in der Konsole des gleichnamigen Programs,,Konsole im Verzeichnis Dienstprogramme. Vor dem Start von cinderella also einfach das Konsolen-Programm starten! Linux Im Installationspfad von Cinderella existiert eine Datei mit dem Namen Cinderella.lax. Diese Datei mit einem Texteditor öffnen! dort sucht man die Abschnitte,,LAX.STDERR.REDIRECT und,,lax.stdout.redirect und ändert die jeweiligen Einträge in lax.stderr.redirect=console bzw. lax.stdout.redirect=console Bitte speichern. Wird nun Cinderella aus einem xterm heraus gestarten, so erscheinen alle Ausgaben in dem xterm. 3

Windows Wie unter Linux ist die Datei Cinderella.lax zu ändern. Während des Cinderella-Starts bitte auf der Tastatur die CTRL/STRG-Taste drücken, damit das Konsolenfenster erscheint. (Das habe ich noch nicht getestet, wurde mir aber so von den Cinderella-Entwicklern so gesagt!) 2.3 Verwendung der API Bei Programmierung mit der Visage API muss die Library cindy2.jar aus lib-verzeichnis des Cinderella-Installationspfades eingebunden werden. Diese Library kann auch direkt von http://beta.cinderella.de/public/cindy2. jar heruntergeladen werden. Wir empfehlen die Verwendung einer Java IDE, z.b. Eclipse. Dort kann die Library direkt in ein eigenes Projekt gelinkt werden. Zu beachten ist, dass die meisten Namen der Klassen und Methoden von Cinderella verschlüsselt sind. Diese sind jedoch für die Verwendung der API irrelevant. Von Interesse sind nur die Klassen (und dort nur die Methoden), deren Namen in Klartext vorliegen. Man orientiere sich dazu an der Javadoc Dokumentation der API, die auf der Projekt-Homepage eingesehen werden kann. Ein eigener Graphen-Algorithmus muss von der abstrakten Klasse de.cinderella.api.visage.graphalgorithm abgeleitet werden. Zu implementieren sind folgende Mathoden: public void init() In dieser Methode erfolgt die Initialisierung des Algorithmus. Sie wird aufgerufen, sobald der Algorithmus in Cinderella geladen, der Rewind- Button gedrückt oder ein neues Element gezeichnet wird. public void runalgorithm() Hier wird der eigentliche Algorithmus implementiert. Der Ablauf des Algorithmus kann durch Einfügen des stepdone()-befehls an beliebiger Stelle angehalten werden. public boolean modeundirectededges() public boolean modedirectededges() public int modespecialvertices() 4

Diese Methoden legen fest, ob der Algorithmus gerichtete oder ungerichtete Kanten verarbeiten kann und ob spezielle Knoten wie Startund Zielknoten verwendet werden. public Color getdefaultvertexcolor() public Color getdefaultedgecolor() Diese Methoden legen Standardfarben für Knoten und Kanten fest. public String intlkey() Dies ist ein Eindeutig zu vergebener Name, der als Schlüssel dient, um dem Algorithmus eine sprachenspeziefische Beschreibung zuzuordnen. Wir empfehlen (z.b. bei Verwendung von Eclipse), denn Quellcode in einem src-verzeichnis und die compilierten class-dateien in einem bin-verzeichnis getrennt voneinander zu verwalten. Bei der Auswahl des eigenen Algorithmus in Cinderella kann dann das bin-verzeichniss als Basis-Pfad für die eignen Algorithmen ausgewählt werden. Es ist natürlich sehr empfehlenswert, alle eigenen Dateien einen eigenen Package zuzuordnen. In der ADM verlangen wir ein Package mit dem Namen der Benutzer-Gruppe im Unix-Pool also in etwa gunaxxx, wobei XXX die Gruppennummer ist! Falls das Eclipse-Projekt unter /eclipse-workspace/guna gespeichert ist, und dort die class-dateien in dem Verzeichnis bin im Package gunaxxx stehen, so sollte als Basis-Pfad für die Algorithmen /eclipse-workspace/guna/bin und als Klassenname gunaxxx.myalgo angegeben werden. Zeichnen Sie nun einen Graphen in Cinderella. Um Ihren Algorithmus schrittweise oder vollständig ausführen zu lassen, wählen Sie Ihren Algorithmus über den Visage-Button aus. In der Toolbar erscheint ein Play-Button, um den Algorithmus zu starten, sowie ein Rewind-Button, um ihn neu zu initialisieren. Es gibt zusätzlich einen Informations-Button, über den eingestellt werden kann, ob der Algorithmus schrittweise oder in einem Zug ausgeführt werden soll. Wird der Algorithmus schrittweise ausgeführt, so wird jeder Schritt über den Play-Button gestartet. 3 Ein Beispiel-Algorithmus Einen ersten Eindruck von der Implementation soll das folgende Beispiel liefern. Hierbei sollen nach einander zunächst alle Knoten eines Graphen und anschließend alle Kanten des Graphen einmal aufblinken. Nach dem 5

Blinken aller Knoten sowie nach dem Blinken jeder einzelnen Kante wird der Algorithmus unterbrochen, bis der Benutzer den nächsten Schritt ausführen läßt. package myvisage; import de.cinderella.api.visage.edge; import de.cinderella.api.visage.graph; import de.cinderella.api.visage.graphalgorithm; import de.cinderella.api.visage.vertex; import java.awt.*; import java.util.iterator; public class MyTestAlgorithm extends GraphAlgorithm { Graph G; private Color DEFAULT = Color.blue; public void init() { G = getgraph(); for (Edge e : G.edges()) { e.setsize(1); e.setcolor(default); for (Vertex v : G.vertices()) { v.setsize(3); v.setcolor(color.green); public void runalgorithm() { Iterator<Vertex> V = G.vertices().iterator(); 6

Vertex v; while (V.hasNext()) { v = V.next(); flash(v, Color.blue, 200, 1); v.setattribute("mark","unvisited"); stepdone(); for (Edge e: G.edges()) { e.flash(color.red, 200); e.setsize(1); e.setsize(5); stepdone(); public boolean modeundirectededges() { return true; public boolean modedirectededges() { return false; public int modespecialvertices() { return 0; public Color getdefaultvertexcolor() { return Color.green; public Color getdefaultedgecolor() { return Color.blue; public String intlkey() { 7

return "mytestalgorithm"; 8