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

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

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

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

WordPress. Dokumentation

WordPress. Dokumentation WordPress Dokumentation Backend-Login In das Backend gelangt man, indem man hinter seiner Website-URL einfach ein /wp-admin dranhängt www.domain.tld/wp-admin Dabei gelangt man auf die Administrationsoberfläche,

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

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Bilder zum Upload verkleinern

Bilder zum Upload verkleinern Seite 1 von 9 Bilder zum Upload verkleinern Teil 1: Maße der Bilder verändern Um Bilder in ihren Abmessungen zu verkleinern benutze ich die Freeware Irfan View. Die Software biete zwar noch einiges mehr

Mehr

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

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

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

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

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

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

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

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

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

Mehr

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

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

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

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

1 Dokumentenmanagement

1 Dokumentenmanagement 1 Dokumentenmanagement Das Dokumentenmanagement des GV Büro-System ist ein äußerst leistungsfähiges und mächtiges Tool. Es ist in der Lage, nahezu sämtliche Arten von Dokumenten auf einfache Art und Weise

Mehr

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Wie kann ein PDF File angezeigt werden? kann mit Acrobat-Viewern angezeigt werden auf jeder Plattform!! (Unix,

Mehr

Hex Datei mit Atmel Studio 6 erstellen

Hex Datei mit Atmel Studio 6 erstellen Hex Datei mit Atmel Studio 6 erstellen Es werden generell keine Atmel Studio Dateien ins Repository geladen, da jeder seine Dateien an anderen Orten liegen hat und weil nicht jeder das Atmel Studio 6 benutzt.

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

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

Übungen zur Softwaretechnik

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

Mehr

Dokumentation: Balanced Scorecard

Dokumentation: Balanced Scorecard Dokumentation: Balanced Scorecard 1. Einleitung Eine Balanced Scorecard (BSC) ist eine kennzahlenbasierte Managementmethode, welche sowohl Visionen als auch Strategien eines Unternehmens und relevante

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

12. Dokumente Speichern und Drucken

12. Dokumente Speichern und Drucken 12. Dokumente Speichern und Drucken 12.1 Überblick Wie oft sollte man sein Dokument speichern? Nachdem Sie ein Word Dokument erstellt oder bearbeitet haben, sollten Sie es immer speichern. Sie sollten

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Inhaltsverzeichnis 1. Anmeldung... 2 1.1 Startbildschirm... 3 2. Die PDF-Dateien hochladen... 4 2.1 Neue PDF-Datei erstellen... 5 3. Obelix-Datei

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

ÖKB Steiermark Schulungsunterlagen

ÖKB Steiermark Schulungsunterlagen ÖKB Steiermark Schulungsunterlagen Fotos von Online-Speicher bereitstellen Da das hinzufügen von Fotos auf unsere Homepage recht umständlich und auf 80 Fotos begrenzt ist, ist es erforderlich die Dienste

Mehr

Einfügen von Bildern innerhalb eines Beitrages

Einfügen von Bildern innerhalb eines Beitrages Version 1.2 Einfügen von Bildern innerhalb eines Beitrages Um eigene Bilder ins Forum einzufügen, gibt es zwei Möglichkeiten. 1.) Ein Bild vom eigenem PC wird auf den Webspace von Baue-die-Bismarck.de

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

OS Anwendungsbeschreibung

OS Anwendungsbeschreibung Inhalt Einleitung... 2 Start des Programms... 2 Scannen einer neuen Zeitungsseite... 4 Presse-Clipping... 8 Artikel ausschneiden und bearbeiten... 11 Übernahme aus der Zwischenablage... 19 Ausdruck in

Mehr

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

1. Einschränkung für Mac-User ohne Office 365. 2. Dokumente hochladen, teilen und bearbeiten 1. Einschränkung für Mac-User ohne Office 365 Mac-User ohne Office 365 müssen die Dateien herunterladen; sie können die Dateien nicht direkt öffnen und bearbeiten. Wenn die Datei heruntergeladen wurde,

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

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

Dokumentation Schedulingverfahren

Dokumentation Schedulingverfahren Dokumentation Schedulingverfahren von Norbert Galuschek Gordian Maugg Alexander Hahn Rebekka Weissinger June 23, 2011 1 Contents 1 Aufgabe 3 2 Vorgehensweise 4 2.1 Warum Android.......................

Mehr

Eine Anwendung mit InstantRails 1.7

Eine Anwendung mit InstantRails 1.7 Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen

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

Anleitung für Berichte in Word Press, auf der neuen Homepage des DAV Koblenz

Anleitung für Berichte in Word Press, auf der neuen Homepage des DAV Koblenz Anleitung für Berichte in Word Press, auf der neuen Homepage des DAV Koblenz Diese Anleitung soll als Kurzreferenz und Schnellanleitung dienen um einfach und schnell Berichte auf der Homepage www.dav-koblenz.de

Mehr

Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg am Beispiel myethernet-projekt

Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg am Beispiel myethernet-projekt Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg am Beispiel myethernet-projekt Zielstellung Dieser Schnelleinstieg demonstriert das Arbeiten mit dem Klassendiagramm in SiSy AVR, am Beispiel des myethernet-projektes.

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE-84508 Burgkirchen E-Mail: info@weinzierl.de Web: www.weinzierl.

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE-84508 Burgkirchen E-Mail: info@weinzierl.de Web: www.weinzierl. Installations- und Bedienanleitung DE-84508 Burgkirchen E-Mail: info@weinzierl.de Web: www.weinzierl.de 2013-08-12 Seite 1/6 Inhaltsverzeichnis 1. BESCHREIBUNG... 3 2. SYSTEMVORAUSSETZUNGEN... 3 3. INSTALLATION...

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

2 DAS BETRIEBSSYSTEM. 2.1 Wozu dient das Betriebssystem. 2.2 Die Bildschirmoberfläche (Desktop) Themen in diesem Kapitel: Das Betriebssystem

2 DAS BETRIEBSSYSTEM. 2.1 Wozu dient das Betriebssystem. 2.2 Die Bildschirmoberfläche (Desktop) Themen in diesem Kapitel: Das Betriebssystem 2 DAS BETRIEBSSYSTEM Themen in diesem Kapitel: Das Betriebssystem Die Windows-Oberfläche Elemente eines Fensters 2.1 Wozu dient das Betriebssystem Das Betriebssystem (engl.: operating system, kurz: OS)

Mehr

Zahlen auf einen Blick

Zahlen auf einen Blick Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.

Mehr

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

IBM Software Demos Tivoli Provisioning Manager for OS Deployment Für viele Unternehmen steht ein Wechsel zu Microsoft Windows Vista an. Doch auch für gut vorbereitete Unternehmen ist der Übergang zu einem neuen Betriebssystem stets ein Wagnis. ist eine benutzerfreundliche,

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

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

WhiteStarUML Tutorial

WhiteStarUML Tutorial WhiteStarUML Tutorial Autor: Simon Balázs, BME IIT, 2015. Übersetzung: Kovács Márton, 2015. Installation Herunterladen und installieren Sie das WhiteStarUML: http://sourceforge.net/projects/whitestaruml/

Mehr

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Informatik Kurs Simulation. Hilfe für den Consideo Modeler Hilfe für den Consideo Modeler Consideo stellt Schulen den Modeler kostenlos zur Verfügung. Wenden Sie sich an: http://consideo-modeler.de/ Der Modeler ist ein Werkzeug, das nicht für schulische Zwecke

Mehr

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI TTS - TinyTimeSystem Unterrichtsprojekt BIBI Mathias Metzler, Philipp Winder, Viktor Sohm 28.01.2008 TinyTimeSystem Inhaltsverzeichnis Problemstellung... 2 Lösungsvorschlag... 2 Punkte die unser Tool erfüllen

Mehr

Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint

Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint Bilingual konkret Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint Moderner Unterricht ist ohne die Unterstützung durch Computer und das Internet fast

Mehr

novapro Open Audittrail Report

novapro Open Audittrail Report novapro Open Audittrail Report Bedienungshandbuch 7001042001 Q11 Diese Beschreibung entspricht dem aktuellen Programmstand Version 1.0. Änderungen erfolgen zu jeder Zeit und ohne vorherige Ankündigung.

Mehr

Wochenbericht. Firas Zoabi. Studienprojekt A: SIMPL. 28. Dezember 2009 I M P

Wochenbericht. Firas Zoabi. Studienprojekt A: SIMPL. 28. Dezember 2009 I M P Wochenbericht Firas Zoabi Studienprojekt A: SIMPL 28. Dezember 2009 S I M P L Geplante Aufgaben und Tätigkeiten Erledigte Aufgaben und Tätigkeiten Übersicht Benötigte Arbeitszeit/Aufwände Gewonnene Erkenntnisse

Mehr

Local Control Network Technische Dokumentation

Local Control Network Technische Dokumentation Steuerung von Hifi-Anlagen mit der LCN-GVS Häufig wird der Wunsch geäußert, eine Hi-Fi-Anlage in die Steuerung der LCN-GVS einzubinden. Auch das ist realisierbar. Für die hier gezeigte Lösung müssen wenige

Mehr

DOKUMENTATION VOGELZUCHT 2015 PLUS

DOKUMENTATION VOGELZUCHT 2015 PLUS DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie kann ich E-Mails schreiben? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory E-Mails schreiben können. In myfactory können Sie jederzeit schnell und einfach E-Mails verfassen egal

Mehr

Bauteilattribute als Sachdaten anzeigen

Bauteilattribute als Sachdaten anzeigen Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...

Mehr

Überprüfung der digital signierten E-Rechnung

Überprüfung der digital signierten E-Rechnung Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,

Mehr

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte

Mehr

Um Übergänge, Ein- und Ausblendung zu gestalten, kann man hier eine Leere vor oder nach einem Clip einfügen. Ein Clip ist ein einzelner Film.

Um Übergänge, Ein- und Ausblendung zu gestalten, kann man hier eine Leere vor oder nach einem Clip einfügen. Ein Clip ist ein einzelner Film. Hier fügt man eine Videodatei (z.b. mp4) hinzu. Man wählt die gewünschte Datei aus und drückt auf öffnen. Um Übergänge, Ein- und Ausblendung zu gestalten, kann man hier eine Leere vor oder nach einem Clip

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

Newsletter. 1 Erzbistum Köln Newsletter

Newsletter. 1 Erzbistum Köln Newsletter Newsletter 1 Erzbistum Köln Newsletter Inhalt 1. Newsletter verwalten... 3 Schritt 1: Administration... 3 Schritt 2: Newsletter Verwaltung... 3 Schritt 3: Schaltflächen... 3 Schritt 3.1: Abonnenten Verwaltung...

Mehr

Der Kalender im ipad

Der Kalender im ipad Der Kalender im ipad Wir haben im ipad, dem ipod Touch und dem iphone, sowie auf dem PC in der Cloud einen Kalender. Die App ist voreingestellt, man braucht sie nicht laden. So macht es das ipad leicht,

Mehr

LimeSurvey -Anbindung

LimeSurvey -Anbindung LimeSurvey -Anbindung 1 Was ist LimeSurvey Inhalt 1 Was ist LimeSurvey... 3 2 Grundeinstellungen in CommSy... 4 3 Grundeinstellungen in LimeSurvey... 5 4 LimeSurvey-Umfrage erstellen... 7 4.1 So erstellen

Mehr

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Dezernat 6 Abteilung 4 Stand: 14.Oktober 2014 Inhalt 1. Einleitung 3 2. Räume & gemeinsame Termine finden 3 3. Rüstzeit 8 4. FAQ: Oft gestellte

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

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

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Pixelart-W ebdesign.de

Pixelart-W ebdesign.de Pixelart-W ebdesign.de R a i n e r W i s c h o l e k Rainer Wischolek, Föckerskamp 3a, 46282 Dorsten Telefon: 02362-42454 Mail: info@i-wa.de Anleitung: Bildvergrößerungen mit Lightbox-Effekt SCHRITT 1:

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

O UTLOOK EDITION. Was ist die Outlook Edition? Installieren der Outlook Edition. Siehe auch:

O UTLOOK EDITION. Was ist die Outlook Edition? Installieren der Outlook Edition. Siehe auch: O UTLOOK EDITION Was ist die Outlook Edition? Outlook Edition integriert Microsoft Outlook E-Mail in Salesforce. Die Outlook Edition fügt neue Schaltflächen und Optionen zur Outlook- Benutzeroberfläche

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Programmierung für Mathematik (HS13)

Programmierung für Mathematik (HS13) software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 5 1 Aufgabe: Eclipse IDE 1.1 Lernziele 1. Die Entwicklungsumgebung Eclipse einrichten. 2. Eclipse kennen lernen und mit

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

Internet online Update (Internet Explorer)

Internet online Update (Internet Explorer) Um Ihr Consoir Beta immer schnell und umkompliziert auf den aktuellsten Stand zu bringen, bieten wir allen Kunden ein Internet Update an. Öffnen Sie Ihren Internetexplorer und gehen auf unsere Internetseite:

Mehr

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing. www.egiz.gv.at E-Mail: post@egiz.gv.at Telefon: ++43 (316) 873 5514 Fax: ++43 (316) 873 5520 Inffeldgasse 16a / 8010 Graz / Austria Beschreibung und Bedienungsanleitung Werkzeug für verschlüsselte bpks

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

Praktikum Software Engineering

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

Mehr

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen Um die maximale Sicherheit für das Betriebssystem und Ihre persönlichen Daten zu gewährleisten, können Sie Programme von Drittherstellern

Mehr

Microsoft Access 2013 Navigationsformular (Musterlösung)

Microsoft Access 2013 Navigationsformular (Musterlösung) Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft Access 2013 Navigationsformular (Musterlösung) Musterlösung zum Navigationsformular (Access 2013) Seite 1 von 5 Inhaltsverzeichnis Vorbemerkung...

Mehr

Anleitungen zum Einfügen eines Partnerlinks in Ihre Website

Anleitungen zum Einfügen eines Partnerlinks in Ihre Website www.satnam.de Anleitungen zum Einfügen eines Partnerlinks in Ihre Website A. Mittels eines Content-Management-Systems (CMS) oder Weblogs Seiten 2-6 B. Mittels eines Homepagebaukastens, z.b. von 1&1 Seiten

Mehr

Eigene Seiten erstellen

Eigene Seiten erstellen PhPepperShop Anleitung Datum: 3. Oktober 2013 Version: 2.1 Eigene Seiten erstellen Eigene Inhalte / CMS Glarotech GmbH Inhaltsverzeichnis Anleitung zur Erstellung von eigenen Inhalten/Links...3 1. Anmeldung

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Softwareentwicklungspraktikum Sommersemester 2007. Feinentwurf

Softwareentwicklungspraktikum Sommersemester 2007. Feinentwurf Softwareentwicklungspraktikum Sommersemester 2007 Feinentwurf Auftraggeber Technische Universität Braunschweig

Mehr

Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen

Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen Dateiname: ecdl6_05_01_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 6 Präsentation - Diagramm

Mehr