Bachelorthesis. Lejing Li Visualisierung von dezentralen und mobilen Energiedaten innerhalb eines Energie-Monitoring-Systems

Größe: px
Ab Seite anzeigen:

Download "Bachelorthesis. Lejing Li Visualisierung von dezentralen und mobilen Energiedaten innerhalb eines Energie-Monitoring-Systems"

Transkript

1 Bachelorthesis Lejing Li Visualisierung von dezentralen und mobilen Energiedaten innerhalb eines Energie-Monitoring-Systems Fakultät Technik und Informatik Department Informations- und Elektrotechnik Faculty of Engineering and Computer Science Department of Information and Electrical Engineering

2 Lejing Li Visualisierung von dezentralen und mobilen Energiedaten innerhalb eines Energie-Monitoring-Systems Bachelorthesis eingereicht im Rahmen der Bachelorprüfung im Studiengang Informations- und Elektrotechnik Studienrichtung Automatisierungstechnik am Department Informations- und Elektrotechnik der Fakultät Technik und Informatik der Hochschule für Angewandte Wissenschaften Hamburg Betreuender Prüfer : Prof. Dr. rer. nat. Thomas Klinker Zweitgutachter : Dr. Jin Gu Abgegeben am 18. Juni 2013

3 Lejing Li Thema der Bachelorthesis Visualisierung von dezentralen und mobilen Energiedaten innerhalb eines Energie-Monitoring-Systems Stichworte Energie-Monitoring, Energie- und Betriebsdatencontrolling, Java, JavaFX, GIS, Energieanalyse Kurzzusammenfassung Im Rahmen der Bachelorarbeit wurden zwei neue Plug-ins für die bestehende Energie-Monitoring-Software der Firma Envidatec GmbH entwickelt, um die Visualisierung von Energiedaten zu optimieren. Eines davon dient zur Darstellung der Energiedaten in einem Tortendiagramm. Das Andere beschäftigt sich damit, die Positions- und Energiedaten vom Schiff auf der Landkarte zu zeigen. Die Implementierung der Lösung erfolgt in Java. Lejing Li Title of the paper Visualization of Decentralized and Mobile Energy Data in an Energy Monitoring System Keywords Energy-monitoring, energy-data-controlling, operating-data-controlling, Java, JavaFX, GIS, energy-analysis Abstract In this thesis, two new plug-ins will be developed for the existing energy-monitoring-software of Envidatec GmbH, in order to optimize the visualization of energy-data. One of them is used for the representation of the energy-data in a pie chart. The other is concerned with showing the position- and energy-data of the Vessel on the map. The implementation of the solution is realized in Java.

4 Danksagung An dieser Stelle möchte ich mich bei all denjenigen bedanken, die mich während der Anfertigung dieser Bachelorarbeit unterstützt und motiviert haben. Ganz besonders gilt dieser Dank Herrn Prof. Dr. rer. nat. Thomas Klinker, der meine Arbeit und somit auch mich betreut hat. Er hat mir diese Chance gegeben, und immer wieder wertvolle Hinweise geliefert. Vielen Dank für die Geduld und Mühen. Ebenso bedanke ich mich bei Frau Dr. Jin Gu für ihre Arbeit als Zweitgutachter. Weiterhin gilt mein Dank den Kollegen der Firma Envidatec GmbH für die ausgiebige Unterstützung. Ich bedanke mich bei unserem Geschäftsführer Herrn Dipl.-Ing. Thomas Frank für die Aufnahme. Ich danke besonders meinem Firmenbetreuer Herrn Dipl.-Ing Nils Heinrich für seinen fachlichen Rat und die tatkräftige Unterstützung bei meiner Bachelorarbeit. Außerdem danke ich Herrn Florian Simon und Herrn Maximilian Konraedi für ihre technische Hilfe und Herrn Björn Kincke für die Korrektur meiner Arbeit. Ein großer Dank geht auch an meine Eltern, da sie während des Studiums nicht nur finanziell, sondern vor allem auch emotional immer für mich da waren.

5 Inhaltverzeichnis Inhaltverzeichnis Abbildungsverzeichnis... I Listingsverzeichnis... III 1 Einleitung Motivation Zielsetzung der Arbeit Gliederung der Arbeit Grundlagen Die Firma Envidatec GmbH Energiedatenportal My-JEVis Das Model-View-Controller-Konzept Allgemeines über MVC Wie MVC funktioniert MVC in der Arbeit JavaFX Allgemeines über JavaFX Die Struktur einer JavaFX Anwendung JavaFX in der Arbeit Die Integration von JavaFX in Swing Applikationen JAR-Datei hinzufügen JavaFX Inhalt auf eine Swing-Komponente hinzufügen Analyse der Aufgabenstellung Die Aufgabenstellung der Arbeit Die Anforderungsanalyse Vorgehensweisen der Arbeit Design Funktionalitäten JEPie JEGIS Die Architektur eines Plug-ins... 22

6 Inhaltverzeichnis 5 Realisierung Entwicklungsumgebung Ein neues Plug-in für JEGraph schreiben Realisierung des JEPie-Plug-ins Daten laden Daten einstellen Tortendiagramm zeichnen Ö ffnen des JEChart-Plug-ins Realisierung des JEGIS-Plug-ins Ö ffnung des Auswahldialogs Erprobung mit realen Daten Die Datenstruktur Die Routen einer Schifffahrt Analyse einer Teilroute Zusammenfassung und Ausblick Zusammenfassung Ausblick Literaturverzeichnis Anhang Versicherung über die Selbstständigkeit... 68

7 Abbildungsverzeichnis Abbildungsverzeichnis Abbildung 2-1: Automatisiertes Energie- und Betriebsdatencontrolling... 4 Abbildung 2-2: Ü berblick über die JEVis Architektur... 4 Abbildung 2-3: JEGraph Werkzeuge als Plug-ins in einem Fenster... 5 Abbildung 2-4: Model-View-Controller... 7 Abbildung 2-5: Beschreibung von hierarchischer Szene Grafik... 9 Abbildung 2-6: Hello World... 9 Abbildung 2-7: Jar Datei hinzufügen Abbildung 4-1: Das Hauptfenster Abbildung 4-2: Der Auswahldialog Abbildung 4-3: Die Datenreihe von einem Kaffeeautomat Abbildung 4-4: Tortendiagramm Abbildung 4-5: Ö ffnen des JEChart-Plug-ins Abbildung 4-6: Der Auswahldialog im JEGIS Abbildung 4-7: JEGIS Abbildung 4-8: Allgemeine MVC-Architektur Abbildung 5-1: Aktivetätsdiagramm vom JEPie Abbildung 5-2: MVC Struktur des JEPie-Plug-ins Abbildung 5-3: Klassendiagramm JEPie Abbildung 5-4: Klassendiagramm JEPieRequest Abbildung 5-5: Klassendiagramm JEPiePolicy Abbildung 5-6: Klassendiagramm JEPieModel Abbildung 5-7: Klassendiagramm JEPieController Abbildung 5-8: Klassendiagramm JEPieView Abbildung 5-9: Aktivitätsdiagramm vom JEGIS Abbildung 5-10: MVC Struktur des JEGIS-Plug-ins Abbildung 5-11: Klassendiagramm JEGIS Abbildung 5-12: Klassendiagramm JEGISRequest Abbildung 5-13: Klassendiagramm JEGISPolicy Abbildung 5-14: Klassendiagramm SetWaypointsCommand Abbildung 5-15: Datenstruktur Abbildung 5-16: Klassendiagramm JEGISModel Abbildung 5-17: Klassendiagramm JEGISView Abbildung 6-1: Die Datenstruktur in der Datenbank Abbildung 6-2: Die ganze Route der Schifffahrt Abbildung 6-3: die Teilroute von bis I

8 Abbildungsverzeichnis Abbildung 6-4: die Teilroute 13:00 bis 15: Abbildung 6-5: Verbrauch der Maschinen und das Drehmoment Abbildung 6-6: die Teilroute 2:00 bis 9: Abbildung 6-7: Verbrauch der Maschinen von 2:00 bis 9: II

9 Listingsverzeichnis Listingsverzeichnis Listing 2-1: Das Beispielprogramm Hello World... 9 Listing 2-2: Beispielprogramm: Integration von JavaFX in Swing Listing 2-3: Die Szene Listing 5-1: die Methode createplugin Listing 5-2: die Methode makepluginlist Listing 5-3: die Hauptklasse Listing 5-4: die Methode embeedview Listing 5-5: die Klasse Controller Listing 5-6: die Klasse Policy Listing 5-7: die Klasse Request Listing 5-8: die Klasse Command Listing 5-9: die Klassen Model und View Listing 5-10: TreeDialog Listing 5-11: Daten Einstellen Listing 5-12: Aufrufen der Methode setpiedata Listing 5-13: die Methode setpiedata Listing 5-14: Aufrufen des JEChart-Plug-ins Listing 5-15: Ö ffnen des Treedialogs und Sendung einer Frage Listing 5-16: Daten lesen Listing 5-17: Daten einstellen Listing 5-18: Aufrufen der Methode drawwaypoint Listing 5-19: die Methode drawwaypoint Listing 5-20: Zeichnung der Wegpunkte III

10 1 Einleitung 1.1 Motivation Das Messen und Überwachen von Energie- und Betriebsdaten ist in der heutigen Zeit ein essentielles Werkzeug, um an der kontinuierlichen Steigerung der Energieeffizienz in industriellen Anwendungen zu arbeiten, besonders in der Schiffsindustrie. Um die Energieeffizienz des Schiffsbetriebs zu steigern und dadurch Brennstoffverbrauch und Umweltbelastung zu senken, müssen die Energiedaten eines Schiffs ausführlich erfasst und überwacht werden. Die Monitoring-Software der Envidatec GmbH wurde speziell für die Auswertung und Verarbeitung von energie- und betriebsrelevanten Prozessgrößen entwickelt. Die Firma möchte die Software in die Richtung der Schiffsindustrie erweitern. Deshalb werden in der vorliegenden Arbeit neue Funktionalitäten für diese Software entwickelt, um die Schiffsdaten zu visualisieren und die Anwendungsmöglichkeiten zu erweitern. 1.2 Zielsetzung der Arbeit Das Ziel dieser Arbeit ist es, neue Plug-ins für eine bestehende Energie-Monitoring-Software der Firma Envidatec GmbH zu entwickeln. Mit dem erstem Plug-in werden die Energiedaten in einem Tortendiagramm dargestellt. Das zweite Plug-in dient dazu, die Visualisierung von Energiedaten unter Berücksichtigung der Positionsdaten zu realisieren. Der Benutzer sollte in der Lage sein, die Energie- und Positionsdaten eines Containerschiffs von der Datenbank auslesen zu können. Auf der Karte werden die Route und der Energieverbrauch des Schiffs angezeigt.

11 1 Einleitung Um ein klar definiertes Konzept und Design des Programms zu erhalten, werden bei der Entwicklung Verfahren und Methoden der objektorientierten Softwareentwicklung angewendet. Außerdem soll das Programm auf einer Architektur aufbauen, die zukünftige Erweiterungen, z.b. zu anderen Systemen mit positionsabhängigen Energiedaten, ermöglicht. 1.3 Gliederung der Arbeit Das zweite Kapitel dieser Arbeit erläutert die theoretischen Grundlagen, die für den weiteren Verlauf der Arbeit notwendig sind. Dazu werden die Firma Envidatec GmbH und ihre Software My-JEVis vorgestellt. Außerdem werden Model-View-Controller Entwurfsmuster und JavaFX beschrieben, die für die Programmierung in dieser Arbeit eine wichtige Rolle spielen. Das Kapitel 3 stellt die Aufgabestellung vor. Dazu werden die Anforderungen analysiert. Kapitel 4 beschäftigt sich mit dem Entwurf des Programms. Nach den Anforderungen der Aufgabenstellung werden die Funktionalitäten und die Architektur des Programms beschrieben. Das Kapitel 5 befasst sich damit, wie das im Kapitel 4 beschriebene Design realisiert wird. Dazu gehört die Beschreibung der Programme der Plug-ins. Im Kapitel 6 wird die Erprobung der Plug-ins beschrieben und eine Bewertung der Ergebnisse vorgenommen. Abschließend gibt das Kapitel 7 eine kurze Zusammenfassung der Arbeit sowie einen Ausblick darüber, wie die Lösung erweitert oder verbessert werden könnte 2

12 2 Grundlagen In diesem Kapitel werden grundlegende technische Voraussetzungen der Arbeit vorgestellt. Abschnitt 2.1 ist die Vorstellung der Firma Envidatec GmbH. Abschnitt 2.2 stellt das Energiedatenportal My-JEVis und dessen grafische Benutzeroberfläche JEGraph vor, die als Basis für den weiteren Verlauf der Arbeit dienen. Im Abschnitt 2.3 wird das Model-View-Controller Konzept (MVC) beschrieben. MVC ist das Entwurfsmuster der Programmierung in dieser Arbeit. Das Framework der Programmierung, JavaFX, wird im Abschnitt 2.4 vorgestellt. Abschnitt 2.5 beschreibt, wie man JavaFX in eine Swing-Anwendung hinzufügt. 2.1 Die Firma Envidatec GmbH Die Envidatec GmbH wurde im Jahr 2001 aus einem Kompetenzzentrum für Energieeffizienz des E.ON Konzerns als unabhängiges Unternehmen gegründet. Der Hauptsitz befindet sich in Deutschland, im südlichen Teil von Hamburg. Die Envidatec GmbH setzt Zukunftstandards im Betriebsdaten- und Energiemanagement, sowohl mit den Energiedienstleistungen als auch mit den darauf abgestimmten intelligenten Systemen. Ihre Kernkompetenzen sind: Energiemanagementsysteme Energieeffizienzanalyse Energiedatencontrolling Individuelle Energiemanagement-Konzepte und -Lösungen Ziel ist es den Energieverbrauch und die Energiekosten in Unternehmen nachhaltig zu reduzieren. Die Envidatec GmbH bietet kundenspezifische Monitoring-Lösungen, Schulungen sowie die Realisierung und Betreuung von Energieeffizienz-Projekten an. Außerdem bietet Envidatec ihren Kunden eine Software zur automatisierten Erfassung, Analyse und Visualisierung von Energie- und Betriebsdaten, das

13 2 Grundlagen My-JEVis System. Abbildung 2-1 zeigt wie das Datencontrolling-System funktioniert. Abbildung 2-1: Automatisiertes Energie- und Betriebsdatencontrolling [1] 2.2 Energiedatenportal My-JEVis Das JEVis System ist die Monitoring-Software der Envidatec GmbH, welche speziell für die Auswertung und Verarbeitung von energie- und betriebsrelevanten Prozessgrößen entwickelt wurde. Das Energiedatenportal ermöglicht den Kunden, einfach und kostengünstig die Verbräuche, Produktionsdaten und Kosten im Blick zu behalten. Es bietet eine grafische Oberfläche, auf dem die Energiedaten dargestellt und verglichen werden können. Die Architektur des JEVis Systems ist in Abbildung 2-2 dargestellt. Abbildung 2-2: Überblick über die JEVis Architektur 4

14 2 Grundlagen Das JEVis System kann mit einer Vielzahl verschiedener Datenquellen kommunizieren, Daten auslesen und nachgestellte Auswertungen der Daten steuern und visuell aufbereiten. Die erfassten Daten werden innerhalb des JEVis Systems in einer Datenbank gespeichert. Alle Komponenten des JEVis Systems sind in Java geschrieben und können auf allen Betriebssystemen genutzt werden (z.b. Windows, Linux). JEGraph Die grafische Benutzeroberfläche Das Modul JEGraph (siehe der schwarz Rahmen in Abbildung 2-2) ist die grafische Benutzeroberfläche vom JEVis System. JEGraph ist ein Tool, zum Visualisieren, Vergleichen und Analysieren von Energie- und Betriebsdaten. Die Daten werden in Kurvenverläufen übersichtlich dargestellt. Mit verschiedenen Analysewerkzeugen kann man die Darstellungen der Diagramme individuell einstellen (siehe Abbildung 2-3). Abbildung 2-3: JEGraph Werkzeuge als Plug-ins in einem Fenster [2] Im JEGraph gibt es viele Analysemethoden, z.b. JEChart, JEBench und JEAlarm, die in der Form von Plug-ins hinzugefügt worden sind. Neue grafische Plug-Ins können in der existierenden JEGraph Umgebung eingebettet werden. In dieser Arbeit werden zwei neue Plug-ins für JEGraph geschrieben. 5

15 2 Grundlagen 2.3 Das Model-View-Controller-Konzept Im JEGraph sind alle Plug-ins mit dem Entwurfsmuster Model-View-Controller geschrieben, deshalb ist MVC ein sehr wichtiges Konzept für diese Arbeit. In diesem Abschnitt wird das MVC-Konzept vorgestellt Allgemeines über MVC Der Begriff MVC (englisch: model-view-controller; deutsch: Modell-Präsentation- Steuerung) ist ein Muster zur Strukturierung von Software-Entwicklung in drei eigenständige Module, und zwar Datenmodell (engl. model), Präsentation (engl. view) und Programmsteuerung (engl. controller). Ziel des Musters ist ein flexibles Programmdesign, das eine spätere Änderung oder Erweiterung erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten ermöglicht. [3] Folgende Vorteile ergeben sich: Die Daten, die Präsentation und die Steuerung sind klar getrennt Ein Modell kann durch viele Präsentationen repräsentiert werden Die Systeme können einfach erweitert werden, besonders geeignet für ein großes System Wie MVC funktioniert Das Modell (model) dient zur Speicherung benötigter Daten und auch der Geschäftslogik. Die Präsentation (view) ist für die Darstellung der Daten zuständig, d.h., sie visualisiert die Daten aus dem Modell. Die Präsentation ist der einzige Teil, der von dem Benutzer gesehen werden kann. Die Steuerung (controller) verwaltet das Modell und die Präsentation. Sie entscheidet aufgrund der Benutzeraktion in der Präsentation (z.b. ein Button), welche Daten im Modell geändert werden müssen. In Abbildung 2-4 wird der Ablauf einer Benutzeraktion in einer MVC-Struktur dargestellt. Daraus kann man erkennen, dass die drei Einheiten, Model, View und Controller, klar getrennt sind. Wenn es eine Benutzeraktion gibt, z.b. ein Button gedrückt wird, um einige Daten zu ändern, sendet der Button dem Controller eine Anfrage (Request). Wenn der Controller die Anfrage bearbeiten kann, wird 6

16 2 Grundlagen ein entsprechender Command dem Command Stack übergeben. Danach wird der Command auf dem Modell durchgeführt, d.h. die Daten im Modell werden geändert. Wenn die Anforderung erfüllt wird, informiert das Modell den Controller, der Controller aktualisiert dann die Präsentation (view). [4] Abbildung 2-4: Model-View-Controller MVC in der Arbeit Innerhalb des JEGraphs benutzen wir MVC für die Plug-ins. Die Hauptklassen sind die Controller Klasse, die Model Klasse, die View Klasse und der Command Stack. Spezielle Klassen sind die Controller Policy Klasse, die Request Klasse und die Command Klasse. Auch das Observable Interface wird benötigt, das von Java API zur Verfügung gestellt wird. Die genauere Anwendung von MVC in der Arbeit wird im Kapitel 4 erläutert. 7

17 2 Grundlagen 2.4 JavaFX In dieser Arbeit werden einige Komponenten von JavaFX benutzt, auch deshalb wird JavaFX in diesem Abschnitt vorgestellt. Hier wird eine Beispielanwendung von JavaFX beschrieben Allgemeines über JavaFX JavaFX ist ein Framework für eine plattformübergreifende Rich-Internet-Applikation. Es ist eine Java-Spezifikation entwickelt von Oracle und steht in direkter Konkurrenz zu Adobe Flash bzw. Flex und Microsoft Silverlight. JavaFX besteht aus einer Reihe von Grafik- und Medien-Pakete und lässt die Entwickler Rich-Client-Anwendungen entwerfen, erstellen, testen und debuggen. Es ist eine Java Bibliothek, die die Klassen und Schnittstellen enthält, die in nativem Java Code geschrieben wurden. Die in den Java-Klassenbibliotheken enthaltenen Funktionen und Schnittstellen sind bei der Entwicklung von JavaFX-Applikationen auch verfügbar. JavaFX hat folgende wichtige Eigenschaften: [5] In Standard-Java geschrieben JavaFX-Applikationen sind einfach zu verteilen Hardware-beschleunigte Grafik Pipeline Swing Interoperabilität WebView Die Struktur einer JavaFX Anwendung Eine JavaFx Applikation definiert die Benutzeroberfläche Container mittels einer Stage und einer Scene. Die JavaFX Stage Klasse ist die Top-Level JavaFX Container. Die JavaFX Scene Klasse ist der Container für alle Inhalte. Mit dem berühmten Beispielprogramm Hello World können wir die Grundstruktur einer JavaFX Anwendung genauer sehen, siehe Listing 2-1. Dieses Beispiel stammt aus dem JavaFX Tutorial [6]. public void start(stage primarystage) { primarystage.settitle("hello World!"); Button btn = new Button("Say 'Hello World'"); 8

18 2 Grundlagen } // Den Wurzelknoten StackPane root = new StackPane(); // Den Button in den Wurzelknoten einfügen root.getchildren().add(btn); // Der Wurzelknoten in die Szene hinzufügen Scene scene = new Scene(root, 300, 250); // Die Szene auf der Stage erstellen primarystage.setscene(scene); Listing 2-1: Das Beispielprogramm Hello World In JavaFX wird der Inhalt der Szene in einer hierarchischen Szene-Grafik von Knoten repräsentiert. In diesem Beispiel ist der Wurzelknoten ein StackPane Objekt, welches ein Größe-veränderbarer Layout-Knoten ist. Der Wurzelknoten wird in die Scene hinzugefügt und enthält einen Child-Knoten, einen Button btn mit dem Titel Say Hello World. Abbildung 2-5 zeigt die Hierarchie in diesem Beispielprogramm. Abbildung 2-5: Beschreibung von hierarchischer Szene Grafik Wenn das Programm ausgeführt wird, können wir ein Fenster mit dem Titel Hello World sehen, darin der Button steht, wie in Abbildung 2-6 dargestellt. Abbildung 2-6: Hello World In anderen Fällen, nachdem wir die Stage und die Szene bilden, können wir andere Komponente in die Szene hinzufügen, z.b. ein Diagramm, um andere JavaFX Applikationen zu erstellen. 9

19 2 Grundlagen JavaFX in der Arbeit In der Arbeit werden die Plug-ins mit den Komponenten von JavaFX programmiert. Um die Energiedaten zu visualisieren, benutzen wir das Diagramm im javafx.scene.chart Paket. Vor allem brauchen wir die Klasse PieChart. Mit diesem Tortendiagramm können wir die Verteilung der Energiedaten zeigen. Warum benutzen wir JavaFX? Bisher sind alle Plug-ins in unserem Programm JEGraph mit der Bibliothek IBM ILOG geschrieben. Aber diese Bibliothek ist nicht komplett open source und man muss dafür viel bezahlen. Unser System wäre ein open source System. Deshalb muss eine bessere Lösung gefunden werden. JavaFX dagegen ist vollständig kostenlos und enthält dazu vielfältige Funktionen. Z.B. können wir viele verschiedene Diagramme mit dem javafx.scene.chart Paket erstellen. Die Diagramme haben reichliche Inhalte und schönes Aussehen. Sie können unsere Anforderung gut erfüllen. 10

20 2 Grundlagen 2.5 Die Integration von JavaFX in Swing Applikationen Das Programm JEGraph hat die Komponenten von Swing benutzt. Wenn man ein neues Plug-in mit JavaFX schreibt, muss man zuerst JavaFX in Swing integrieren. Dieser Abschnitt befasst sich damit, die Integration von JavaFX in Swing zu realisieren JAR-Datei hinzufügen Als Erstes muss eine JAR-Datei in die Bibliothek eines Java-Projekts hinzugefügt werden, wie es in Abbildung 2-7 dargestellt wird. Die Datei heißt jfxrt.jar. Sie befindet sich im installierten JDK. jfxrt.jar ist die Bibliothek-Datei von JavaFX, mit der die JavaFX-Komponenten in einem Projekt benutzt werden können. Hierzu klickt man mit der rechten Maustaste auf das Projekt und wählt unter Properties -> Libraries -> Add JARs aus und fügt die JAR-Datei hinzu. Abbildung 2-7: Jar Datei hinzufügen 11

21 2 Grundlagen JavaFX Inhalt auf eine Swing-Komponente hinzufügen JavaFX SDK bietet die JFXPanel Klasse, die sich in dem javafx.embed.swing Paket befindet. JFXPanel ermöglicht uns, die Inhalte von JavaFX in die Swing Applikationen einzubetten. Im folgenden Beispielprogramm (siehe Listing 2-2) JavaFXEmbedInSwing wird deutlich, wie man JFXPanel benutzen kann. public class JavaFXEmbedInSwing { public static void main(string[] args) { // Ein JFrame als das Hauptfenster erzeugen final JFrame window = new JFrame("JFXPanel"); window.setsize(500, 300); window.setvisible(true); // Ein JFXPanel instanziieren final JFXPanel fxpanel = new JFXPanel(); // JFXPanel der ContentPane hinzufügen window.getcontentpane().add(fxpanel); Listing 2-2: Beispielprogramm: Integration von JavaFX in Swing Wir erzeugen eine JFrame-Komponente window, wie in Listing 2-2 dargestellt, als das Hauptfenster des Beispielprogramms. Darin fügen wir ein JFXPanel Objekt fxpanel ein. Auf dem fxpanel kann man dann die grafische Szene erstellen. Danach können wir die Inhalte von JavaFX in die Szene hinzufügen (siehe Listing 2-3). Derselbe wie in einer JavaFX Anwendung, siehe Kapitel 2.4.2, Listing 2-1. Platform.runLater(new Runnable() public void run() { Scene scene = new Scene(new Group()); fxpanel.setscene(scene); // Die Szene im FXPanel stellen // Danach können wir JavaFX Inhalte // der Szene hinzufügen } }); Listing 2-3: Die Szene 12

22 3 Analyse der Aufgabenstellung Im folgenden Kapitel soll die Aufgabenstellung dieser Arbeit vorgestellt werden. Dazu werden die Anforderungen analysiert. Durch die Klärung der Anforderungen wird dann die Vorgehensweise dieser Arbeit erklärt. 3.1 Die Aufgabenstellung der Arbeit Im Rahmen der Bachelorarbeit wird im Rahmen einer bestehenden Energie-Monitoring-Software der Firma Envidatec GmbH eine neue Visualisierung von Energiedaten unter Berücksichtigung der Positionsdaten realisiert. Die Anwendung dieser Lösung liegt vor allem in der Analyse von mobilen Messungen, z.b. im Bereich der Container-Schifffahrt, sowie in der standortübergreifenden Analyse von Liegenschaften in einem Unternehmensverbund. Die Implementierung der Lösung erfolgt in Java. Aufgaben im Einzelnen: - Analyse der Anforderungen - Einarbeitung in bestehende GUI Design-Konzepte - Untersuchung der zur Verfügung stehenden Grafik-Bibliotheken und APIs - Beschreibung eines Darstellungskonzept - Implementierung des Darstellungskonzepts - Erprobung mit realen Messdaten - Ausführliche Dokumentation der Vorgehensweise und Ergebnisse - Präsentation der Arbeit

23 3 Analyse der Aufgabenstellung 3.2 Die Anforderungsanalyse In der Arbeit werden zwei grafische Plug-ins für das Programm JEGraph geschrieben, JEPie und JEGIS. Mit JEPie kann man die Energiedaten in einem Tortendiagramm darstellen. JEGIS dient zur kombinierten Visualisierung von Energiedaten (z.b. Energieverbrauch) und GPS Daten. Hierbei unterscheiden sich die JEGraph Plug-Ins von denen die man beispielsweise von Eclipse kennt: Sie gehören zum Funktionsumfang und sind bisher nicht zur Laufzeit nachladbar. Generelle Anforderungen: [7] JEPie und JEGIS sind additionale GUI Plug-ins integriert im JEGraph Umgebung. Die Plug-Ins sollen sich in die durch JEGraph gegebene Umgebung einfügen Um die neuen Plug-ins im JEGraph einzubetten, muss die Einarbeitung in existierender GUI Design-Konzept durchgeführt werden. JEGraph bietet verschiedene Interfaces und vorgegebene Klassen um ein JEGraph-Plug-in implementieren zu können. So ist es später beispielsweise möglich verschiedene Plug-ins zu verlinken und somit die Zeitbereiche zu verknüpfen. Im JEPie werden die Energiedaten mit einem Tortendiagramm dargestellt. Die Klasse javafx.scene.chart.piechart aus der Bibliothek JavaFX wird benutzt. Die Datenbank-Kommunikationen soll mit der JECapi Kommunikations-Bibliothek realisiert werden. Dazu sollte die Anwendung von JECapi geklärt werden. Die Landkarten des JEGIS werden mit der Java Bibliothek swingx-ws realisiert. Eine Route besteht aus mehreren Wegpunkt-Koordinaten. Sie soll auf die Karte mit zugehörigen Energiedaten angezeigt werden können. Die Wegpunkte sollten in chronologischer Reihenfolge verbunden werden. 14

24 3 Analyse der Aufgabenstellung Wenn ein Waypoint per Maus gedrückt wird, erscheint die dazu gehörten Energiedaten und GPS Daten. 3.3 Vorgehensweisen der Arbeit Das Model-View-Controller-Enwurfsmuster erlernen, um kennenzulernen, wie man ein Plug-in für JEGraph schreiben kann. JavaFX zu lernen, um die Tortendiagramm in JavaFX nutzen zu können. JECAPI kennenzulernen, um die Daten laden zu können. JavaFX in JEGraph einzubetten, um das Plug-in JEPie zu realisieren. swingx-ws kennenzulernen, um die Landkarte in Java hinzuzufügen, Waypoints zeichnen zu können und das Plug-in JEGIS zu realisieren. Mit realen Daten erproben und bewerten. 15

25 4 Design Im folgenden Kapitel wird das Designkonzept meiner Plug-ins vorgestellt. Die Aufgaben wurde dabei in zwei Teile aufgeteilt, JEPie, JEGIS. Für diese werden zuerst jeweils die entworfenen Funktionalitäten beschrieben. Im Anschluss daran wird die Architektur eines Plug-ins vorgestellt. 4.1 Funktionalitäten Wenn das Programm JEGraph ausgeführt wird, erscheint das Hauptfenster, wie in Abbildung 4-1 dargestellt. Die Plugin-Icons sind am oberen linken Rand angeordnet (in dem roten Rahmen). Von links nach rechts sind JEPie, JEChart, JEGIS, JEDigital und JEBench. Wenn ein Icon gedrückt wird, wird das entsprechende Plug-in aufgerufen. In den folgenden Abschnitten werden die Funktionalitäten von JEPie und JEGIS vorgestellt. Abbildung 4-1: Das Hauptfenster

26 4 Design JEPie JEPie ist ein neues Plug-in, um die Energiedaten als Tortendiagramm zu visualisieren. Wenn das Plug-in JEPie aufgerufen wird, erscheint ein Auswahldialog (Data tree), wie in Abbildung 4-2 gezeigt. Dieser Auswahldialog ermöglicht die Auswahl der Datenreihen und des Zeitraums, die dargestellt werden sollen. Hierzu wird wie auch sonst im JEGraph üblich eine Baumstruktur verwendet. Man kann auch auf der linken Seite den Button Load Data drücken, um den Auswahldialog zu öffnen. Load Data Kaffeeautomat Kaffeemaschine Abbildung 4-2: Der Auswahldialog Diese Datenreihen sind Energiedaten von unterschiedlichen Anlagen und sehen so wie in Abbildung 4-3 dargestellt aus. Diese Grafik zeigt wie viel Energie ein Kaffeeautomat in dem angegebenen Zeitraum verbraucht hat. Abbildung 4-3: Die Datenreihe von einem Kaffeeautomat 17

27 4 Design Werden beispielsweise zwei Datenreihen ausgewählt (Kaffeeautomat und Kaffemaschine, wie in Abbildung 4-2 gezeigt), liest das Programm alle Werte dieser Datenreihen. Dann werden die Werte von den letzten Zeitpunkten des gegebenen Zeitraums herausgefunden. Wenn die letzten Zeitpunkte jeweiliger Datenreihen unterschiedlich sind, nehmen wir die frühste, sonst können die Daten nicht verglichen werden. Das Programm öffnet dann das Tortendiagramm (Pie Diagramm, siehe Abbildung 4-4). Dieses zeigt die Verteilung der Energiedaten. Anhand des Diagramms kann man erkennen, welche Anlage relativ betrachtet mehr Energie verbraucht hat. Die Anteile werden mit Prozentzahlen beschriftet. Die Grafik hat auch eine Legende, die die Namen der Datenreihen, die Anteile, die aktuellen Werte, die Zeitpunkte zeigen kann. Abbildung 4-4: Tortendiagramm Wenn das Tortendiagramm per Mauszeiger gedrückt wird, z.b. der Gelbe Teil (Kaffeautomat), ruft das Programm ein anderes Plug-in JEChart, um die ausführlicheren Daten von dem ganzen ausgewählten Zeitraum mit einem Barchart darzustellen, wie in Abbildung 4-5 dargestellt. 18

28 4 Design Abbildung 4-5: Öffnen des JEChart-Plug-ins 19

29 4 Design JEGIS Wenn man auf dem Hauptfenster von JEGraph das Icon JEGIS drückt, wird das Plug-in JEGIS aufgerufen. Mit JEGIS kann man die Energiedaten unten Berücksichtigung der Positionsdaten visualisieren. Dieses Plug-in wird vor allem in der Analyse von mobilen Messungen benutzt, z.b. im Bereich der Container-Schifffahrt. Im JEGIS erscheint zuerst eine Weltkarte. Mit der Maus kann man die Landkarte bewegen, vergrößern oder verkleinern. Auf der linken Seite der Landkarte gibt es einige Buttons. Wenn man den Button Load Data drückt, erscheint ein Auswahldialog (Data tree), wie in Abbildung 4-6 dargestellt. Dort kann man die Daten von den verschiedenen Schiffen auswählen. Die Schiffsdaten bestehen aus den Positionsdaten (GPS Daten: Latitude, Longitude, Geschwindigkeit, Höhe und Richtung) und den Energiedaten (Verbrauch der Maschinen, Drehmoment). Load Data MS Nordpol Abbildung 4-6: Der Auswahldialog im JEGIS Wenn beispielsweise das Schiff 1 ausgewählt wird, liest das Programm alle Daten von diesem Schiff aus. Diese Daten werden bearbeitet und in verschiedenen Wegpunkten gespeichert. Dann werden die Wegpunkte dieses Schiffs auf der Landkarte angezeigt, wie in Abbildung 4-7 dargestellt, um die Route des Schiffs zu zeichnen. Wenn der Mauszeiger über einem Wegpunkt ist, erscheinen die dazu gehörten GPS-Daten (siehe Abbildung 4-7, das schwarz Fenster). Anhand der Landkarte kann man deutlich erkennen, wie die Schifffahrt aussieht und wie 20

30 4 Design schnell das Schiff auf jedem Punkt fährt. Auf der Landkarte gibt es auch eine Legende, die die Namen der Datenreihen (in diesem Fall: Name des Schiffs), den Zeitraum der Schifffahrt, die Anfangs- und Endeposition zeigen kann. Abbildung 4-7: JEGIS 21

31 4 Design 4.2 Die Architektur eines Plug-ins Das JEGraphs benutzt das Model-View-Controller Entwurfsmuster. Außer den Hauptklassen: die Model Klasse, die View Klasse, die Controller Klasse. Noch einige spezielle Klassen: die Request Klasse, die Controller Policy Klasse, die Command Stack Klasse und die Command Klasse. Das Modell (model) dient zur Speicherung benötigter Daten und auch der Geschäftslogik; Die Präsentation (view) ist für die Darstellung der Daten zuständig; Die Steuerung (controller) verwaltet das Modell und die Präsentation, wie in Abschnitt beschrieben. Die Request Klasse benutzt eine statische Variable, um ein einzigartiges ID zu generieren. Wird ein Request an den Controller übergeben, entscheidet der Controller, welche Art von Aktionen erforderlich sind, um auf dem Modell durchgeführt zu werden. Dafür nutzten wir die Policy Klasse. Die Policy dient dazu, eine Anfrage zu einem Command zu übersetzen und den Command dem Command Stack zu übergeben. Der Command ist eine interne Repräsentation einer Anfrage. Die benötigte Methode ist die execute-methode. Innerhalb der execeute-methode sind die bestimmten Änderungen am Modell definiert. Die Hauptfunktionalität der Command Stack Klasse wird in History dargestellt. Wenn ein neuer Command kommt, ruft der Command Stack die execute-methode dieses Commands auf. Wenn eine Änderung rückgängig gemacht werden soll, ruft der Controller die undo-methode der Command Stack Klasse. Die Abbildung 4-8 stellt die Architektur innerhalb eines Plug-ins dar. 22

32 4 Design Abbildung 4-8: Allgemeine MVC-Architektur [8] Wenn der Benutzer z.b. einen Button drückt, um einige Daten zu ändern, sendet der Button dem Controller eine Anfrage (Request). Der Controller fragt dann die Policy Klasse, ob diese Anfrage bearbeitet werden kann. Wenn ja, wird ein entsprechender Command dem Command Stack übergeben. Danach führt der Command Operationen auf dem Model aus, d.h. die Daten im Model werden geändert. Nach der Änderung informiert das Model den Controller, und der Controller aktualisiert die Präsentation (view). 23

33 5 Realisierung Im diesem Kapitel wird vorgestellt, wie das im 4. Kapitel erläuterte Konzept umgesetzt wird. Es wird die Entwicklungsumgebung und das Schreiben eines Plug-ins für JEGraph vorgestellt. Außerdem werden die Programme von JEPie und JEGIS beschrieben. 5.1 Entwicklungsumgebung Entsprechend der Anforderung der Firma Envidatec, erfolgt die Implementierung der Lösung in Java. Als Entwicklungsumgebung wird Netbeans IDE benutzt. Mit der Funktionalität Teamwork in der Netbeans IDE kann die neuste Version des JEGraphs als ein Projekt heruntergeladen werden. JavaFX bietet einige Komponenten um die Darstellung von Diagrammen zu implementieren. Um diese nutzen zu können, wird die Bibliothek JavaFX zu dem JEGraph Projekt hinzugefügt. Die Bibliothek swing-ws ist ebenfalls nötig, da Teile von ihr zur der Darstellung der Landkarten in dem JEGIS-Plugin dienen. Die Datenbank-Kommunikationen soll mit der JECapi realisiert werden. Diese Kommunikations-Bibliothek wird somit ebenfalls in dem Projekt gebraucht. 5.2 Ein neues Plug-in für JEGraph schreiben [9] Um die JEPie und JEGIS Plug-ins zu implementieren, müssen sie als MVC Plug-ins geschrieben und ins JEGraph eingefügt werden. Dieser Abschnitt befasst sich damit, wie ein neues MVC Plug-in für JEGraph geschrieben werden kann. Hier werden zuerst die Klassen PluginHandler und JEGUIFrame vorgestellt, welche die vorgegebenen und bereits existierten Klassen im JEGraph sind. Diese

34 5 Realisierung bieten die Funktionalität, welche für die Erstellung und Integrierung eines Plug-ins in JEGraph von Nöten ist. Des Weiteren werden die grundlegenden Klassen eines Plug-Ins beschrieben. Die Klassen und deren Funktionalität werden exemplarisch an JEPie gezeigt. Die Klassen PluginHandler und JEGUIFrame Die Klasse PluginHandler ist der Handler für alle Plug-ins. Er startet die MVC Plug-ins. In der Methode public Integer createplugin(integer callingpluginid, String classname) soll das neue Plug-in eingefügt werden, wie in Listing 5-1 gezeigt. public Integer createplugin(integer callingpluginid, String classname) { // Creat a new Plug-in _plugincount = getnewpluginid(); if (classname.equals("jepie")) { newplugin = new JEPie(_pluginCount); } else if (classname.equals("jegis")) { newplugin = new JegisMVC(_pluginCount); return addplugin(callingpluginid, newplugin); } Listing 5-1: die Methode createplugin Der nächste Schritt besteht darin, einen Button für das neue Plug-in zu erstellen. In der Methode public void makepluginlist() der Klasse JEGUIFrame wird das neue Plug-in zu der Plug-In-Liste hinzugefügt (siehe Listing 5-2). Diese Liste wird in der GUI dafür genutzt, neue Plug-Ins einer Analyse hinzufügen zu können. public void makepluginlist() { // Creat a button for the new plug-in _plugins.put("pluginname", new String[]{ "PluginDescribtion", "PluginHeadline"}); } Listing 5-2: die Methode makepluginlist 25

35 5 Realisierung Als nächstes soll ein neues Paket und Icon für das neue Plug-in erstellt werden. Im Projekt JEGraph wird das neue Paket unter envidatec -> jevis -> JEGUIFrame -> plugins hinzugefügt. Das neue Icon muss unter plug-ins -> ExamplePlugin -> resources -> gifs hinterlegt werden. Das Icon wurde, wie vorgegeben, unter dem Namen ExamplePluginHeadlineIcon.png gespeichert. Nach diesen grundlegenden Schritten können nun die Klassen des Plug-Ins erstellt werden, die die Funktionalitäten beinhalten. Die Hauptklasse eines Plug-ins Die Hauptklasse erweitert die Klasse AbstractPlugin und implementiert das Interface MVCPlugin. Diese bieten die Basiskomponenten eines Plug-ins an. public class JEPie extends AbstractChartPlugin implements MVCPlugin {} Listing 5-3: die Hauptklasse Diese Klasse stellt den Startpunkt eines Plug-Ins dar. Das Ziel ist, eine Container-Klasse zu definieren. Die eigentlichen Implementierungen werden jedoch zu einem späteren Zeitpunkt vorgenommen und unter Zuhilfenahme des Model-View-Controller-Pattern umgesetzt, welches in diesem Teil des Programms noch nicht zur Anwendung kommt. Die Klasse AbstractChartPlugin bietet ein _mainpanel. Dieses Panel ist der äußere Rahmen für ein Plug-in. In diesem Rahmen muss die View- Komponenten eingebettet werden. Die folgende Methode kann das realisieren (siehe Listing 5-4). private void embeedview() { // add the JEPie-View to the _mainpanel _mainpanel = getpluginmainpanel(); _mainpanel.setlayout(new BorderLayout()); _mainpanel.add(_controller.getview(), BorderLayout.CENTER); _controller.getview().initialise(); _mainpanel.revalidate(); } Listing 5-4: die Methode embeedview 26

36 5 Realisierung Die Klasse Controller Der Controller erweitert die Klasse AbstractController und implementiert ControllerInterface (siehe Listing 5-5). public class JEPieController extends AbstractController implements ControllerInterface {} Listing 5-5: die Klasse Controller In der Controller-Klasse müssen die Policys, das View und das Model registriert und initialisiert werden. Der geerbte AbstractController übernimmt die Initialisierungen. Die Klasse Policy Policy, was im deutschen am besten mit Richtlinien übersetzt werden kann, bietet eine Schnittstelle um Anfragen und deren Bearbeitung innerhalb einer Software zu koordinieren. Sie definieren wie Anfragen bearbeitet werden. Die Policy Klasse erweitert die abstrakte Klasse AbstractPolicy und implementiert das Interface PolicyInterface. Die Methode CanHandle gibt True zurück, wenn eine Anfrage (Request) bekannt ist. Die Methode returncommand gibt den aufzurufenden Befehl (Command) für die Anfrage (Request) zurück (siehe Listing 5-6). public class JEPiePolicy extends AbstractPolicy implements PolicyInterface public boolean canhandle(int ReqType) { boolean out = false; switch (ReqType) { case JEPieRequest.SET_PIE_DATA_REQUEST: out = true; break; default: 27

37 5 Realisierung } } return out; out = false; public CommandInterface returncommand(requestinterface req) { CommandInterface command = null; if (req instanceof JEPieRequest) { JEPieRequest piereq = ((JEPieRequest) req); switch (req.gettype()) { case JEPieRequest.SET_PIE_DATA_REQUEST: command = new SetPieChartDataCommand( ); break; } } return command; } Listing 5-6: die Klasse Policy Die Klasse Request Die Klasse Request erweitert die Klasse AbstractRequest. In dieser Klasse sollen alle möglichen Anfragen definiert werden (siehe Listing 5-7). public class JEPieRequest<T> extends AbstractRequest<T> { } public static final JEPIE_REQUEST = 100; Listing 5-7: die Klasse Request Requests haben die Funktion eines Containers, um die Daten zum angegebenen Controller transportieren zu können. Damit der Controller entscheiden kann, welche Art von Handling für die Anfrage passend ist, ist der requesttype benötigt. Alle requesttype müssen in der canhandle() und returncommand()-methode in der Klasse Policy bekannt gemacht werden. 28

38 5 Realisierung Die Klasse Command Die Klasse Command erweitert die Klasse Command (siehe Listing 5-8). Diese Art von Klasse bietet das Grundgerüst für einen Befehl, der von dem Controller aufgerufen werden kann. public class SetPieChartDataCommand extends Command {} Listing 5-8: die Klasse Command Die Klassen Model und View Das Model erweitert die Klasse AbstractModel und repräsentiert die Daten und Logik des Programmes. Das View erweitert die Klasse JPanel und implementiert ViewInterface (siehe Listing 5-9). Es ist für die Darstellung auf der grafischen Oberfläche zuständig. public class JEPieModel extends AbstractModel {} public class JEPieView extends JPanel implements ViewInterface {} Listing 5-9: die Klassen Model und View Die Beziehung zwischen diesen benötigten Klassen wurde in Abbildung 4-9 in Kapitel 4 dargestellt. 29

39 5 Realisierung 5.3 Realisierung des JEPie-Plug-ins In diesem Abschnitt wird beschrieben, wie das Plug-in JEPie realisiert wird. Dazu gehört die Beschreibung des Verlaufs des Plug-ins und die Vorstellung der Klassen. Die Abbildung 5-1 zeigt den Verlauf dieses Plug-ins. Abbildung 5-1: Aktivetätsdiagramm vom JEPie Das Programm öffnet zuerst einen Auswahldialog. Daraus können die Daten von der Datenbank gelesen werden. Dann bearbeitet das Programm diese Daten und stellt den Zustand des Models ein. Wenn die Daten im Model zur Verfügung stehen, werden Sie mit dem Tortendiagramm dargestellt. Die Hauptklassen vom JEPie sind JEPie, JEPieController, JEPieModel, JEPieView, JEPieRequest, JEPiePolicy und SetPieChartDataCommand. Die Beziehungen zwischen diesen Klassen sind in der Abbildung 5-2 dargestellt. 30

40 5 Realisierung Abbildung 5-2: MVC Struktur des JEPie-Plug-ins Wenn der Benutzer den Button Load data drückt, erscheint der Auswahldialog. Werden beispielsweise zwei Datenreihen aus dem Treedialog ausgewählt, sendet der Auswahldialog dem JEPieController ein SET_PIE_DATA_Request. Das Ziel ist es die ausgewählten Datenreihen auf dem Tortendiagramm zu zeigen. Der JEPieController fragt dann die JEPiePolicy Klasse, ob das SET_PIE_DATA_REQUEST bearbeitet werden kann. Dann wird der SetPieChartDataCommand dem CommandStack übergeben. Der CommandStack ruft die execute-methode vom SetPieChartDataCommand auf. In der execute-methode wird die setpiedata-methode vom JEPieModel aufgerufen, d.h. die Daten vom Tortendiagramm im JEPieModel werden geändert. Nach der Änderung informiert das Model den JEPieController, und der JEPieController aktualisiert die JEPieView mit der setpiedata-methode der Klasse JEPieView. Bisher kann man das Tortendiagramm mit gewünschten Datenreihen sehen. In den folgenden Abschnitten werden die Klassen in der Reihenfolge des Verlaufs des JEPie-Plug-ins genauer beschrieben. 31

41 5 Realisierung Daten laden In diesem Abschnitt werden die Klassen JEPie und JEPieRequest vogestellt. Diese behandeln das Erzeugen des JEPie-Plug-ins, das Öffnen des Auswahldialogs und das Laden der Daten, die in dem Auswahldialog gewählt wurden. Die Klasse JEPie Die Klasse JEPie ist eine Container-Klasse, welche auch der Startpunkt des Plug-ins ist. JEPie ist außerhalb der sonst verwendeten MVC-Struktur implementiert. Abbildung 5-3 stellt das Klassendiagramm dar. Abbildung 5-3: Klassendiagramm JEPie Die Klasse JEPie bietet ein _mainpanel an. Das ist der äußere Rahmen für das JEPie-Plug-in. In diesem Rahmen muss das JEPieView (siehe Kapitel 5.3.3) eingebettet werden. Die Methode embedview() realisiert die Einbettung. Die Methode addbuttons() fügt die gewünschten Buttons dieses Plug-ins ein. So Beispielweise der Button _loadtreedialogbutton. Wenn das Plug-in aufgerufen oder der Button _loadtreedialogbutton gedrückt wird, öffnet die Methode starttreedialog() den Auswahldialog, wie in Abbildung 4-2 dargestellt. Dieser Auswahldialog (Treedialog) ist von der Firma Envidatec geschrieben und wird auch in anderen Plug-ins verwendet. Mancher Code muss in die Klasse TreeDialog eingefügt werden, wie in Listing 5-10 dargestellt, damit das JEPie-Plug-in den Treedialog benutzen kann. 32

42 5 Realisierung else if (_plugin instanceof JEPie) { ((AbstractChartPlugin) _plugin).setselectednodes (_jgttc.gettreetablemodel().gettreetablemodel().getselectednodeids()); ((AbstractChartPlugin) _plugin).setexpandedpaths (_jgttc.gettreetablemodel().gettreetablemodel().getexpandednodes()); ((JEPie) _plugin).setselectedaggregate(selecteditem); _pc = new ProgressClass(selectedNodes.size()); _pc.addobserver(this); // Read the data from the Data tree and save them in datamaps JevDataMap[] datamaps = NodeManager.getInstance().getDataMapsByNodes(selectedNodes, ts, _pc); boolean cleanrawdata = (RITID[0].equals(FixedReg.RIT.DS_CLEAN_DATA.getID()) (RITID[0].equals(FixedReg.RIT.DS_ONLINE.getID()))); if (!isdatamapsempty(datamaps)) { } } // After reading the data, send a request JEPieRequest req = new JEPieRequest(JEPieRequest.SET_PIE_DATA_REQUEST); // save the data in this request req.setarraydata(datamaps); // then the request is sent to controller ((JEPie) _plugin).handlerequest(req); Listing 5-10: TreeDialog Mit dem Befehl NodeManager.getInstance().getDataMapsByNodes (selectednodes, ts, _pc) werden die ausgewählte Daten gelesen und in der Variable datamaps gespeichert. Danach wird eine JEPie-Anfrage req (eine Instanz der Klasse JEPieRequest) erzeugt, um die gelesenen Daten weiterzuleiten. 33

43 5 Realisierung Die Klasse JEPieRequest Die Klasse JEPieRequest beinhaltet die Attribute _arraydata, welche die Daten, die von dem Treedialog gelesen werden, speichert. Mit der Methode setarraydata() werden die Daten in req transportiert. Abbildung 5-4 ist das Klassendiagramm dieser Klasse. Abbildung 5-4: Klassendiagramm JEPieRequest Wenn die Daten schon in einer Instanz von JEPieRequest gespeichert wurden, wird diese Instanz an den Controller gesendet, wie die letzten Zeilen in Listing 5-10 dargestellt. Die Methode handlerequest(requestinterface req) der Klasse JEPie übergibt die Anfrage req an den Controller weiter. Dieser bearbeitet dann die req. Bisher sind die Daten schon geladen. 34

44 5 Realisierung Daten einstellen Dieser Abschnitt beschreibt die Klassen, welche zur Einstellung der Daten dienen. Die Klassen JEPiePolicy, setpiechartdatacommand und JEPieModel werden vorgestellt. Die Klasse JEPiePolicy Die Klasse JEPiePolicy beinhaltet die Methode zur Bearbeitung einer JEPie-Anfrage (Request). Diese Methoden können entscheiden, ob die Anfrage (Request) bearbeitet werden kann und wie diese bearbeitet werden soll. Abbildung 5-5 zeigt das Klassendiagramm der Klasse JEPiePolicy. Abbildung 5-5: Klassendiagramm JEPiePolicy Wenn eine Request an den Controller gesendet wird, ruft der Controller die Methode canhandel(int ReqType) der Klasse JEPiePolicy auf. Entsprechend des Typs der Anfrage (ReqType) gibt die Methode das Ergebnis zurück, ob die Anfrage (Request) bearbeitet werden kann. Dir Rückgabewerte sind true für ja, false für nein. Wenn das Ergebnis true ist, wird die Methode returncommand(requestinterface req) aufgerufen. Je nach Typ der Request, gibt die Methode returncommand (RequestInterface req) den entsprechenden Command zurück. So geschieht dieses exemplarisch im JEPie-Plug-in, nachdem die neuen Daten aus dem Treedialog gelesen werden. Hier sendet das Programm eine Anfrage des Typs SET_PIE_DATA_REQUEST und die Klasse JEPiePolicy leitet diese Anfrage entsprechend der gegebenen Richtlinie an den Ausführenden Programmteil weiter, der in diesem Fall die Klasse SetPieChartDataCommand ist. 35

45 5 Realisierung Die Klasse SetPieChartDataCommand Wenn eine Instanz der Klasse SetPieChartDataCommand erzeugt wird, speichert die Instanz die Daten der Anfrage (Request). Danach wird die Methode execute() der Klasse aufgerufen. Diese Methode ruft dann die Methode setpiedata der Klasse JEPieModel auf, um die Daten zuzuweisen. Die Klasse JEPieModel Die Klasse JEPieModel beeinhaltet die Attributen und Methoden, die die Daten des Plug-ins speichern und einstellen können. Abbildung 5-6 stellt das Klassendiagramm der Klasse JEPieModel dar. Abbildung 5-6: Klassendiagramm JEPieModel Die Attribute _data speichert die Daten aus dem Treedialog. In der _piechartdata sind die Daten enthalten, die das Tortendiagramm benötigt. Die anderen Variablen dienen dazu, die richtigen Daten und den richtigen Zeitpunkt herauszufinden. Wird die Methode setpiedata(jevdatamap[] _data, JEPieRequest piereq) im SetPieChartDataCommand aufgerufen, werden die Daten ins Model transportiert. JEGraph bietet die Möglichkeit den Zeitbereich der Darstellung zu wählen. In dieser Methode werden der gebrauchte Zeitpunkt 36

46 5 Realisierung _currenttimestample und gebrauchte Werte von diesem Zeitpunkt herausgefunden. Danach werden die _piechartdata mit den Werten eingestellt, wie in Listing 5-11 dargestellt. for (int i = 0; i < this._data.length; i++) { List<JevSample> mzsamples = this._data[i].getlistofsamples(); for (JevSample sample : mzsamples) { // find the value at the needed time if (sample.getcal().equals(_currenttimestample)) { String piechartdataname = setpiechartdataname(_data[i].getnode()); // add the value to the _piechartdata _piechartdata.add(new PieChart.Data(pieChartDataName, (Double) sample.getval() / )); _currentsamplesum += (Double) sample.getval() / ; } } } Listing 5-11: Daten Einstellen In der for-schleife werden zuerst die Daten vom gebrauchten Zeitpunkt herausgefunden mit dem Befehl if(sample.getcal().equals (_currenttimestample)). Diese Daten werden in _piechartdata (die Daten des Tortendiagramms) mit der Methode _piechartdata.add() hinzugefügt. Die Methode getinfopanelvalues() stellt die Daten der Legende im Tortendiagramm zur Verfügung, z.b. die Namen der Datenreihen, die Anteile, die aktuellen Werte und die Zeitpunkte. Nachdem die Daten für das Tortendiagramm und die Legende generiert wurden, informiert das Model den Controller. Zu diesem Zeitpunkt ist die Phase des Daten Einstellens abgeschlossen. 37

47 5 Realisierung Tortendiagramm zeichnen Dieser Abschnitt beschreibt die Klassen, welche zum Zeichnen des Tortendiagrammes dienen. Dazu werden die Klassen JEPieController, und JEPieView vorgestellt. Die Klasse JEPieController Die Klasse JEPieController verwaltet das Model und View. Hier wird das Model und View initialisiert, und wenn die Daten im Model eingestellt sind, aktualisiert der Controller das View. Abbildung 5-7 stellt das Klassendiagramm der Klasse JEPieController dar. Abbildung 5-7: Klassendiagramm JEPieController Wenn das Model den Controller informiert, dass die Daten zur Verfügung stehen, wird die Methode Update (Observable o, Object arg) aufgerufen. Update ruft dann die Methode setpiedata der Klasse JEPieView auf. Im Controller wird die Methode setpiedata so aufgerufen, siehe Listing view.setpiedata(model.getpiedata(), model.getcurrentsamplesum(), model.getcurrenttimestample(),model.getinfopanelvalues(), model.getjevdata(), model.getpiereq()); Listing 5-12: Aufrufen der Methode setpiedata Die Parameter sind alle aus dem Model vorbereitet, der Controller übergibt lediglich die Daten vom Model zum View. Darauf folgend wird das View aktualisiert und stellt nun den aktuellen Zustand des Models dar. 38

48 5 Realisierung Die Klasse JEPieView Die Klasse JEPieView ist für die Zeichnung des Tortendiagrammes und der Legende verantwortlich. Sie beinhaltet die Komponenten, die von den Benutzern gesehen werden können. Abbildung 5-8 zeigt das Klassendiagramm der Klasse JEPieView. Abbildung 5-8: Klassendiagramm JEPieView Die Attribute _chart ist vom Paket javafx.scene.chart.piechart. Sie bietet das Tortendiagramm von der Bibliothek JavaFX. _fxpanel ermöglicht uns, die Inhalte von JavaFX in die Swing Applikationen einzubetten. _infotable ist die Legende auf dem Tortendiagramm, die die Daten zeigen kann. Die Methode initpiechart() initialisiert _fxpanel, _chart und _infotable. Diese wird am Anfang der Initialisierung des Plug-ins aufgerufen, jedoch noch ohne Daten. Wird die Methode setpiedata() vom Controller aufgerufen, wird das Tortendiagramm auf Grundlage der Model-Daten neu gezeichnet. Das Diagramm wird somit mit den Daten aktualisiert, die von dem Treedialog gelesen wurden. Auch die Legende _infotable wird mit den neuen Daten aktualisiert. Listing 5-13 zeigt wie das realisiert wird. 39

49 5 Realisierung public void setpiedata(final ObservableList<PieChart.Data> piechartdata, final double currentstamplesum, final JevCalendar currenttimestample, final CartesianChartTableRowJEPie[] cctr, final JevDataMap[] datamaps, final JEPieRequest piereq) { Platform.runLater(new Runnable() public void run() { System.out.println("setpiedata run"); _chart.setstartangle(180); _chart.setdata(piechartdata); _chart.setlabelsvisible(false); _chart.setlegendvisible(false); _chart.getstylesheets().add("envidatec/jevis/jeguiframe/plugins /jepie/view/piechartcolor.css"); _caption.settextfill(javafx.scene.paint.color.black); _caption.setstyle("-fx-font: 24 arial;"); setinfotablevalues(cctr, currentstamplesum, currenttimestample); } } } Listing 5-13: die Methode setpiedata Mit dem Befehl _chart.setdata(piechartdata) wird das Tortendiagramm mit dem Parameter piechartdata gezeichnet. Der Parameter stammt aus dem Model und somit ursprünglich aus dem Treedialog. Hier wird auch die Methode setinfotablevalues (cctr, currentstamplesum, currenttime Stample) aufgerufen, um die Daten von _infotable zu aktualisieren und die Legende hinzuzufügen. 40

50 5 Realisierung Öffnen des JEChart-Plug-ins Dieser Abschnitt stellt vor, wie das Plug-in JEChart im JEPie aufgerufen wird. Diese Funktionalität wird in der Klasse JEPieView realisiert. Dazu wird einiger Code vorgestellt. Listing 5-14 zeigt wie es funktioniert. // add the MouseEventHandler to the Pie Chart _chart.getdata().get(i).getnode().addeventhandler(mouseevent.mouse_pressed, new EventHandler<MouseEvent>() public void handle(mouseevent e) { // creat a new BarChart-Plug-in (JEChart) pluginid = _controller.getpluginhandler().createplugin("barchart", false); // send a request to set the data of the Barchart BarChartRequest req = new BarChartRequest (BarChartRequest.BC_SET_CHART_JEVDATA); // transport the data in Piechart to Barchart, and handel the request req.setarraydata(newdatamaps); req.setdata(piereq.getdata()); ((BarChart) _controller.getpluginhandler().getplugin(pluginid)).handlerequest(req); } }); Listing 5-14: Aufrufen des JEChart-Plug-ins Die in Listing 5-14 gezeigte Methode fügt einen Mouse-Event-Handler in JEPie ein, um das Mausereignis MOUSE_PRESSEND zu bearbeiten. Wenn eine Scheibe des Tortendiagramms gedrückt wird, wird eine BarChart-Anfrage req erzeugt, um das JEChart-Plug-in zu öffnen. Dann wird die Datenreihe dieser Scheibe in der Variable newdatamaps gespeichert und in req transportiert (req.setarraydata(newdatamaps)). Das geöffnete JEChart bearbeitet weiter die Anfrange. Zu diesem Zeitpunkt kann ein JEChart-Plug-in die gewünschte Daten darstellen. 41

51 5 Realisierung 5.4 Realisierung des JEGIS-Plug-ins In diesem Abschnitt wird beschrieben, wie das Plug-in JEGIS realisiert wird. Dazu gehört die Beschreibung der Klassen. Zuerst wird der Verlauf dieses Plug-ins vorgestellt, wie in Abbildung 5-9 dargestellt. Außerdem werden die wichtigen Klassen beschrieben. Abbildung 5-9: Aktivitätsdiagramm vom JEGIS Wenn der Auswahldialog geöffnet wird, können die Schiffsdaten von der Datenbank gelesen werden. Dann werden diese Daten bearbeitet und ins Model transportiert. Wenn die Daten im Model zur Verfügung stehen, wird die Route des Schiffs auf der Landkarte dargestellt. Die Hauptklassen vom JEGIS sind JEGIS, JEGISController, JEGISModel, JEGISView, JEGISRequest, JEGISPolicy und SetWaypointsCommand. Die Beziehungen zwischen diesen Klassen sind in der Abbildung 5-10 dargestellt. 42

52 5 Realisierung Abbildung 5-10: MVC Struktur des JEGIS-Plug-ins Die Struktur des JEGIS-Plug-ins ist sehr ähnlich wie bei JEPie. Aber hier wird ein anderer Auswahldialog verwendet. Aus diesem Treedialog können die Schiffsdaten gelesen werden. Im View ist nicht mehr das JavaFX-Diagramm, sondern die Landkarte. In den folgenden Abschnitten werden die Klassen in der Reihenfolge des Verlaufs des JEPie-Plug-ins genauer beschrieben. 43

53 5 Realisierung Öffnung des Auswahldialogs In diesem Abschnitt werden die Klassen JEGIS und JEGISRequest vogestellt. Diese behandeln das Erzeugen des JEGIS-Plug-ins und das Öffnen des Auswahldialogs. Die Klasse JEGIS Gleich wie die Klasse JEPie, die Klasse JEGIS ist eine Container-Klasse, welche der Startpunkt des Plug-ins ist. Abbildung 5-11 zeigt das Klassendiagramm. Abbildung 5-11: Klassendiagramm JEGIS Die Klasse JEGIS bietet ein _mainpanel. Das ist der äußere Rahmen für das JEGIS-Plug-in. In diesem Rahmen muss das JEGISView (siehe Kapitel 5.4.3) eingebettet werden. Die Methode embedview() realisiert die Einbettung. Die Attribute _client, von Typ JEClint, verwaltet die Kommunikation zum Server. Mit dieser können die Daten aus der Datenbank gelesen werden. Die Methode addbuttons() fügt die gewünschten Button _loadtreedialogbutton ein. Wenn der Button _loadtreedialogbutton gedrückt wird, öffnet die Methode starttreedialog() einen Auswahldialog, wie in Abbildung 4-6 dargestellt. Dieser Auswahldialog ist anders als der im JEPie-Plug-in. Er ist auch von der Firma Envidatec geschrieben aber mit neuem Kommunikationsinterface. Nachdem der Auswahldialog geöffnet wird, wird eine JEGIS-Anfrage setwaypointsrequest (eine Instanz der Klasse JEGISRequest) erzeugt. 44

54 5 Realisierung _client wird in dieser Anfrage gespeichert, um die Daten später zu lesen. Mit der Methode handlerequest(setwaypointsrequest) wird die Anfrage an den Controller gesendet (siehe Listing 5-15). Die Daten werden später in der Klasse SetWaypointsCommand gelesen (siehe Kapitel 5.4.2). public void actionperformed(actionevent e) { starttreedialog(); JEGISRequest setwaypointsrequest = new JEGISRequest(JEGISRequest.SET_WAYPOINTS); setwaypointsrequest.setclient(client); System.out.println("setWaypointbutton"); _controller.handlerequest(setwaypointsrequest); } Listing 5-15: Öffnen des Treedialogs und Sendung einer Anfrage Die Klasse JEGISRequest Abbildung 5-12: Klassendiagramm JEGISRequest Die Abbildung 5-12 zeigt das Klassendiagramm der Klasse JEGISRequest. Diese Klasse beinhaltet die Attribute _client, welche die Attribute _client in der Klasse JEGIS speichert. Wenn eine Instanz dieser Klasse vom Typ SET_WAYPOINTS an den Controller gesendet wird, wie die letzte Zeilen in Listing 5-15 dargestellt haben, wird die Anfrage vom Controller bearbeitet und _client wird weitergeleitet. 45

55 5 Realisierung Daten Laden und Einstellen Dieser Abschnitt beschreibt die Klassen, welche zur Ladung, Bearbeitung und Einstellung der Daten dienen. Die Klassen JEGISPolicy, setwaypointscommand und JEGISModel werden vorgestellt. Die Klasse JEGISPolicy Die Klasse JEGISPolicy ist sehr ähnlich wie JEPiePolicy. Sie beinhaltet die Methode zur Bearbeitung von JEGISRequest. Wenn eine JEGIS-Anfrage (Request) an den Controller gesendet wird, ruft der Controller die Methode canhandel(int ReqType) und returncommand(requestinterface req) der Klasse JEGISPolicy auf. Die Methoden entscheiden, ob die Request bearbeitet werden kann und wie sie bearbeitet werden soll. Wenn die Request bearbeitet werden kann, gibt die Methode returncommand(requestinterface req) je nach Typ der Request den entsprechenden Command zurück. Im JEGIS-Plug-in, nachdem der Treedialog erzeugt wird, sendet das Programm eine Anfrage setwaypointsrequest des Typs SET_WAYPOINTS. Die Klasse JEGISPolicy leitet diese Anfrage an den Ausführenden Programmteil weiter, der in diesem Fall die Klasse SetWaypointsCommand ist. Abbildung 5-13 ist das Klassendiagramm der Klasse JEGISPolicy. Abbildung 5-13: Klassendiagramm JEGISPolicy 46

56 5 Realisierung Die Klasse SetWaypointsCommand Die Klasse SetWaypointsCommand ist sehr wichtig für das JEGIS-Plug-in. Sie dient dazu Daten aus dem Auswahldialog zu lesen und Daten zu bearbeiten. Abbildung 5-14 stellt das Klassendiagramm dieser Klasse dar. Abbildung 5-14: Klassendiagramm SetWaypointsCommand Wenn eine Instanz der Klasse SetWaypointsCommand von der Klasse JEGISPolicy erzeugt wird, speichert _clien (zur Kommunikation dient) von der Request. Danach wird die Methode execute() der Klasse SetWaypointsCommand aufgerufen. In dieser Methode werden zuerst die im Auswahldialog ausgewählten Daten gelesen. Die Daten sind vom Typ Vessel, welcher GPS-Daten und Energiedaten eines Schiffs enthalten. Das Daten Lesen wird von dem neuen JECapi (Communication-API) realisiert. Die Attribute _selection speichert das ausgewählte Schiff. In der Attribute _waypoints sind die Wegpunkte, aus den die Route eines Schiffs besteht. Die anderen Variablen dienen dazu, die gebrauchten Daten und Zeitpunkten herauszufinden. Nachdem das gewählte Schiff in _selection gespeichert wird, werden die inneren Daten weiter bearbeitet. Die Datenstruktur sieht z.b. so aus, wie in Abbildung 5-15 dargestellt. Bisher ist die neue Datenbank noch nicht fertig, 47

57 5 Realisierung deshalb werden hier nur die GPS-Daten (Position: Latitude und Longitude, Höhe und Geschwindigkeit) in einem einfachen Weg gelesen, wie in Listing 5-16 dargestellt. In Zukunft werden die Schiffsdaten auf besserem Weg gelesen. Abbildung 5-15: Datenstruktur // hier read only the height, latitude, longitude and speed // the number of the children die due to the structure of data // later the data will be readed in better ways JEAttribute heightattriubute = vessel.getchildren().get(3).getattribute(rawtype); JEAttribute latitudeattriubute = vessel.getchildren().get(4).getattribute(latitudetype); JEAttribute longitudeattriubute = vessel.getchildren().get(4).getattribute(longitudetype); JEAttribute speedattriubute = vessel.getchildren().get(7).getattribute(rawtype); Listing 5-16: Daten lesen Weil die Positionsdaten (Latitude und Longitude) aus der Datenbank nicht in der 48

58 5 Realisierung Standardformatierung sind, muss die Formatierung geändert werden. Die Methode changeformat(list<jesample> allsamples) kann die Daten bearbeiten, damit sie direkt in einem Wegpunkt hinzugefügt werden können. Wenn die Daten richtig geändert werden, können die gebrauchte Positionsdaten und Zeitpunkte herausgefunden werden. Danach werden die _waypoints mit den Daten eingestellt, wie in Listing 5-17 gezeigt. for (int i = 0; i < allsampleslatitude.size(); i++) { DateTime timestamp = allsampleslatitude.get(i).gettimestamp(); _waypoints.add(new JevWaypoint(_orderNumber, new GeoPosition((Double) allsampleslatitude.get(i).getvalue(), (Double) allsampleslongitude.get(i).getvalue()), new JevCalendar(), _color[numberofselection], _name[numberofselection], timestamp, (Double) allsamplesspeed.get(i).getvalue(), (Double) allsamplesheight.get(i).getvalue())); _ordernumber++; } Listing 5-17: Daten einstellen Diese GPS-Daten werden in _waypoints (die Wegpunkte einer Route) mit der Methode _waypoints.add() hinzugefügt. Jeder Wegpunkt besteht aus Positionsinformationen (latitude und longitude), Zeitpunkt, Name, Sequenznummer, Farbe, Geschwindigkeit und Höhe. Nachdem die Daten fertig bearbeitet werden, ruft die Methode execute() dann die Methode setwaypoints und setinformations der Klasse JEGISModel auf, um die Daten im Model zuzuweisen. Die Klasse JEGISModel Die Klasse JEGISModel beinhaltet die Attributen und Methoden, die die Daten des Plug-ins speichern und einstellen können. Abbildung 5-16 zeigt das Klassendiagramm der Klasse JEGISModel. 49

59 5 Realisierung Abbildung 5-16: Klassendiagramm JEGISModel Die Attribute _Waypoints speichert die GPS-Daten aus dem Treedialog. Diese Daten sind für die Zeichnung der Route verantwortlich. Die anderen Attribute sind in der Legende benutzt. Sie geben die Informationen vom Anfang und vom Ende der Route. Wird die Methode setwaypoints(set<waypoint> waypoints) und SetInformations() im SetWaypointsCommand aufgerufen, werden die Wegpunkte und die Informationen für die Legende ins Model transportiert. Die Methode getinfopanelvalues() stellt die Daten der Legende der Route ein, z.b. die Namen des Schiffs, die Anfangs- und Endeposition, der Anfangs- und Endezeitpunkt. Nachdem die Daten für die Route und die Legende generiert wurden, informiert das Model den Controller. Zu diesem Zeitpunkt ist die Phase des Daten Einstellens abgeschlossen. 50

60 5 Realisierung Die Route auf der Landkarte zeichnen Dieser Abschnitt beschreibt die Klassen, welche zum Zeichnen der Route eines Schiffs auf der Landkarte dienen. Dazu werden die Klassen JEGISController, JEGISView und MapViewer beschrieben. Die Klasse JEGISController Ähnlich wie die Klasse JEPieController, die Klasse JEGISController verwaltet Model und View. Wenn die Daten im Model eingestellt sind, aktualisiert der Controller das View. Im Controller wird auch die Policy initialisiert, damit die Request von Policy bearbeitet werden kann, wenn die Request an den Controller gesendet wird. Gleicht wie im JEPie-Plug-in, wenn das Model den Controller informiert, dass die Daten zur Verfügung stehen, wird die Methode Update (Observable o, Object arg) aufgerufen. Update ruft dann die Methode drawwaypoint() der Klasse JEGISView. Im Controller wird drawwaypoint() so aufgerufen (siehe Listing 5-18): ((JEGISView) _view).drawwaypoint(model.getwaypoints(), model.getinfopanelvalues(), model.isgpsvis()); Listing 5-18: Aufrufen der Methode drawwaypoint Die Parameter sind alle von dem Model vorbereitet, der Controller übergibt lediglich die Daten (die Wegpunkte für die Route und die Informationen für die Legende) vom Model zum View weiter. Darauf folgend wird das View aktualisiert und stellt nun den aktuellen Zustand des Models dar. 51

61 5 Realisierung Die Klasse JEGISView Die Klasse JEGISView ist für die Zeichnung der Route und der Legende sowie die Öffnung der Landkarte verantwortlich. Sie beinhaltet die Komponenten, die von den Benutzern gesehen werden können. Abbildung 5-17 ist das Klassendiagramm der Klasse JEGISView. Abbildung 5-17: Klassendiagramm JEGISView Die Attribute _mainmap ist vom Paket org.jdesktop.swingx. JXMapViewer. Sie bietet die Landkarte vom Internet. _mappainter (eine Instanz der Klasse MapPainter, siehe Kapitel Die Klasse MapPainter) speichert die Wegpunkte und ermöglicht uns, diese Punkte auf der Landkarte zu zeichnen. Die Legende, die auf der Landkarte Informationen anzeigen kann ist durch _infotable gegeben. Wenn ein JEGIS-Plug-in erzeugt wird, werden die Methoden initprovider(), initpainters() und buildmap() aufgerufen. initprovider() stellt den Provider der Landkarte ein. Im JEGIS wird die Landkarte von der Webseite benutzt. initpainter() initialisiert _mappainter. Dann in der Methode buildmap() wird _mainmap erzeugt und _mappainter in _mainmap hinzugefügt, damit der _mappainter auf der Landkarte zeichnen kann. Beim Initialisieren hat _mappainter noch keine Daten. Wird die Methode drawwaypoints() vom Controller aufgerufen, werden die Wegpunkte vom Model in _mappainter hinzugefügt. Die in _mappainter gespeicherten Wegpunkte werden somit mit den Daten 52

62 5 Realisierung aktualisiert, die von dem Treedialog gelesen wurden. Auch die Legende _infotable wird aktualisiert. Listing 5-19 zeigt wie das realisiert wird. public void drawwaypoint(set<waypoint> waypoints, CartesianChartTableRowJEGIS[] cctr) { //The Points to be drawed _mappainter.setwaypoints(waypoints); _mappainter.setvisible(true); setinfotablevalues(cctr); repaint(); } Listing 5-19: die Methode drawwaypoint Mit dem Befehl _mappainter.setwaypoints(waypoints) werden die gezeichneten Wegpunkte mit dem Parameter waypoints eingestellt. Der Parameter stammt aus dem Model und somit ursprünglich aus dem Treedialog. Hier wird auch die Methode setinfotablevalues(cctr) aufgerufen, um die Daten von _infotable zu aktualisieren und die Legende hinzuzufügen. Am Ende wird die Methode repaint() aufgerufen. repaint() ruft dann die Methode dopaint(graphics2d g, T map, int w, int h) der Klasse MapPainter. In dieser Methode werden dann die Punkte gezeichnet und durch Linien mit einander verbunden. Die Klasse MapPainter Die Klasse MapPainter dient zur Zeichnung der Route. Wenn die Wegpunkte in der Variable _mappainter gespeichert werden, wird die Methode dopaint() dieser Klasse aufgerufen. Diese Methode zeichnet die Wegpunkte auf der Landkarte und verbindet die Punkte mit der Linie. Listing 5-20 zeigt wie die Wegpunkte gezeichnet werden. // paint Waypoints for (Waypoint wx : getwaypoints()) { JevWaypoint wp = (JevWaypoint) wx; g.setcolor(wp.getcolor()); //convert geo to world bitmap pixel Point2D currentpoint = map.gettilefactory().geotopixel(wp.getposition(), map.getzoom()); drawcircle((int) currentpoint.getx(), (int) currentpoint.gety(), 53

63 5 Realisierung 16 - map.getzoom(), g); if (prepoint!= null && wp.getname().equals(prewaypoint.getname())) { g.setstroke(new BasicStroke(16 - map.getzoom())); g.drawline((int) prepoint.getx(), (int) prepoint.gety(), (int) currentpoint.getx(), (int) currentpoint.gety()); } prepoint = currentpoint; prewaypoint = wp; } Listing 5-20: Zeichnung der Wegpunkte Bevor die Wegpunkte gezeichnet werden können, müssen sie von Geopositionen in den Pixel auf der Landkarte konvertiert werden. Die Methode geotopixel() realisiert die Konvertierung. Die Methode drawcircle() zeichnet einen Kreis auf der Koordinate jedes Wegpunkts. Danach werden die Wegpunkte mit der Methode g.drawline() verbunden. Bisher wird eine Route fertig gezeichnet. 54

64 6 Erprobung mit realen Daten Im diesem Kapitel wird die Erprobung des JEGIS-Plug-ins vorgestellt. Das Plug-in wird mit realen Daten von einem Schiff getestet. Dadurch wird die Anwendung der Lösung dargestellt. 6.1 Die Datenstruktur Die realen Daten des Schiffes sind von dem Forschungsprojekt Eco Trans der Firma Envidatec GmbH. Diese beinhalten die Positionsdaten und Energiedaten einer Schifffahrt zwischen Hamburg, Deutschland und Qingdao, China. Die Abbildung 6-1 zeigt wie die Daten in der Datenbank aussehen. Im Ordner Ship Company steht das Schiff MS Nordpol. Die Schiffsdaten bestehen aus dem Verbrauch (Fuel Comsumption), den Betriebsdaten (Operating Data) und den GPS-Daten (GPS Data). Zum Verbrauch gehören die Werte der Hauptmaschine (Consumption M/E) und die Werte der Nebenmaschine (Consumption A/E). Die Betriebsdaten bestehen aus Wellenleistung (Shaft Power), Drehmoment (Torque) und RPM (Revolutions Per Minute). Die GPS-Daten enthalten Positionsdaten (Position, Latitude und Longitude), Geschwindigkeit (Speed over Groud), Höhe (Height) und Richtung (Course). Diese Daten werden alle 15 Minuten aktualisiert. Das bedeutet, das Zeitintervall zwischen zwei Wegpunkten ist immer 15 Minuten.

65 6 Erprobung mit realen Daten Abbildung 6-1: Die Datenstruktur in der Datenbank 56

66 6 Erprobung mit realen Daten 6.2 Die Routen einer Schifffahrt Wenn das Schiff MS Nordpol ausgewählt wird, liest das Programm alle Daten dieses Schiffes. Auf der Landkarte wird dann die Route der Schifffahrt gezeichnet. In Abbildung 6-2 wird die ganze Route dargestellt. Das Schiff fährt von Hamburg, über Antwerpen, Malaysia, Singapore nach Qingdao, VR China. Der Zeitraum ist zwischen und Abbildung 6-2: Die ganze Route der Schifffahrt Um die Route besser zu beobachten, wird beispielweise die Teilroute im Zeitraum vom bis in Abbildung 6-3 dargestellt. Das Schiff fährt vom bis Wenn die Route vergrößert wird kann man sehen, dass die Route aus vielen Punkten besteht. Wenn der Mauszeiger über einem Punkt ist, werden die GPS-Daten in einem kleinen Fenster gezeigt. Es zeigt den Benutzern, wann das Schiff diesen Platz erreicht und wie schnell es fährt. Dadurch kann die Route besser erklärt werden. 57

67 6 Erprobung mit realen Daten Abbildung 6-3: die Teilroute von bis

68 6 Erprobung mit realen Daten 6.3 Analyse einer Teilroute Mit JEGIS ermöglicht unsere Software den Benutzern den Energieverbrauch unter Berücksichtigung der GPS-Daten zu analysieren. Im JEChart-Plug-in können die Energiedaten dieses Schiffs in demselben Zeitraum dargestellt und mit der Route und den GPS-Daten verglichen werden. Die Abbildungen 6-4 und 6-5 zeigen die Route und die entsprechenden Energiedaten dieser Schifffahrt im Zeitraum von 13:00 am bis 15:00 am an. Die Abbildung 6-5 ist vom JEChart Plug-in, welche den Verbrauch der Hauptmaschine und der Nebenmaschine, sowie das Drehmoment zeigt. Der Vergleich der Abbildungen liefert eine Analyse der Energiedaten und den GPS-Daten. Abbildung 6-4: die Teilroute 13:00 bis 15:

69 6 Erprobung mit realen Daten Abbildung 6-5: Verbrauch der Maschinen und das Drehmoment Zeitpunkt 13:00 13:15 13:30 13:45 14:00 Koordinate [ ] [ ] [ ] [ ] [ ] Geschwindigkeit 16.6 kn kn kn kn kn Verbrauch der 970 L 980 L 940 L 950 L 770 L Hauptmaschine Verbrauch der 91 L 93 L 108 L 100 L 109 L Nebenmaschine Drehmoment 3653 knm 3645 knm 3480 knm 3524 knm 3005 knm Zeitpunkt 14:15 14:30 14:45 15:00 Koordinate [ ] [ ] [ ] [ ] Geschwindigkeit kn kn kn kn Verbrauch der 610 L 570 L 590 L 640 L Hauptmaschine Verbrauch der 117 L 111 L 114 L 112 L Nebenmaschine Drehmoment 2603 knm 2605 knm 2586 knm 2621 knm Tabelle 6-1: Zusammenfassung der GPS- und Energiedaten 60

70 6 Erprobung mit realen Daten Die Tabelle 6-1 fasst die GPS-und die Energiedaten des Schiffs in diesem Zeitraum zusammen. Anhand der Abbildung 6-4, 6-5 und der Tabelle 6-1 kann man erkennen, dass das Schiff von 13:00 bis 13:45 mit der Geschwindigkeit von ca. 16kn fährt. Während dieser Zeit ist der Energieverbrauch der Hauptmaschine ca. 960L und das Drehmoment 3500kNm. Von 14:15 bis 15:00 fährt das Schiff langsamer, mit der Geschwindigkeit von ca. 14kn. Jetzt sind der Energieverbrauch und das Drehmoment viel geringer, als wenn das Schiff schneller fährt. Das Ergebnis zeigt uns, je schneller das Schiff fährt, desto mehr Drehmoment und Energie braucht es. Die Abbildung 6-6 zeigt ein anderes Beispiel. Sie stellt den Anfang der Schifffahrt dar, im Zeitraum von 2:00 bis 9:00 am Das Schiff fährt über die Elbe vom Hamburger Hafen ins Meer. Anhand der Abbildungen 6-6 und 6-7 kann man ersehen, dass das Schiff zwischen 2:00 und 6:00 auf der Elbe ist und es mit einer geringeren Geschwindigkeit von max. 13kn fährt. Weil das Schiff in dieser Zeit relativ langsam fährt, verbraucht es auch weniger Energie (siehe Abbildung 6-7, der Verbrauch bevor 6:00). Wenn das Schiff ab 7:00 auf dem Meer fährt, ist es viel schneller und der Energieverbrauch der Hauptmaschine ist auch größer (Abbildung 6-7, der Verbrauch nach 6 Uhr). Gründe für die geringe Geschwindigkeit auf der Elbe sind die Verkehrssicherheit und der geringe Verbrauch des Schiffes, was eine kleinere Belastung für die Umwelt entlang der Elbe zu Gute kommt. Abbildung 6-6: die Teilroute 2:00 bis 9:

71 6 Erprobung mit realen Daten Abbildung 6-7: Verbrauch der Maschinen von 2:00 bis 9: Aus den Zwei Beispielen kann man ersehen, können die Benutzer mit dem Plug-in JEGIS besser verstehen, wo und warum ein Schiff mehr oder weniger Energie verbraucht, z.b. wenn das Schiff schneller fährt (im Beispiel 1) oder wenn es in den Hafen fährt (im Beispiel 2, muss es langsam fahren). Obwohl die Beispiele ganz einfach sind, kann mit JEGIS der Energieverbrauch eines Schiffs besser analysiert werden, um die Energieeffizienz zu optimieren. Wenn die Schiffsdaten genauer sind, können mehr Ergebnisse durch die Analyse gegeben werden. Diese GIS-Lösung ist nicht nur geeignet für die Schiffindustrie, sondern auch für Energieüberwachung von Flugzeugen und Gebäuden. 62

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

Übungen zur Android Entwicklung

Übungen zur Android Entwicklung Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

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

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

White Paper. Embedded Treiberframework. Einführung

White Paper. Embedded Treiberframework. Einführung Embedded Treiberframework Einführung White Paper Dieses White Paper beschreibt die Architektur einer Laufzeitumgebung für Gerätetreiber im embedded Umfeld. Dieses Treiberframework ist dabei auf jede embedded

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

Objektorientierte Software-Entwicklung

Objektorientierte Software-Entwicklung Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz Einführung in das Microsoft.NET-Framework Programmiersprache C# MEF Das Managed Extensibility Framework André Kunz 21.09.2010 1 In dieser Einführung bekommen Sie einen kurzen Einstieg in das.net-framework

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

1. Einführung. 2. Vorbereitung zur Installation. 1.1 Eclipse

1. Einführung. 2. Vorbereitung zur Installation. 1.1 Eclipse 1. Einführung 1.1 Eclipse Die Eclipse ist eine kostenlose integrierte Entwicklungsumgebung oder auch IDE genannt, (Abkürzung IDE, engl. Integrated development enviroment). Sie ist eine grafische Benutzeroberfläche

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

C# - PROGRAMME MIT PLUGINS ERWEITERN

C# - PROGRAMME MIT PLUGINS ERWEITERN C# - PROGRAMME MIT PLUGINS ERWEITERN Schreibt man ein Programm welches erweiterbar sein soll, dann gibt es häufig mehrere Möglichkeiten dies umzusetzen. Die Objektorientierung ist dabei der erste Schritt,

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Praktikum Software Engineering

Praktikum Software Engineering Praktikum Software Engineering Verwendung von Enterprise Architect Pascal Weber, David Kulicke KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Agenda. Clients aus drei verschiedenen Perspektiven: Was ist ein Dialog? Komponentenarchitektur innerhalb eines Dialoges

Agenda. Clients aus drei verschiedenen Perspektiven: Was ist ein Dialog? Komponentenarchitektur innerhalb eines Dialoges Komponentenbasierte Client-Architektur Hamburg, 16.11.2007 Bernd Olleck IT-Beratung Olleck Agenda Clients aus drei verschiedenen Perspektiven: Technische Infrastruktur Fachliche Sicht Aufgaben eines Clients

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Datum, Uhrzeit: 18. 07. 2014, 10.30 Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:...

Datum, Uhrzeit: 18. 07. 2014, 10.30 Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:... Prüfung "Programmieren 2", INbac2, SS 2014 Seite 1 von 7 Datum, Uhrzeit: 18. 07. 2014, 10.30 Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:... Dauer: 60 Min. Hilfsmittel: keine Punkte:...

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org)

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Dynamische Plug-ins mit Eclipse 3 Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Generische Datenstrukturen

Generische Datenstrukturen Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung

Mehr

Java Lab 2006/12/13 Client

Java Lab 2006/12/13 Client Java Lab 2006/12/13 Client Prof. Dr. Bernhard Humm Version: 1.0 Date: 2006/12/06 Darmstadt University of Applied Sciences Department of Computer Science Schöfferstr. 8b 64295 Darmstadt Germany 1 Einleitung

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Objektorientierte Softwareentwicklung

Objektorientierte Softwareentwicklung Objektorientierte Softwareentwicklung Exkurs GUI-Programmierung mit Java-SWING Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Für Hinweise und konstruktive Kritik

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 Software Testing Automatisiert Manuell 100% 70% 1 Überwiegender Teil der Testing Tools fokusiert auf automatisiertes Testen Microsoft

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Qt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse

Qt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse Qt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse Wie man in C++ mit Hilfe von Qt GUI-Anwendungen programmieren kann.

Mehr

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java Grundlagen von Java Aufgabe 1: Typen und Zuweisungen in Java Welche der folgenden Java-Anweisungen sind fehlerhaft? Handelt es sich um einen Compiler- oder einen Laufzeitfehler? Anmerkung: Folgefehler

Mehr

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Beispiel droidremoteppt

Beispiel droidremoteppt Arthur Zaczek Nov 2014 1 Beispiel droidremoteppt 1.1 Beschreibung Powerpoint soll mit ein Android Handy über Bluetooth gesteuert werden Folien wechseln (Vor/Zurück) Folien am Handy darstellen Am Handy

Mehr

Klausur vom 14. Juni 2004. Informatik 4

Klausur vom 14. Juni 2004. Informatik 4 Berner Fachhochschule Hochschule für Technik und Informatik, HTI Fachbereich Elektro- und Kommunikationstechnik Labor für Technische Informatik, Burgdorf Klasse: EV02-1 Name, Vorname: Klausur vom 14. Juni

Mehr

Kapitel 14. Systemarchitektur

Kapitel 14. Systemarchitektur 1 Kapitel 14 Ziele 2 Grundprinzipien der verstehen Schichtenarchitekturen kennenlernen Modelle und Programme mit Paketen strukturieren Eine Architektur für eine einfache Bankanwendung konstruieren Grundprinzipien

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Inhalt: Version 1.7.5

Inhalt: Version 1.7.5 Inhalt: Objekte ohne Methoden Objekte mit einfachen Methoden Objekte und Methoden mit Parametern Objekte und Methoden mit Rückgabewert Objekte mit einem Array als Attribut Beziehungen zwischen Objekten

Mehr

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de Das Build Tool Ant Sebastian Mancke, mancke@mancke-software.de Grundlagen Motivation Bei der Übersetzung und Pflege von Software treten viele, gleich bleibende Arbeitsschritte auf. Übersetzen des Codes

Mehr

Einführung in die Cross-Plattform Entwicklung Das Intel App Framework

Einführung in die Cross-Plattform Entwicklung Das Intel App Framework Einführung in die Cross-Plattform Entwicklung Das Intel App Framework Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel App Framework vom Intel XDK vertraut. Es wird Schritt für Schritt

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Eclipse und Java Einheit 01: Einführung in Eclipse

Eclipse und Java Einheit 01: Einführung in Eclipse Eclipse und Java Einheit 01: Einführung in Eclipse Laith Raed Ludwig-Maximilians-Universität München Institut für Informatik: Programmierung und Softwaretechnik Prof.Wirsing Inhaltsverzeichnis 1 Hintergrundwissen

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans... Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Whitepaper. Produkt: combit List & Label 16. List & Label Windows Azure. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit List & Label 16. List & Label Windows Azure. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit List & Label 16 List & Label Windows Azure List & Label Windows Azure - 2 - Inhalt Softwarevoraussetzungen 3 Schritt 1: Neues Projekt

Mehr

Einführung in Automation Studio

Einführung in Automation Studio Einführung in Automation Studio Übungsziel: Der links abgebildete Stromlaufplan soll mit einer SPS realisiert werden und mit Automation Studio programmiert werden. Es soll ein Softwareobjekt Logik_1 in

Mehr

Java Desktop Anwendungen

Java Desktop Anwendungen 5 1 Java Desktop Anwendungen das Problem: Desktop-Anwendungen werden mit Hilfe der Swing- Bibliothek programmiert, aber die Swing-Bibliothek ist riesig und unübersichtlich es gab kein Programmiergerüst

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Vorbereitung zu Praktikum 3

Vorbereitung zu Praktikum 3 Vorbereitung zu Praktikum 3 Menü-Toolkit und Command Pattern Fallstudie zu Vererbung und Polymorphie: "Menü-Toolkit" Anwenderfreundliche Programme werden mit Menüs gesteuert In objektorientierten Anwendungen

Mehr

Informatik Sommercamp 2012

Informatik Sommercamp 2012 Informatik Sommercamp 2012 App Entwicklung mit dem Android SDK Dominik W., Stefan S., Jan L. Fakultät für Informatik und Mathematik Universität Passau 23.07.2012 Gliederung 1 2 3 4 Warum? an Schule und

Mehr

Das Studiengangsinformationssystem (SGIS)

Das Studiengangsinformationssystem (SGIS) Das Studiengangsinformationssystem (SGIS) Manual für Typo3-Redakteure Version 1.a Mai 2015 Kontakt: Referat 1.4 - Allgemeine Studienberatung und Career Service Christian Birringer, christian.birringer@uni-rostock.de

Mehr

- Entwurfsphase: Entwurfsbeschreibung Gesamtsystem - Version: 1.0

- Entwurfsphase: Entwurfsbeschreibung Gesamtsystem - Version: 1.0 Projektbezeichnung Projektleiter Verantwortlich - Entwurfsphase: Entwurfsbeschreibung Gesamtsystem - Version: 1.0 MSP-13 - Integration eines Semantischen Tagging Systems in Microsoft Sharepoint Martin

Mehr

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

Erstellung eines SharkNet Installers für Windows mit Inno Setup Compiler 5.4.2

Erstellung eines SharkNet Installers für Windows mit Inno Setup Compiler 5.4.2 Erstellung eines SharkNet Installers für Windows mit Inno Setup Compiler 5.4.2 1. Benötigte Software Zur Erstellung des Installers wird folgende Software benötigt. Es wird sich in dieser Dokumentation

Mehr

Software Engineering I

Software Engineering I Software I Übungsblatt 1 + 2 Claas Pinkernell Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Welche Werkzeuge? Programmiersprache Java Integrierte Entwicklungsumgebung Eclipse

Mehr

Diplomarbeit. Entwurf eines generischen Prozessleitstandes für Change Request Systeme

Diplomarbeit. Entwurf eines generischen Prozessleitstandes für Change Request Systeme Fakultät für Mathematik, Informatik und Naturwissenschaften Forschungsgruppe Softwarekonstruktion Diplomarbeit Entwurf eines generischen Prozessleitstandes für Change Request Systeme Development of a Generic

Mehr

Das Interceptor Muster

Das Interceptor Muster Das Interceptor Muster Implementierung des Interceptor Musters basierend auf OSGi and Friends Benjamin Friedrich Hochschule für Technik und Wirtschaft des Saarlandes Praktische Informatik - Entwurfsmuster

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Seminararbeit Ruby Uno Kartenspiel

Seminararbeit Ruby Uno Kartenspiel Seminararbeit Ruby Uno Kartenspiel Autor: Fabian Merki Fabian Merki 05.11.2006 1 von 10 Inhaltsverzeichnis Einleitung... 3 Die Idee... 4 Design und Implementierung in Ruby... 5 Testing... 7 Startbefehle...

Mehr

In diesem Dokument soll kurz auf die Bedienung von VST3PluginTestHost.exe eingegangen werden.

In diesem Dokument soll kurz auf die Bedienung von VST3PluginTestHost.exe eingegangen werden. Hochschule für Angewandte Wissenschaften Hamburg Hamburg University of Applied Sciences Fakultät Technik und Informatik Department Informations- und Elektrotechnik Projekt E7 im Bachelorstudiengang Informations-

Mehr

Ich programmier mir eine App

Ich programmier mir eine App Ich programmier mir eine App Erste Schritte Auf diesem Blatt wir eine App mit einer Maschine verglichen. Die Programmierung entspricht dann der Herstellung dieser Maschine in einer Werkstatt. In der linken

Mehr

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

Diese Anleitung bezieht sich auf FixFoto, V 3.40. In älteren oder neueren Versionen könnte die Arbeitsweise anders sein. Pfade einstellen Stand: Dezember 2012 Diese Anleitung bezieht sich auf FixFoto, V 3.40. In älteren oder neueren Versionen könnte die Arbeitsweise anders sein. Diese Anleitung soll zeigen, wie man Pfad-Favoriten

Mehr

Ein Projekt mit JavaFX erstellen

Ein Projekt mit JavaFX erstellen Ein Projekt mit JavaFX erstellen Das Projekt Es soll eine Umrechnung der Geschwindigkeit aus der Einheit m/s in die Einheit km/h erfolgen. Zu diesem Zweck wird ein einzeiliges Textfeld für die Eingabe

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

Rhapsody in J Modellierung von Echtzeitsystemen

Rhapsody in J Modellierung von Echtzeitsystemen Rhapsody in J Modellierung von Echtzeitsystemen Tobias Schumacher tobe@uni-paderborn.de Rhapsody in J - Modellierung von Echtzeitsystemen p.1/17 Anspruch des Tools Einsatzbereiche/Features Modellierung

Mehr

Installation und Benutzung AD.NAV.ZipTools

Installation und Benutzung AD.NAV.ZipTools Installation und Benutzung AD.NAV.ZipTools Version 1.0.0.0 ALTENBRAND Datentechnik GmbH Am Gelicht 5 35279 Neustadt (Hessen) Tel: 06692/202 290 Fax: 06692/204 741 email: support@altenbrand.de Die Komponente

Mehr

Effiziente Java Programmierung

Effiziente Java Programmierung Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen

Mehr

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design Softwaretechnik (Medieninformatik) Überblick: 6.1 Einleitung 6.2 Verfeinerung des Klassenmodells 6.3 Sequenzdiagramme 6.4 Umsetzung der Analysekonstrukte in das Design 6.5 Fallstudie 6.6 Software Kontrakte

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Sybase Central Dokumentation Aktivierung der Monitoringfunktion

Sybase Central Dokumentation Aktivierung der Monitoringfunktion Sybase Central Dokumentation Aktivierung der Monitoringfunktion Version 1.0 14. Dezember 2012 Inhaltsverzeichnis 1 EINLEITUNG... 3 2 ZIELSETZUNG... 3 3 VORGEHENSWEISE... 3 4 ANHANG... 7 4.1 DOKUMENTHISTORIE...

Mehr

5 Projekt Bankverwaltung

5 Projekt Bankverwaltung Kapitel 5 Bankverwaltung (Lösung) Seite 1/7 5 Projekt Bankverwaltung 5.1 Festlegen der Schnittstelle Bevor du mit der Programmierung beginnst, musst du dir einige Gedanken über die Schnittstelle zwischen

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Softwaretechnologie für die Ressourcenlinguistik

Softwaretechnologie für die Ressourcenlinguistik Tools und Frameworks FSU Jena Gliederung 1 Pipelines Formate 2 3 Übersicht Details Fazit Pipelines Formate Komponenten bilden eine Pipeline Text Sentence Splitter Tokenizer POS-Tagger Output Texte werden

Mehr

Integration von. ERP-Systemen und epages 6. mit Webservices

Integration von. ERP-Systemen und epages 6. mit Webservices Integration von ERP-Systemen und epages 6 mit Webservices - Stand 10/2011 - Einleitung... 2 Grundlagen... 2 Überblick Datenaustausch... 3 Ablauf... 4 Verbindungstest... 4 Testen mit Beispieldaten... 4

Mehr

Praktikum Internetprotokolle - POP3

Praktikum Internetprotokolle - POP3 Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik/Rechnernetze 19. Mai 2008 1 Aufgabenstellung Praktikum

Mehr