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

Ereignisbehandlung 21

Ereignisbehandlung 21 Ereignisbehandlung 21 3 Ereignisbehandlung Dieses Kapitel beschäftigt sich mit der Ereignisbehandlung, d.h. der Reaktion eines Programms auf Eingaben durch benutzende Personen. Nach einigen ersten Beispielen

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

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

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

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

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

Ü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

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

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

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

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

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

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

VMscope GmbH. Plugins entwickeln für den VM Slide Explorer 2010. Daniel Heim, 17.08.2011 Seite 1/15 Plugins entwickeln für den VM Slide Explorer 2010 Daniel Heim, 17.08.2011 Seite 1/15 Inhaltsverzeichnis 1 Allgemeines... 3 2 Ein Plugin schreiben... 4 3 Ein Plugin registrieren... 11 4 Aktivieren von Plugins...

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet

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

Kapitel 6. Vererbung

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

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

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

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Jens Kohlmeyer 05. März 2007 Institut für Programmiermethodik und Compilerbau ActiveCharts Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Seite 2 Übersicht

Mehr

SCHNELLEINSTIEG ZUM TOOL NODEBUILDER

SCHNELLEINSTIEG ZUM TOOL NODEBUILDER Fakultät Informatik, Institut für Angewandte Informatik, Professur Technische Informationssysteme SCHNELLEINSTIEG ZUM TOOL NODEBUILDER Betreuer: Dipl.-Ing. A. Cemal Özlük Dipl.-Inf. Uwe Ryssel ALLGEMEINE

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik

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

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

von Anja Austermann Drag and Drop

von Anja Austermann Drag and Drop von Anja Austermann Drag and Drop »Drag and Drop«ist die Bezeichnung für den Datentransfer zwischen unterschiedlichen Anwendungen mit grafischer Benutzeroberfläche. Zur Zeit arbeitet Drag and Drop in Java

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

Grundlagen der Informatik 2

Grundlagen der Informatik 2 Grundlagen der Informatik 2 Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Gliederung 1. Einführung

Mehr

JSF (JavaServer Faces) Erstellen einer Webseite

JSF (JavaServer Faces) Erstellen einer Webseite Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski JSF (JavaServer Faces) Erstellen einer Webseite Dipl. Inf. Manuel Götz Dipl. Inf.

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Handbuch für die Erweiterbarkeit

Handbuch für die Erweiterbarkeit Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

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

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

Benutzeroberflächen. Java Teil 4

Benutzeroberflächen. Java Teil 4 Benutzeroberflächen Java Teil 4 Einleitung Eine grafische Benutzeroberfläche (Graphical User Interface) ermöglicht dem Benutzer die Interaktion mit dem Computer über grafische Symbole. Die GUI haben in

Mehr

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

Java Wireless Toolkit (JWT) Bei der Programmierung von Anwendungsprogrammen für mobile Endgeräte eignet sich die Verwendung des Java Wireless Toolkit. 1 Seminar zum Programmierprojekt Arbeitsbereich Technische Informatik Ausgabe: 30. April 2008 Anleitung B3 Einführung in die Entwicklungsumgebungen Allgemeines In dieser Aufgabe lernen wir die Entwicklungsumgebungen

Mehr

Model View Controller Pattern

Model View Controller Pattern Christian Vogt HAW Hamburg 19. Dezember 2011 Inhaltsverzeichnis 1 Prolog Einleitung Entwurfsmuster andere Muster 2 Model-View-Controller Hintergrund Konzept Umsetzung 3 Beispiele Überblick Beispiel in

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane Hochschule Harz Programmierung2 Tutorial 04: FB Automatisierung und Informatik Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm Programmierung 2 für MI / WI Thema: Swing, JSplitPane und I/O Versuchsziele Kenntnisse

Mehr

How To Einbinden von Kartendiensten in eine Java Applikation mit Hilfe des JXMapKit

How To Einbinden von Kartendiensten in eine Java Applikation mit Hilfe des JXMapKit How To Einbinden von Kartendiensten in eine Java Applikation mit Hilfe des JXMapKit Einleitung Zunächst sollte man sich mit dem SwingX-WS Projekt von SwingLabs 1 vertraut machen. Dieses bietet viele nützliche

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

Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org

Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Fachhochschule Münster Labor für Software Engineering luzar@fh-muenster.de www.naviki.org 1 Naviki die Idee www.naviki.org 2 Wie funktioniert

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

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

Design Patterns 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Java I Vorlesung 11 Graphische Oberflächen mit Swing Java I Vorlesung 11 Graphische Oberflächen mit Swing 5.7.2004 Swing Komponenten Layout-Manager Events Swing und Threads Die Java-Plattform 2 Die Java-Plattform 3 "Hello World" in Swing HelloWorldS.java

Mehr

Serie 3: Designbeschreibung Verantwortlich für Rose-Projekt und Designbeschreibungen Dang, Quoc Anh / Phan, Ngoc Diep / Xiongjie Ding

Serie 3: Designbeschreibung Verantwortlich für Rose-Projekt und Designbeschreibungen Dang, Quoc Anh / Phan, Ngoc Diep / Xiongjie Ding DESIGNBESCHREIBUNG. 1. Allgemeines.? GeoViewer ist eine menügesteuerte graphische Java-Applikation. VonGEO-Record wird die vordefinierte geometrische Konfiguration geladen, im GeoProver-Paket berechnet

Mehr

4 Codierung nach Viginere (Lösung)

4 Codierung nach Viginere (Lösung) Kapitel 4 Codierung nach Viginere (Lösung) Seite 1/14 4 Codierung nach Viginere (Lösung) 4.1 Einführung Blaise de Vigenère lebte von 1523 bis 1596 in Frankreich und war nach dem Studium bei verschiedenen

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Einführung in das Microsoft.NET-Framework. Programmiersprache C# 02: Visual Studio / Hello World. Boris Hülsmann

Einführung in das Microsoft.NET-Framework. Programmiersprache C# 02: Visual Studio / Hello World. Boris Hülsmann Einführung in das Microsoft.NET-Framework Programmiersprache C# 02: Visual Studio / Hello World Boris Hülsmann 23.09.2010 1 In dieser Einführung bekommen Sie einen kurzen Einstieg in das.net-framework

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2 Universität Osnabrück 1 3 - Objektorientierte Programmierung in Java Zur Erinnerung: Aufteilung der Schichten GUI Vorlesung 17: 3-Schichten-Architektur 2 Fachkonzept Fachkonzept - Datenhaltung Datenhaltung

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

Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Einleitung Oracle Enterprise Scheduler (ESS)

Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Einleitung Oracle Enterprise Scheduler (ESS) Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Automatisierung, Betrieb, Middleware Einleitung Der Oracle Fusion Middleware Stack beinhaltet eine leistungsstarke

Mehr

Inhaltsverzeichnis 1 Einführung Die Software JGIS Grundlagen raumbezogener Daten

Inhaltsverzeichnis 1 Einführung Die Software JGIS Grundlagen raumbezogener Daten 1 Einführung... 1 1.1 Was wird vermittelt?... 1 1.2 Hinweise zum Buch... 3 1.3 Hinweise zur Buch-CD... 4 1.4 Hinweise zum Forum... 4 1.5 Allgemeine Hinweise... 5 2 Die Software JGIS... 7 2.1 Start des

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

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik GUI-Programmierung mit Swing AWT und Swing Java enthält zwei Pakete zur Programmierung graphischer Oberflächen. java.awt: Das Abstract

Mehr

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:

Mehr

Kapitel 6,»Objektorientierte Programmierung«, widmet sich der objektorientierten Programmierung mit Python.

Kapitel 6,»Objektorientierte Programmierung«, widmet sich der objektorientierten Programmierung mit Python. 1.3 Aufbau des Buchs lichkeiten offen. Auf die Unterschiede der beiden Versionen gehe ich besonders ein, sodass ein späterer Umstieg von der einen zur anderen Version leichtfällt. Erste Zusammenhänge werden

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Einbindung der Tastatur

Einbindung der Tastatur Einbindung der Tastatur Auch die Tastatur kann man wie die Maus zur interaktiven Programmsteuerung verwenden. Bei der Maus ist stets klar, welche grafische Komponente bei einem Klick oder einer Bewegung

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

PRAKLA SEISMOS Downloadportal

PRAKLA SEISMOS Downloadportal PRAKLA SEISMOS Downloadportal Voraussetzungen Um die recht umfangreichen PDF Dokumente, mit einer Größe bis zu 60 MByte, ansehen zu können, müssen sie aus dem Internet geladen werden. Dazu ist eine schnelle

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

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

Tutorial: Eigene Module und Extensions entwickeln. Version: 0.1 Autor: Anja Beuth

Tutorial: Eigene Module und Extensions entwickeln. Version: 0.1 Autor: Anja Beuth Tutorial: Eigene Module und Extensions entwickeln Version: 0.1 Autor: Anja Beuth Inhaltsverzeichnis 1 2 2.1 2.2 2.3 2.4 3 4 4.1 4.2 4.3 5 5.1 6 6.1 6.2 Notwendigkeit prüfen... Ein Projekt in Visual Studio

Mehr

GUI Programmierung in Java

GUI Programmierung in Java vs und niemals mischen! Daher muss man sich für eine Klasse entscheiden 1 (Abstract Window Toolkit) schwergewichtige Alle Elemente werden vom Betriebssytem gemalt sehen aus wie alle anderen Programme auf

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

Ostfalia Hochschule für angewandte Wissenschaften Fakultät Elektrotechnik

Ostfalia Hochschule für angewandte Wissenschaften Fakultät Elektrotechnik Ostfalia Hochschule für angewandte Wissenschaften Fakultät Elektrotechnik Prof. Dr.-Ing. D. Meyer Software Engineering SS 2013 Bearbeitungszeit Kurzfragenteil: 30 Minuten Hilfsmittel: keine Name Vorname

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

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster by Ali Bastan Gliederung Grundlagen von Swing 1. Kurze Einleitung 2. Warum Swing, wenn es das AWT gibt? 3. Was ist Swing? 4. Merkmale von Swing 5.

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:

Mehr

Evaluation von Nintex Workflow 2007 für die Erstellung von Workflow-Lösungen unter Microsoft SharePoint Technologien

Evaluation von Nintex Workflow 2007 für die Erstellung von Workflow-Lösungen unter Microsoft SharePoint Technologien Informatik Jan Schwarzer Evaluation von Nintex Workflow 2007 für die Erstellung von Workflow-Lösungen unter Microsoft SharePoint Technologien Bachelorarbeit Bibliografische Information der Deutschen Nationalbibliothek:

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

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

GRAFISCHE BENUTZERSCHNITTSTELLEN

GRAFISCHE BENUTZERSCHNITTSTELLEN Vorlesung 4.4 GRAFISCHE BENUTZERSCHNITTSTELLEN Dr. Philip Mayer # 1 GUIs Grafische Benutzerschnittstellen (GUIs, Graphical User Interfaces) bieten dem Benutzer Zugriff auf ein Anwendungssystem GUIs sind

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

Kurzanleitung zu XML2DB

Kurzanleitung zu XML2DB Kurzanleitung zu XML2DB Inhaltsverzeichnis 1. Einleitung...3 2. Entwicklungsumgebung...3 3. Betriebsanleitung...3 3.1 Einrichten der Java Umgebung...3 3.2 Allgemeines zu java und javac...4 3.2.1 Allgemeines

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Entwickler-Handbuch EPC Analyser

Entwickler-Handbuch EPC Analyser Entwickler-Handbuch EPC Analyser Version 1.0 Inhaltsverzeichnis 1 Grundlegender Anwendungsaufbau...1 2 Paket- und Klassenbeschreibung...2 2.1 GUI...2 2.2 View...2 2.3 Charts...5 2.4 Controller...6 2.5

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

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/15 1 / 24 Singleton-Muster 2 / 24 Das Singleton Im einfachsten Fall wird ein Singleton über

Mehr

eclipse und Komponenten

eclipse und Komponenten Christian bossk Holle & Markus Breitländer Fh-Dortmund Fb Informatik SS04 Geschichte von eclipse April 1999 Eclipse wird von OTI und IBM entwickelt November 2001 Eclipse wird Open Source Lizensiert unter

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

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer Applets Belebung von Webseiten Dipl.-Ing. Wolfgang Beer Was sind Applets? Java Klassen, die spezielle Richtlinien befolgen, um: "in Internet-Browsern lauffähig zu sein" Somit ist, komplexere Funktionalität,

Mehr

Datenvisualisierung mit JMP

Datenvisualisierung mit JMP Datenvisualisierung mit JMP Patrick René Warnat HMS Analytical Software GmbH Rohrbacherstr. 26 Heidelberg patrick.warnat@analytical-software.de Zusammenfassung Das JMP Paket ist ein Softwareprodukt der

Mehr

Technische Dokumentation SilentStatistikTool

Technische Dokumentation SilentStatistikTool Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

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

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

Das Handbuch zu KSnapshot

Das Handbuch zu KSnapshot Richard J. Moore Robert L. McCormick Brad Hards Korrektur: Lauri Watts Entwickler: Richard J Moore Entwickler: Matthias Ettrich Übersetzung des Handbuchs: Robert Gogolok Übersetzung des Handbuchs: Kilian

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

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

9.10.2014 JavaFX8 - JumpStart - JUGCH. file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1 1/128

9.10.2014 JavaFX8 - JumpStart - JUGCH. file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1 1/128 file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1 1/128 Sven Ruppert speaking java since 1996 Principal IT Consultant Standort - München @SvenRuppert 3/128 file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1

Mehr

Eine Kommando-Oberfläche für.net

Eine Kommando-Oberfläche für.net Institut für Systemsoftware O.Univ.-Prof. Dr. Hanspeter Mössenböck Eine Kommando-Oberfläche für.net In.NET (wie auch in vielen anderen Systemen) haben Programme nur einen einzigen Eintrittspunkt (ihre

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

Jürgen Bayer. MDI-Anwendungen in C#

Jürgen Bayer. MDI-Anwendungen in C# Jürgen Bayer MDI-Anwendungen in C# Inhaltsverzeichnis 1 Grundlagen 2 1.1 Einrichten der Formulare 2 1.2 Öffnen von MDI-Childformularen 3 2 Menüs 4 2.1 Erstellen eines Menüs 4 2.2 Programmierung der Menüpunkte

Mehr

myavr Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg für myavr Board MK3

myavr Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg für myavr Board MK3 myavr Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg für myavr Board MK3 Zielstellung Dieser Schnelleinstieg demonstriert das Arbeiten mit dem Klassendiagramm in SiSy AVR mit der Bibliothek für das

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

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr