Graphical User Interface for Monitoring and Control Systems

Größe: px
Ab Seite anzeigen:

Download "Graphical User Interface for Monitoring and Control Systems"

Transkript

1 Diplomarbeit Graphical User Interface for Monitoring and Control Systems Tatjana Dalinger September 2005 Betreuung: Prof. Dr. A. Künkler Fachbereich Design und Informatik Fachhochschule Trier University of Applied Sciences

2 FACHHOCHSCHULE TRIER UNIVERSITY OF APPLIED SCIENCES Fachbereich DESIGN UND INFORMATIK Autor: Tatjana Dalinger Titel: Graphical User Interface for Monitoring and Control Systems Studiengang: Angewandte Informatik Betreuung: Prof. A. Künkler Fachbetreuung: Harold Linke, Stefan Roemer September 05 Es wird hiermit der Fachhochschule Trier (University of Applied Sciences) die Erlaubnis erteilt, die Arbeit zu nicht-kommerziellen Zwecken zu verteilen und zu kopieren. Unterschrift des Autors Tatjana Dalinger, ii -

3 Danksagung An dieser Stelle möchte ich mich bei folgenden Personen bedanken: Prof. Dr. Andreas Künkler für die gute und kompetente Betreuung Dem Verantwortlichen für dieses Projekt, Harold Linke, der mir das Thema für meine Diplomarbeit vorgeschlagen und diese überhaupt ermöglicht hat Meinen Fachbetreuern Stefan Roemer und Dominik Rehm für die Vorschläge und Verbesserungen in der Projektrealisierung Meinen Mann Viktor Dalinger für die große Hilfe, die Aufmunterung und Unterstützung während der ganzen Zeit Meinen Eltern Natalia und Waldemar Nierenberg, die mir das Studium überhaupt erst ermöglicht haben - iii -

4 4 / 81 Abkürzungsverzeichnis ACU AWT ALC BSS COM DBS DC DOM EIRP FSS GUI HPA IP JDOM LNA MVC M&C OCX PC PNG Popup PLC RF SAX SCU Antenna Control Unit Abstract Window Toolkit Automatic Level Control Broadcast Satellite Service Component Object Model Direct Broadcast Down-Converter Document Object Model Effective Isotropic Radiated Power Fixed Satellite Service Graphical User Interface High Frequency Power Amplifier Internet Protocol Java Document Object Model Low Noise Amplifier Model-View-Controller Monitoring und Control ActiveX Control Personal Computer Portable Network Graphics Browser-Fenster Programmable Logic Controller Radio Frequency Simple API for XML Parsing System Control Unit

5 5 / 81 TCP TRK DC TLT TR TTC TWTA UC UML WGS XML Transmission Control Protocol Tracking Down Converter Test Link Translator Tracking Receiver Telemetry and Telecommand Control Traveling Wave Tube Amplifier Up Converter Unified Modeling Language Wave Guide Switches Extensible Markup Language

6 6 / 81 Kurzfassung Die mobile Kommunikation ist zurzeit bereits ein fester Bestandteil unseres Lebens geworden. Die steigende Zahl der Teilnehmer ist fast in allen Bereichen der mobilen Kommunikation (Mobiltelefon, Fernseh-/Rundfunkdienst, Wetterbeobachtung usw.) festzustellen. Sowohl im Flugzeug als auch auf dem Schiff wollen die Menschen auf den Komfort der mobilen Kommunikation nicht verzichten. In dieser Arbeit wurde ein Konzept für eine betriebssystemunabhängige grafische Benutzeroberfläche in der Programmiersprache Java entwickelt. Als eine Beispielanwendung wird die Benutzeroberfläche für ein Monitoring & Control System (M&C System) für die Satellitenbodenstationen implementiert, das von dem Unternehmen HITEC Luxembourg S. A. in Luxembourg entwickelt wurde. Das System überwacht und bedient alle Geräte einer Satellitenbodenstation über eine lokale und mehrere abgesetzte Konsolen (PCs, Clients) an einem Standort. Außerdem bietet es als Benutzeroberfläche, die individuell für einen Einsatzort realisiert ist, eine grafische Anzeige aller zu überwachenden und zu steuernden Komponenten und ihrer Funktionsbeziehungen untereinander.

7 7 / 81 Abstract Mobile communication has become a steady component of our life. The rising number of the participants is in almost all areas of the mobile communication (mobile phone, television service and broadcasting company service, meteorological observation etc.) to ascertain. In the airplane as well as on the ship people do not want to renounce the comfort of the mobile communication. In this thesis a draft has been developed for a system independent graphic user interface in the programming language "Java". As an example application a user interface for a Monitoring and Control system (M&C system) for satellite ground stations was implemented which was developed by the enterprise "HITEC Luxembourg S.A." in Luxembourg. The system controls all devices of a satellite ground station about a local and several set off consoles (PC, clients) in a location. In addition, it offers as the user interface which is realized individually for an application place a graphic announcement of all components to be controlled and to be supervised and their functional relations dependencies.

8 8 / 81 Inhaltsverzeichnis Graphical User Interface for Monitoring and Control Systems Einleitung Anwendungsbereiche von Satellitensystemen Wetterbeobachtung Fernsehen und Rundfunk Aufbau der Arbeit Aufgabenstellung und Zielsetzung Muss-Kriterien Kann-Kriterien Analyse des vorhandenen Basissystems Funktionsweise des M&C Systems Mehrschichtige Architektur Server-Arten Darstellung des M&C Systems M&C Subsysteme als grafische Elemente Popup-Fenster der Subsysteme Programmierkonzepte in Java Model - View - Controller - Muster ( MVC ) UML-Modellierung Klassenstruktur und Klassenhierarchie Paket-Struktur Realisierung Datenstruktur HashMap Eigenschaften von HashMap M&C System-Datenstruktur mit HashMap...34

9 9 / Datenverwaltung mit XML Aufbau von XML-Dokumenten Speichern von Systemdaten in XML Bearbeiten der XML-Dateien mit JDOM Erzeugen der Objekte mit Reflection Benutzung des Programms Elemente der Benutzeroberfläche Menü-Funktionen Funktionalität der Objekte Properties-Fenster Implementierung Model-Komponente acu -Unterpaket control -Unterpaket twta -Unterpaket sw -Unterpaket linec -Unterpaket linehorizontal -Unterpaket linevertical -Unterpaket View-Komponente GeneralPopup AboutPopup ACUPopup SwPopup TWTAPopup Controller-Komponente ACUController...73

10 10 / SwController TWTAController Zusammenfassung und Ausblick...75 Literaturverzeichnis...77 A Glossar...78 B Entwicklungsumgebungen...80 C Inhalt der beiliegenden CD...81

11 11 / 81 1 Einleitung Die Satellitensysteme sind seit dem zweiten Weltkrieg zu einer der bekanntesten Schlüsseltechnologien geworden. Aus einfachsten Konstruktionen, die oft nur einen basisexperimentellen Charakter hatten, entwickelten sich produktive und operative High-Tech-Systeme, die wesentliche und globale Aufgaben erfüllen. Sie bieten den großen Vorteil, mit einem relativ geringen technischen Aufwand eine große funktechnische Abdeckung der Erdoberfläche zu beschaffen. So deckt ein entsprechend dimensionierter Satellit auf einer speziellen Umlaufbahn etwa ein drittel der Erdoberfläche ab. Um gleiche Ergebnisse auf Basis von terrestrischer Infrastruktur zu erzielen, müssten unverhältnismäßig umfangreiche Investitionen getätigt werden. Oftmals erweist sich die Satellitentechnologie in bestimmten Regionen der Erde als überhaupt einzig mögliche Kommunikationslösung [sch04]. Das M&C System der Firma HITEC Luxembourg S.A. ist ein softwarebasiertes System, das die Ausrüstung einer Satellitenbodenstation kontrolliert. Die Überwachung kann lokal, ohne Internet-Verbindung von einem Kunden durchgeführt werden. Die typische Warnungen der Satelliten-Ausrüstung, wie die zusammenfassenden Warnungen, Schwellen oder Grenzen der Datenqualität werden erfasst. Warnungsnachrichten werden an den Server weitergeleitet und die Benutzer werden über eine graphische Warnung alarmiert. Somit hat der Benutzer volle Kontrolle über die ganze Satellitenbodenstation und ihre Funktionalität.

12 12 / Anwendungsbereiche von Satellitensystemen Es gibt viele Anwendungsbereiche, wo die Satelliten eingesetzt werden. Für die Forschung, die Wetterbeobachtung, Fernsehen und Rundfunk und die Telekommunikation aber auch für das Militär sind die Satelliten unverzichtbare Hilfsmittel geworden Wetterbeobachtung Die Satelliten unterstützen die weltweiten Wettervorhersagen und ergänzen die Prognosen um wesentliche Details. Sie messen die veränderlichen Größen wie z.b. Windrichtungen und Windbewegungen, Lufttemperaturen, Oberflächentemperaturen von Land und Wasser sowie den Zustand der Atmosphäre (siehe Abb. 1). Dafür besitzen sie umfangreiche Instrumente wie Fernsehkameras, Infrarot-Radiometer und Strahlungs-Messgeräte. Abbildung 1: Hurrikan Ivan (links) und Wetterlage Europa (rechts) Fernsehen und Rundfunk Auch zur Übertragung von Radio- und Fernsehsignalen über Sektoren hinweg werden die Satelliten eingesetzt. Sie empfangen die Signale der Bodenstation, setzen sie um, verstärken sie und strahlen sie über Richtantennen im Versorgungsgebiet aus. Dabei erfüllen Sie eine Art Repeater-Funktionalität. In der Abbildung 2 unterscheidet man zwischen zwei Arten von Satelliten: den Fernmeldesatelliten und Direktsatelliten (sog. DBS: Direct Broadcast). Die Fernmeldesatelliten ermöglichen eine besondere Weiterverbindung, sie bestrahlen eine kleine Fläche mit niedriger Leistung. Im Vergleich zu den Fernmeldesatelliten ermöglichen die Direktsatelliten eine großflächige Übertragung mit einer relativ hohen Leistung. Abbildung 2: Fernmeldesatelliten (links) und Direktsatelliten (rechts)

13 13 / Aufbau der Arbeit Dieser Abschnitt fasst die notwendigen Grundlagen, die detaillierten Anforderungen, sowie Design und Implementierung des M&C Systems zum besseren Verständnis dieser Dokumentation zusammen. Die Problemstellung und die Zielsetzung dieser Diplomarbeit werden im Abschnitt 1.3 genauer beschrieben. Um zu verstehen, wo die Probleme und Schwierigkeiten bei der jetzigen Implementierung der grafischen Benutzeroberfläche liegen, ist es erforderlich, den Aufbau des M&C Systems zu kennen. Diesem Zweck dient das Kapitel 2. Es wird hier ein grober Überblick über das vorhandene Ausgangssystem bzw. Basissystem und seine Funktionalität gegeben. Das Kapitel 3 stellt einen konzeptionellen Teil dieser Diplomarbeit dar. Es beschreibt die technischen Hilfsmittel zur Realisierung der Anwendung. Sowohl das Entwurfsmuster MVC, das bei der Implementierung des Model anzuwenden war, als auch die Paket-Struktur, die mit Hilfe von Klassendiagrammen dargestellt wurde, sind Gegenstand dieses Kapitels. Im Kapitel 4 sind die HashMap-Datenstruktur und die XML-Technologie, die für das Laden, Abspeichern und Überprüfen von verschiedenen Objekten und ihren Eigenschaften bzw. Attributen benutzt wurden, beschrieben. Auch das Einlesen und das Schreiben der XML-Dokumente mit JDOM werden in diesem Kapitel näher erläutert. Wie man das Programm starten und benutzen kann, wird im Kapitel 5 ausführlich beschrieben. Sowohl alle Elemente der grafischen Benutzeroberfläche wie das Menü, Popup-Menü usw. als auch die Funktionalität der Objekte werden in diesem Kapitel dargestellt. Das Kapitel 6 widmet sich der Implementierung des Prototyps des M&C Systems. Hier werden die UML-Klassendiagramme nach dem Grundkonzept Model-View- Controller entworfen und alle wichtigen Klassen dargestellt und analysiert. Im letzten Kapitel wird zusammenfassend das Ergebnis dieser Arbeit bewertet. Dabei werden Möglichkeiten, die noch zur Erweiterung des M&C Systems führen könnten, diskutiert.

14 14 / Aufgabenstellung und Zielsetzung In diesem Kapitel werden die vorliegende Aufgabe und das Ziel dieser Diplomarbeit dargelegt. Die Aufgabe der Diplomarbeit ist es ein Konzept für eine betriebssystemunabhängige grafische Benutzeroberfläche für die Satellitenbodenstationen zu entwickeln, bei dem die allgemeingültigen universellen Objekte für die Kontrollkomponenten verwendet werden müssen. Die Eigenschaften der Objekte wie die Eingaben, Ausgaben, Reaktionen auf Benutzereingaben, Position und Beziehungen zu anderen Komponenten müssen flexibel an die realen Kontrollkomponenten angepasst werden können. Zum Nachweis der Funktionsfähigkeit des Konzepts ist ein Prototyp eines M&C Systems zu realisieren. Die Ausgangsbasis für die neue Benutzeroberfläche der M&C Systeme ist die Benutzeroberfläche des bestehenden M&C Systems (siehe Abb. 3), die seit acht Jahren im Unternehmen eingesetzt und immer weiterentwickelt wurde. Abbildung 3: Benutzeroberfläche des aktuellen M&C Systems In der jetzigen Implementierung werden die zu steuernden Komponenten wie zum Beispiel Antennen, Schalter, Verstärker des M&C Systems durch OCX (ActiveX Control)-Objekte realisiert. Die OCX-Objekte sind Komponenten, die ihre Dienste über die in COM definierte Software-Schnittstelle zur Verfügung stellen. Die Erstellung einer Oberfläche mit diesen Objekten ist aufwendig und unflexibel. Deswegen ist das Ziel dieser Arbeit, eine neue Benutzeroberfläche der M&C Systeme in Java zu entwickeln, die von den Kunden selbst konfiguriert werden kann, und die Überwachung und die Kontrolle von verschiedenen technischen Anlagen wie zum Beispiel Satellitenbodenstationen, IT-Netzwerke, Wetterstationen und Produktionsumgebungen ermöglicht.

15 15 / Muss-Kriterien die Komponenten, Geräte und Abläufe, die überwacht und kontrolliert werden müssen, sollen analysiert werden die Objekte werden mit den statischen und dynamischen Informationen definiert die Klassifizierung und Gruppierung der Komponenten nach Gemeinsamkeiten und Eigenschaften die Basisklassen, von denen alle Objekte abgeleitet werden können, müssen definiert werden die Verallgemeinerung von Objekten, die durch Parametrisierung möglichst viele Komponenten repräsentieren können ein Modell für die Interaktion der Objekte muss aufgebaut werden (UML) die Realisierung eines Prototyps in Java, an dem die Grundfunktionen eines M&C Systems gezeigt werden können alle einzelne Objekte müssen in einer Java Runtime Database bzw. in einer XML-Datei gespeichert werden Kann-Kriterien die Laufzeit muss nicht berücksichtigt werden die Benutzung von anderer separater Software

16 16 / 81 2 Analyse des vorhandenen Basissystems Die Satellitenstation ist allgemein aus drei Elementen zusammengesetzt: BSS (Broadcast Satellite Service) FSS (Fixed Satellite Service) TTC (Telemetry and Telecommand Control) Die M&C Systeme zur Kontrolle der Satellitenstation werden auf drei verschiedenen PCs installiert. Die PCs sind per Ethernet gekoppelt und jeder von ihnen hat eine spezifische Funktionalität. Der PC, der wirklich die Ausrüstung in einem RF (Radio Frequency)-Raum kontrolliert, wird der Echtzeit -PC genannt. Der Anwendungswebserver in diesem RF-Raum wird als "Lokaler -PC und der Computer im Monitoring-Raum als Entfernter -PC bezeichnet. Das nächste Kapitel verweist auf das FSS M&C System und stellt die Bestandteile und die Funktionalitäten dieses Systems dar [hit]. Der Datenfluss der Benutzeroberfläche des M&C Systems ist in der Abbildung 4 dargestellt. Abbildung 4: Datenfluss der Benutzeroberfläche

17 17 / Funktionsweise des M&C Systems Das oben genannte System soll folgendermaßen funktionieren: zuerst soll man den "Echtzeit"-PC, danach den "Lokalen" und "Entfernten"-PCs hochfahren. Vor dem Einschalten der PCs muss der Maschinenbediener bestätigen, dass die ganze Ausrüstung eingeschaltet und lokal überprüft ist. Das wird unnötige vielfache Warnungsmeldung verhindern. Nach dieser Kontrolle kann das System gestartet werden. Die Ausrüstung wird mit ihrer gegenwärtigen Konfiguration auch automatisch gestartet. Das Programm kann auch angehalten und wieder gestartet werden. Während das Programm angehalten wird, gibt es keine Warnungskontrolle. Folgende Subsysteme kontrollieren und steuern die ganze Satelliten-Ausrüstung: Up Converter (UC) Down Converter (DC) Test Link Translator (TLT) Tracking Down Converter (TRK DC) Tracking Receiver (TR) Traveling Wave Tube Amplifier (TWTA) High Frequency Power Amplifier (HPA) Antenna Control Unit (ACU) Low Noise Amplifier (LNA) Wave Guide Switches (WGS) Dehydrator Deicing unit SCU (System Control Unit) LNA Power supply Combiner

18 18 / Mehrschichtige Architektur In der Abbildung 5 wird die Architektur des M&C Systems, die insgesamt aus drei Schichten Data Acquisition, Data Processing und Data Visualisation besteht, dargestellt. Zu der ersten Data Acquisition -Schicht gehören die Ausrüstung (ACU, TWTA, Switch usw.) und die Echtzeit -PCs (Treiber-Geräte). Die Ausrüstung und die Treiber-Geräte sind miteinander per seriellen Schnittstelle (RS) verbunden. Die zweite Data Processing -Schicht besteht aus den Datenverarbeitern (AutoProcessor/AutoBackup), einer Datenbank (Data Processor/Data Image Holder), einem Alarm Server, einem Picture Server und einem Client Manager. Die Treiber- Geräte aus der ersten Schicht übersetzen die Daten der Ausrüstung und senden diese entweder an den Datenverarbeiter (AutoProcessor/AutoBackup) oder an die zentrale Datenbank (Data Processor) direkt, wo alle XML-Dateien enthalten sind, per TCP/IP Verbindung weiter. Die Datenbank und der Client Manager senden die Daten an den Web Server weiter und der Web Server schickt dann eine http-anfrage an die Client- PCs, die zu der letzten Schicht Data Visualisation gehören. Abbildung 5: dreischichtige Architektur des M&C Systems

19 19 / Server-Arten Das ganze M&C System besteht insgesamt aus folgenden sechs Servern. Wenn der Benutzer das Programm startet, führen diese Server ihre Programme unabhängig voneinander aus. Sie laufen alle auf dem Lokalen -PC (Webserver): McMainServer: dieser Server ist die Hauptanwendung des M&C Systems. Er startet alle anderen Server und sendet die vom Kunden gesandte Anfrage. Diese Anwendung ist hauptsächlich ein Webserver mit der Hinzufügung von Systemkontrollfunktionen. McPictureServer: zeigt das gesamte System-Bild des M&C Systems an. Das Bild wird mit den Daten, die von den Gerätetreibern kommen, aktualisiert. Diese Daten, die durch den McMainServer an allen Datenbank-Kunden gesandt werden, werden in eine PNG (Portable Network Graphics)-Datei umgewandelt. McRealTimeEngine: führt alle Laufzeiteinstellungen aus, versorgt und zeigt die automatische Kettenkonfiguration, eine Reihe von Überprüfungen und Berechnungen von speziellen Werten und wird noch für Folgendes verwendet: Transponder-Datenbankzugang, EIRP-Daten-Zugang, Kettenkonfiguration, Wartungsdatenbankzugang, Schalter-Zugriffssicherheit. McAlarmServer: ist für die Warnungen verantwortlich. Die Information wird mit den Daten, die aus den Gerättreibern kommen, aktualisiert und dem Benutzer in einem roten Warnungsfenster gezeigt. Dieser Server speichert auch, welche Benutzer er alarmieren soll und protokolliert das. McDDClient: behandelt die Kommunikation mit dem Echtzeit -PC über TCP/IP und steht mit allen Treibern und dem Webserver in Verbindung, erhält alle Daten, die aus den Treibern kommen und gibt sie weiter. Auf dem Weg nimmt er die Benutzerbefehle und sendet diese dem Bestimmungsort-Treiber auf dem Echtzeit -PC. McClientManager: steuert die Kunden-Browser-Verbindungen. Um die entfernte Verbindung zum System zu erlauben, muss ein normaler WWW-Browser auf dem Port 8081 geöffnet sein. Der McClientManager beschränkt den Zugang zu den autorisierten PCs. Die Liste der PCs wird im McClientManager gespeichert und kann nur vom Stationsverwalter verändert werden.

20 20 / Darstellung des M&C Systems Die Betrachtung des M&C Systems ist in einem Standard-Internet-Browser möglich. Die Graphikschnittstelle ist eine Multiniveau-System-Anzeige. Der Bildschirm, der als Spitzenniveau-Anzeige bezeichnet wird, versorgt den Maschinenbediener mit allen wichtigen Stationskonfigurationen. Er stellt eine ausführliche Ansicht zur Verfügung, die den gegenwärtigen Status von Convertern, HPAs, Switches usw. anzeigt. Dadurch kann der Maschinenbediener auf die individuellen Geräte zugreifen. Über eine Modemverbindung kann das System ohne Leistungsmangel kontrolliert werden. Jedes dynamische Symbol auf der Systemansicht kann geklickt werden um spezifische Auskunft zum Beispiel während der Fehlermeldung zu geben (Abb. 6). Abbildung 6: Alarm-Box Jedes Gerät kann kontrolliert und über seine eigene Schnittstelle gesteuert werden. Im Menü befinden sich mehrere Funktionalitäten der Überwachung und des Kontrollsystems. Allerdings laufen die zeitkritischen Funktionalitäten auf einem getrennten Echtzeit -PC. Jedes Ereignis im System führt zu einer neuen Darstellung der grafischen Benutzeroberfläche und die Warnungen werden als "aktiver" Status in der Farbe geführt (siehe Tabelle 1). grün hellrot dunkelrot gelb weiß die Ausrüstung ist ok die Ausrüstung meldet ein Fehler Kommunikationsfehler die Ausrüstung ist in einem lokalen Modus die Ausrüstung ist in der Wartung Tabelle 1: Farbenschema des M&C Systems

21 21 / M&C Subsysteme als grafische Elemente Das graphische Element ist ein Bestandteil, das ein großes Angebot an Funktionalitäten unterstützt und kundengerecht angefertigt werden kann, um sich an viele Benutzerschnittstellen-Bedürfnisse anzupassen. Diese Steuerungen können für viele Benutzer entwickelt werden. Die Browser-Anwendung ist im Stande, jedes einzelne Element zu bedienen, seine Eigenschaften zu kontrollieren und die Methoden auf dieses Element zu verwenden. Der Benutzer kann das Äußere der graphischen Elemente selbst definieren und ändern. Up/Down/TLT-Converter F: Frequenz in MHz A: Attenuation in db Ausgang an oder aus die Farbe gibt Auskunft über die ergänzende Information Abbildung 7: Anzeige eines Up/Down/TLT-Converters HPA P: Energie in W Hochspannung an oder aus die Farbe gibt Auskunft über die Funktionsfähigkeit eines HPAs LNA Abbildung 8: Anzeige eines HPAs die Farbe gibt Auskunft über die ergänzende Information Abbildung 9: Anzeige eines LNAs

22 22 / 81 ACU A: Azimut E: Erhebung P: Polarisation die Farbe gibt ergänzende Information Dehydrator, Deicing, SCU Abbildung 10: Anzeige einer ACU zeigen nur ihren Warnungsstatus gemäß der Farbe Control Abbildung 11: Anzeige von Dehydrator, Deicing, SCU Nachdem das System gestartet ist, wird der Bildschirm Spitzenniveau-System- Schirm genannt, da der Maschinenbediener jeder Zeit die Funktionen kontrollieren kann. Der Lokale -PC oder der Entfernte -PC können die Kontrolle übernehmen. Jedes Element im ganzen System ist nur dann betriebsfähig, wenn der Benutzer die Kontrolle über dieses Element bekommen darf. Wenn der momentane Status "No local control" ist (siehe Abb. 12), wird es dem Benutzer nicht erlaubt, die Station zu kontrollieren. Drückt man den Knopf "No local control, fragt jedes Element auf dem Bildschirm den Benutzer, ob er wirklich die Kontrolle übernehmen will. Nach einer Bestätigung geht der Knopf zur "Local control", aber auch nur dann, wenn kein anderer PC im Netz die Kontrolle hat. Abbildung 12: Status "No local control"

23 23 / 81 Wenn alle Einstellungsänderungen der Ausrüstung erledigt sind, soll die Kontrolle veröffentlicht werden (siehe Abb. 13) um die Kontrolle von einem anderen PC im Netz zu erlauben. Abbildung 13: Status "Local control" Popup-Fenster der Subsysteme Der Zugang zu den individuellen Popup-Fenstern wird erreicht, wenn man den Cursor über das spezifische Objekt einstellt und auf die linke Maustaste klickt. Die Popup-Fenster sind Browser-Fenster, die sich durch Javascript zusätzlich zum aktuellen Hauptfenster öffnen und sich über das Hauptfenster legen. Switch-Popup Wenn der Maschinenbediener einen Switch wählt, sendet das M&C System einen Befehl an den Switch. Als Reaktion auf diesen Befehl sendet der Switch seine Position zurück. Das Bildschirm spiegelt sowohl die neue Position vom ihm als auch die übersendeten Pfade wieder. Dieser Vorgang findet jedes Mal statt, wenn der Toggle position -Knopf (siehe Abb. 14) geklickt wird. Dieselbe Änderung wird auf dem Bildschirm in Echtzeit angezeigt, wobei jedes Gerät einen Befehl erhält, dass sein Status im Zusammenhang mit der Systemoperation sich geändert hat. Abbildung 14: Popup für Switch Das Fenster teilt dem Benutzer die folgenden Informationen mit (siehe Tabelle 2): Switch CURRENTLY TOGGLE logischen Namen schalten gegenwärtige Position zum Wählen der Position des Switches, dieser Knopf wird deaktiviert, wenn der

24 24 / 81 Switch im erreichbaren Zugang ist CLOSE REFRESH schließt das Switch-Fenster momentanen Switch neu darstellen Tabelle 2: Switch-Popup-Informationen Die Position vom Switch wird über PLC (Programmable Logic Controller) dem System bekannt gegeben. Jedes Mal wird die Position vom Switch bei einer Änderung, welche die neue Position sofort anzeigt, neu angezeigt. Die drei möglichen Positionen für einen Switch sind in der Tabelle 3 dargestellt: Position 1/2: Switch ist mit dem System verbunden und OK Position 0: Switch ist mit dem System nicht verbunden Position 3: Switch ist mit dem System verbunden, aber nicht richtig bedient UP / DOWN Converter-Popup Tabelle 3: mögliche Switch-Positionen Das Converter-Bedienungsfeld (siehe Abb. 15) ermöglicht dem Benutzer den betrieblichen Hintergrund des ausgewählten Converters zu beobachten und zu verändern. Der Converter kann in der Wartung für die manuelle Operation gesetzt werden.

25 25 / 81 Abbildung 15: Popup eines Converters Die Benutzerschnittstelle für einen Converter stellt in der Tabelle 4 folgende Informationen zur Verfügung: CONTROL MAINTENANCE CLOSE REFRESH Status schaltet den Converter in die lokale Kontrolle Schalter zwischen der Wartung und Online, Einstellen des Converters in die Wartung das Fenster schließen den Converter-Status neu darstellen REMOTE: automatische Operation LOCAL: keine automatische Operation Alarms zeigt die Beschreibung der aktuellen Warnungen Output Frequency Transponder Attenuation tatsächlicher Produktionsstatus tatsächliche Converter-Frequenz gegenwärtiger Converter-Transponder, bereitet die Liste von vorherbestimmten Transponders aus gegenwärtige Converter-Dämpfung Tabelle 4: Einstellungen für Converter-Popup

26 26 / 81 HPA-Popup Das HPA-Popup ermöglicht dem Benutzer, die betrieblichen Informationen des ausgewählten HPA zu manipulieren (siehe Abb. 16). Abbildung 16: HPA-Popup In der Tabelle 5 sind die Informationen für einen HPA-Popup dargestellt: CONTROL MAINTENANCE CLOSE REFRESH Beam ALC Power schaltet den HPA lokal; es erlaubt dem Benutzer, alle HPA-Einstellungen manuell zu ändern Schalter zwischen der Wartung und Online das Fenster schließen den HPA-Status neu darstellen gegenwärtiger HPA-Produktionsstatus Strom HPA-ALC (Automatic Level Control) graphische Anzeige der Energie Tabelle 5: Informationen für einen HPA-Popup

27 27 / 81 3 Programmierkonzepte in Java In diesem Kapitel sollen die verschiedenen Konzepte, die eine Basis für die gesamte Arbeit darstellen, dargelegt werden. Dabei wird auf Entwurfsmuster und die Modellierung mit UML eingegangen. 3.1 Model - View - Controller - Muster ( MVC ) Entwurfsmuster (Design Patterns) wie Observer, Composite und MVC, die insbesondere die Einarbeitung in fremden Programmcode erleichtern, werden als methodisches Wissen bezeichnet. Die Entwurfsmuster Model-View-Controller, kurz MVC -Muster genannt, wurden ursprünglich für die Erstellung der Benutzeroberflächen mit Smalltalk-80 verwendet. Das Ziel dieser Entwurfsmuster ist die Auflösung von interaktiven Applikationen in Teilsysteme mit abgegrenzter Funktionalität und hohem Grad der Wiederverwendung. In der Softwarewelt existiert schon lange die Trennung von Eingabe, Verarbeitung und Ausgabe. Das MVC -Muster überträgt diese Trennung auf GUI (Graphical User Interface)-basierte Systeme. Dabei entspricht der Controller der Eingabe, das Model der Verarbeitung und der View der Ausgabe. Die drei Komponenten werden dabei separat behandelt und implementiert. Dies macht nicht nur die Erstellung von Anwendungen mit mehreren synchronen Ansichten auf dieselben Daten leichter, sondern auch die Behandlung von Fehlern, da solche leichter zu finden sind. Das MVC -Modell garantiert, dass Änderungen im Modell zu den entsprechenden Änderungen in den Views führen. Im Folgenden werden die drei Komponenten Model, View und Controller kurz beschrieben [kau]. Model: repräsentiert die Daten einer Anwendung. Neben der Verwaltung der Daten führt es auch alle Änderungen auf diesen aus. Das Model liefert auf eine Anfrage den Zustand der Daten und reagiert auf Befehle diesen zu ändern. Das Model kennt kein konkretes View, enthält aber normalerweise eine Referenz auf eine View-Basisklasse. Über diese kann das Model die Basisschnittstelle aller Views benutzen. Ein Model kann mit beliebig vielen Views verbunden sein. View: übernimmt die grafische Darstellung der Daten. Es stellt eine mögliche visuelle Abbildung des Models dar. Ein View-Objekt ist dabei immer mit genau einem Model verbunden. Für den Fall, dass sich das Model ändert, erstellt das View-Objekt automatisch eine neue passende Darstellung des Models und stellt diese grafisch dar. Das View-Objekt besitzt immer eine Referenz auf ein konkretes Model. Über diese Referenz können die Methoden des Models direkt aufgerufen werden. Jedes View-Objekt muss die Möglichkeit zum Selbstupdate besitzen, damit es das Model immer korrekt darstellen kann. Normalerweise besitzt ein View-Objekt auch eine Referenz auf den Controller. Über diese sollte das Objekt aber immer nur die Basisschnittstelle des Controllers benutzen, da sonst der Austausch des Controllers nicht mehr so einfach durchzuführen ist. Controller: definiert, wie ein Benutzer mit der Applikation interagieren kann. Er nimmt die Eingaben vom Benutzer entgegen und bildet diese auf die Funktionen

28 28 / 81 des Models oder des Views ab. Damit dies funktionieren kann, muss der Controller natürlich Zugriff sowohl auf das Model als auch auf den Views haben. In der Abbildung 17 regelt das MVC -Entwurfsmuster das Zusammenspiel der drei vorgestellten Komponenten. Es ergeben sich also die folgenden Abhängigkeiten [oec03]: Controller1 Controller2 Controller3 Model * «Interface» ModelListener have implements View1 View2 View3 Abbildung 17: MVC -Entwurfsmuster Zwischen dem Model und dem View existiert ein so genanntes notify -Protokoll. Im Falle einer Veränderung des Zustands des Models benachrichtigt dieses alle verbundenen Views. Damit dies möglich ist, muss ein View natürlich vorher beim Model angemeldet sein. Die Beziehung zwischen dem Model und View wird durch das Observer - Entwurfsmuster verallgemeinert. Dieses Entwurfsmuster beschreibt zwei Objekte. Ein so genanntes Subjekt-Objekt, Model, das eine Liste mit allen verbundenen Observer- Objekten besitzt und ein Observer-Objekt, View, das mit einem Subjekt verbunden wird und immer benachrichtigt wird, wenn sich das Subjekt ändert. Das Model bietet eine Schnittstelle ModelListener, über die sich Observer an- und abmelden können. Auf der anderen Seite muss ein Observer-Objekt über eine Update-Schnittstelle verfügen. Bezogen auf die MVC -Muster stellt das Model ein Subjekt-Objekt dar und ein View- Objekt kann als Observer betrachtet werden. Wie bereits erwähnt, sollte ein View- Objekt so implementiert werden, dass es nicht zu eng mit einem konkreten Controller verbunden wird. Dies hat den Vorteil, dass der Controller zur Laufzeit ausgewechselt werden kann. So könnte zum Beispiel ein View-Objekt dadurch deaktiviert werden, dass man es mit einem Controller verbindet, der Benutzereingaben stets ignoriert.

29 29 / UML-Modellierung Die Modellierung des Konzeptes erfolgt mit der UML (Unified Modeling Language). Die UML ist eine weit verbreitete, objektorientierte grafische Modellierungssprache. Sie hat sich speziell im Bereich des Software Engineering etabliert. Primär wird die UML, als Sprache mit einer definierten Semantik, zum Austausch von Ideen und zum Verständnis von modellierten Modellen verwendet. Durch die unterschiedlichen Diagrammarten wie Klassendiagramme, Sequenzdiagramm usw. erlaubt die UML verschiedene Sichten auf ein Modell. Aus diesem Grund spielt die UML inzwischen eine immer größere Rolle in der Softwareentwicklung, weil sie eine einheitliche Syntax zur Beschreibung von Modellen und somit von Mustern liefert [pul] Klassenstruktur und Klassenhierarchie Das M&C System lässt sich in einem Klassendiagramm nach dem in der Abbildung 17 genannten MVC -Entwurfsmuster darstellen (siehe Abb. 18). Das Model hat eine Referenz auf alle HitecComponents. Die Komponenten bzw. Objekte eines Typs beispielsweise ACU erben alles von der abstrakten Klasse HitecComponent. Jeder Typ hat eine Referenz auf sein eigenes Icon und ein Icon, zum Beispiel ACUIcon, wird von der abstrakten Klasse HitecIcon abgeleitet. Diese beide abstrakten Klassen HitecComponent und HitecIcon betrachtet man als Schnittstellen, da alle wichtigen virtuellen und abstrakten Funktionen, welche die Sub-Klassen benutzen, in diesen Super-Klassen implementiert sind. Wie im Abschnitt 3.1 bereits erläutert, haben alle Controller und Views Referenzen auf das Model, um die notwendige Information zu erhalten. ACUController Model * «Interface» IModelListener SwCotroller ControlController * «abstract» HitecComponent ACUView SwView ACU Sw Control ControlView ACUIcon SwIcon ControlIcon «abstract» HitecIcon have implements extends Abbildung 18: MVC -Klassendiagramm

30 30 / Paket-Struktur Das oben erklärte Entwurfsmuster MVC spiegelt sich auch im Aufbau der Pakete vom M&C System wieder. Ein Paket ist eine Gruppe von thematisch zusammengehörigen Klassen und Schnittstellen. Alle Klassen werden dabei grob nach den drei Komponenten dieses Musters gegliedert. Die Komponente Model lässt sich noch in weitere Unterpakete unterteilen. Eine Auflistung aller Pakete mit einer kurzen Beschreibung der enthaltenen Klassen wird hier vorgenommen: diplomarbeit.model: hier sind sowohl die wichtigen Klassen des Datenmodells, wie zum Beispiel die abstrakten Klassen HitecComponent und HitecIcon, die eine Beschreibung für ein einzelnes Objekt und seine grafische Darstellung liefern, als auch die Unterpakete wie zum Beispiel acu, sw, control usw., die zur Komponente Model gehören, enthalten (siehe Abb. 19). Abbildung 19: diplomarbeit.model -Klassendiagramm

31 31 / 81 diplomarbeit.model.acu: dieses Paket besteht aus einer Klasse ACU.java, worin alle Objekte des Typs ACU erzeugt werden können, einer ACUIcon.java Klasse und einer XML-Datei acu_template.xml, wo alle Eigenschaften mit ihren default-werten für alle Objekte eines Typs gespeichert sind. Die Klasse ACU hat Referenz auf die Klasse ACUIcon (siehe Abb. 20). Das ganze Paket wird als eine Datei acu.jar ohne.java-dateien, nur mit.class-dateien an die Kunden geliefert. Abbildung 20: diplomarbeit.model.acu -Klassendiagramm diplomarbeit.model.control: dieses Paket besteht aus einer Klasse Control.java, einer ControlIcon.java Klasse und einer XML-Datei control_template.xml, wo alle Eigenschaften mit ihren default-werten für alle Objekte eines Typs gespeichert sind. Die Klasse Control hat Referenz auf die Klasse ControlIcon (siehe Abb. 21). Das ganze Paket wird als eine Datei control.jar ohne.java-dateien, nur mit.class-dateien an die Kunden geliefert. Abbildung 21: diplomarbeit.model.control -Klassendiagramm diplomarbeit.model.sw: dieses Paket besteht aus einer Klasse Sw.java, einer SwIcon.java Klasse und einer XML-Datei sw_template.xml, wo alle Eigenschaften mit ihren default-werten für alle Objekte eines Typs gespeichert sind. Die Klasse Sw hat Referenz auf die Klasse SwIcon (siehe Abb. 22). Das ganze Paket wird als eine Datei sw.jar ohne.java-dateien, nur mit.class-dateien an die Kunden geliefert. Abbildung 22: diplomarbeit.model.sw -Klassendiagramm diplomarbeit.model.twta: dieses Paket besteht aus einer Klasse TWTA.java, einer TWTAIcon.java Klasse und einer XML-Datei twta_template.xml, wo alle Eigenschaften mit ihren default-werten für alle Objekte eines Typs gespeichert sind. Die Klasse TWTA hat Referenz auf die Klasse TWTAIcon (siehe Abb. 23). Das ganze Paket wird als eine Datei twta.jar ohne.java-dateien, nur mit.class-dateien an die Kunden geliefert.

32 32 / 81 Abbildung 23: diplomarbeit.model.twta -Klassendiagramm diplomarbeit.model.linec: dieses Paket besteht aus einer Klasse LineC.java, einer LineCIcon.java Klasse und einer XML-Datei linec_template.xml, wo alle Eigenschaften mit ihren default-werten für alle Objekte eines Typs gespeichert sind. Die Klasse LineC hat Referenz auf die Klasse LineCIcon (siehe Abb. 24). Das ganze Paket wird als eine Datei linec.jar ohne.java-dateien, nur mit.class-dateien an die Kunden geliefert. Abbildung 24: diplomarbeit.model.twta -Klassendiagramm diplomarbeit.model.linehorizontal: dieses Paket besteht aus einer Klasse LineHorizontal.java, einer LineIconHorizontal.java Klasse und einer XML-Datei linehorizontal_template.xml, wo alle Eigenschaften mit ihren default-werten für alle Objekte eines Typs gespeichert sind. Die Klasse LineHorizontal hat Referenz auf die Klasse LineIconHorizontal (siehe Abb. 25). Das ganze Paket wird als eine Datei linehorizontal.jar ohne.java-dateien, nur mit.class-dateien an die Kunden geliefert. Abbildung 25: diplomarbeit.model. linehorizontal -Klassendiagramm diplomarbeit.model.linevertical: dieses Paket besteht aus einer Klasse LineVertical.java, einer LineIconVertical.java Klasse und einer XML-Datei linevertical_template.xml, wo alle Eigenschaften mit ihren default-werten für alle Objekte eines Typs gespeichert sind. Die Klasse LineVertical hat Referenz auf die Klasse LineIconVertical (siehe Abb. 26). Das ganze Paket wird als eine Datei linevertical.jar ohne.java-dateien, nur mit.class-dateien an die Kunden geliefert. Abbildung 26: diplomarbeit.model. linevertical -Klassendiagramm

33 33 / 81 diplomarbeit.view: enthält alle notwendigen Klassen für die Darstellung der grafischen Benutzeroberfläche, wie z.b. die Popups für jedes einzelne Objekt ( ACUPopup, TWTAPopup, SwPopup usw.) oder ein AboutPopup, der die Informationen zu dem System (Name des Systems) und zu dem Unternehmen selbst (Adresse, Telefonnummer) liefert. Alle Popups sind von der abstrakten Klasse GeneralPopup abgeleitet (siehe Abb. 27). Abbildung 27: diplomarbeit.view -Klassendiagramm diplomarbeit.controller: dieses Packet enthält die Controller-Klassen ( ACUController, SwController, TWTWController usw.), mit deren Hilfe die grafische Benutzeroberfläche des M&C Systems manipuliert (die Eigenschaftswerte bei den Objekten zur Laufzeit verändern usw.) werden kann. Alle Controller-Klassen implementieren die Schnittstelle ActionListener (siehe Abb. 28). Abbildung 28: diplomarbeit.controller -Klassendiagramm

34 34 / 81 4 Realisierung 4.1 Datenstruktur HashMap Datenstrukturen und Algorithmen sind eng miteinander verbunden und die Wahl der richtigen Datenstruktur ist nicht immer einfach. Der Versuch, die Eigenschaften eines Objekts fest in den Parametern eines Konstruktors zu übergeben, hat in diesem Fall bewiesen, dass das kein richtiges Ergebnis liefern kann. Dadurch können die Kunden die Eigenschaften von den Objekten selbst nicht erweitern oder ändern. Eine weitere und auch korrekte Lösung ist die Datenstruktur HashMap, da der Vorteil dieser Datenstruktur die dynamische Speicherverwaltung ist. Der Benutzer kann sehr schnell die Attribut-Struktur dynamisch ändern, erweitern oder reduzieren. Aus diesem Grund wurde die Datenstruktur HashMap in dieser Arbeit ausgewählt Eigenschaften von HashMap Eine HashMap ist eine sehr schnelle Datenstruktur, die einen Schlüssel mit einem Wert verknüpft. Wegen dieser Arbeitsweise wie ein Gedächtnis wird sie auch assoziativer Speicher genannt. Die Datenstruktur ist vergleichbar mit einem Wörterbuch oder Nachschlagewerk. Man betrachtet beispielsweise ein Telefonbuch. Dort sind Namen (Schlüssel) mit Nummern (Werten) verbunden. Die Frage nach einer Telefonnummer kann die Datenstruktur schnell beantworten, die andere Richtung dauert wesentlich länger, da hier keine Verknüpfung existiert. Sie ist immer nur einseitig. Für wechselseitige Beziehungen ist die Klasse HashMap nicht vorbereitet [gal4]. ein HashMap-Objekt dient zur Verwaltung von Einträgen, jeder Eintrag besteht aus Objekten: dem Schlüsselobjekt und dem Wertobjekt jedes Schlüsselobjekt kann nur einmal in der HashMap enthalten sein jedem Schlüsselobjekt kann nur ein Wertobjekt zugeordnet werden am effektivsten erfolgt die Suche nach einem bestimmten Wert durch Angabe des Schlüssels Die Klasse HashMap eignet sich ideal dazu, viele Elemente unsortiert zu speichern und sie über die Schlüssel schnell wieder zu finden. Für eine geringe Anzahl von Elementen könnte unter Umständen eine Liste besser geeignet sein, da sie etwas weniger Speicherplatz benötigt M&C System-Datenstruktur mit HashMap In der Abbildung 29 wird ein Teilabschnitt der ganzen M&C System-Datenstruktur mittels einer HashMap präsentiert. Wie oben schon erwähnt wurde, sind die Elemente der HashMap Paare aus Schlüssel und zugehörigem Wert. Das Wiederfinden der Werte ist nur über Schlüssel effizient möglich.

35 35 / 81 Wie die Abbildung 29 zeigt, sind in der AllPropertiesMap alle möglichen Eigenschaften bzw. Attribute von Objekten gespeichert. Ihre Schlüssel wie type, positionx, color usw. sind String-Objekte und die Werte sind die Referenzen auf die unteren HashMaps. Sowohl in der TypesMap, die alle existierenden Typen des M&C Systems darstellt, als auch in der ColorMap sind alle Schlüssel und Werte String- Objekte. Im Vergleich zu den TypesMap, und ColorMap, verfügt die OutputsMap als Werte über Referenzen auf die schon erzeugten Objekten. Zum Hinzufügen von Schlüssel-Werte-Paaren dient die Methode put(). Das erste Argument ist der Schlüssel und das zweite Argument der mit dem Schlüssel zu assoziierende Wert. Der Schlüssel und der Wert können null sein. Falls sich beim Einfügen zu diesem Schlüssel schon ein Eintrag in der HashMap befand, so wird der alte Wert überschrieben und der vorherige Wert zum Schlüssel zurückgegeben. Um ein Element wieder auszulesen, verwendet man die Methode get(key). Das Argument identifiziert das zu findende Objekt über den Schlüssel, in dem das Objekt herausgesucht wird, welches den gleichen Hash-Wert besitzt. Wenn das Objekt nicht vorhanden ist, ist die Rückgabe null. Allerdings kann auch null der mit einem Schlüssel assoziierte Wert sein, denn null ist als Wert durchaus erlaubt. AllPropertiesMap TypesMap ColorMap "type" "sw_1" "Switch" "sw_1~value" "0" " " "positionx" "color "..." "acu_1" "sw_2" "control_1" "..." "ACU" "Switch" "Control" "sw_1~min" "sw_1~max" "..." "acu_1~value" "acu_1~min" "0" "1" "..." "1" "0" "outputlist "positiony" "coordinatelist" OutputsMap "sw_1~acu_1" "..." "sw_2~acu_2" "control_1~sw_3" acu_1 acu_2 sw_3 "acu_1~max" "..." "sw_2~value" "sw_2~min" "sw_2~max" "..." "1" "..." "1" "0" "1" "..." Abbildung 29: HashMap-Datenstruktur

36 36 / Datenverwaltung mit XML Die XML (Extensible Markup Language) bietet eine einfache Möglichkeit, jede Art von Daten in einem standardisierten Format zu speichern. In den letzten Jahren hat sich XML zu einem bedeutenden und weit verbreiteten Format zum Datenaustausch und zur Datenspeicherung entwickelt. Als Gründe für diese Entwicklung werden in [fri03] folgendermaßen genannt: mittels XML kann man verschiedenste Daten verwalten XML hat nicht nur eine einfache und klar definierte Struktur; es kann auch leicht gelesen und maschinell verarbeitet werden durch Verwendung von StyleSheets kann die Darstellung von XML-Dokumenten einfach an die persönlichen Wünsche angepasst werden XML bietet diverse Möglichkeiten zur Verifizierung von Dokumenten Aufbau von XML-Dokumenten Ein XML-Dokument ist aus strukturierten Elementen, die hierarchisch geschachtelt sind, aufgebaut. Dazwischen befindet sich der Inhalt, der aus weiteren Elementen (daher hierarchisch) und reinem Text bestehen kann. Beispiele für XML-Elemente können so aussehen: <name>paul</name> oder <person><name>paul</name></person> Die Elemente können Attribute enthalten, die zusätzliche Informationen in einem Element ablegen. Attribute werden verwendet, um detaillierte Informationen über ein Objekt zu transportieren. Ein Attribut besteht aus einem Attributnamen und einem Wert. Der Attributwert steht immer in einfachen oder doppelten Anführungszeichen und wird dem Attributnamen mit dem Gleichheitszeichen zugewiesen. <person sex= male ><name>paul</name></person> In einem XML-Dokument gibt es immer nur ein Wurzelelement, das die gesamten Daten wiederum als Elemente enthält und somit das gesamte Dokument darstellt. Ein XML-Dokument ist also als Baum aufgebaut. Die folgende Abbildung 30 soll diese Baumstruktur verdeutlichen. Aus diesen wenigen, grundlegenden, einfachen Konzepten lassen sich beliebig komplexe Strukturen aufbauen.

37 37 / 81 people person person name name Marta Paul Abbildung 30: XML-Baumstruktur Speichern von Systemdaten in XML XML wird nicht nur zum Datenaustausch verwendet. Es bietet sich in vielen Anwendungen als Format zum Speichern von unterschiedlichsten Daten an. Bei der Entwicklung von Software bietet XML die Möglichkeit, ein eigenes Datenformat zu definieren. Trotzdem ist die Anbindung an andere Systeme und die Weiterverwendung der gespeicherten Daten einfach möglich. Außerdem sind die Daten für den menschlichen Benutzer einfach zu lesen und auch mit einem einfachen Text-Editor zu bearbeiten. Aus diesen Gründen wird XML auch gerne zur Beschreibung von Konfigurationsdateien für verschiedene Applikationen eingesetzt [fri03]. In dieser Arbeit werden vier verschiedenen Arten von XML-Dateien definiert: type_templates.xml, *_template.xml, hitec_components.xml und *_components.xml. Anhand der type_templates.xml -Datei, wo alle Referenzen auf alle möglichen Typen gespeichert sind, kann der Benutzer/Kunde viele Objekte erzeugen. Dadurch kann man die unterschiedlichen kundenspezifischen Typmengen dynamisch definieren (siehe Abb. 31). <?xml version="1.0" encoding="utf-8"?> <type_templates> <type name="acu"> </type> model/acu/acu_template.xml <type name="sw"> model/sw/sw_template.xml

38 38 / 81 </type> <type name="control"> </type> model/control/control_template.xml <type name="line"> </type> model/line/line_template.xml </type_templates> Abbildung 31: Beispiel einer type_templates.xml -Datei Das Aussehen und Verhalten jedes ACU -Objekts kann mittels der acu_template.xml -Datei konfiguriert werden. In dieser Datei werden die Standardattribute mit ihren default-werten für jedes ACU -Objekt festgelegt. Der Benutzer kann diese Standardwerte selbst ändern, löschen oder erweitern (siehe Abb. 32). <?xml version="1.0" encoding="utf-8"?> <acu_template> <component type="acu" name=""> <position group="status" typ="dyn" min="0" max="2" format="x" driver="can_sw">0 </position> <color group="gui" typ="stat" min="0" max="3" format="" driver="gui">1 </color> <positionx group="gui" typ="stat" min="0" max="800" format="" driver="gui">10 </positionx> <positiony group="gui" typ="stat" min="0" max="600" format="" driver="gui">10 </positiony> <width group="gui" typ="stat" min="40" max="80" format="" driver="gui">80 </width> <height group="gui" typ="stat" min="20" max="60" format="" driver="gui">60 </height> </component> </acu_template> Abbildung 32: Beispiel eines acu_template.xml -Dokuments

39 39 / 81 Die Referenzen auf alle existierende *_components.xml -Dateien befinden sich in der hitec_components.xml -Datei. Jede *_components.xml -Datei enthält alle erzeugten Objekte nur eines bestimmten Typs Bearbeiten der XML-Dateien mit JDOM Für XML-basierte Daten gibt es zwei wohldefinierte Verarbeitungsverfahren: DOM (Document Object Model) und SAX (Simple API for XML Parsing). Während DOM das gesamte Dokument in einer internen Struktur einliest und bereitstellt, verfolgt SAX einen ereignisorientierten Ansatz [gal4]. JDOM (Java Document Object Model) ist eine einfache Möglichkeit, XML- Dokumente leicht und effizient mit einer Java -API zu nutzen. Im Gegensatz zu SAX und DOM, die unabhängig von einer Programmiersprache sind, wurde JDOM speziell für Java entwickelt. Während DOM keine Rücksicht auf die Java -Datenstrukturen nimmt, nutzt JDOM konsequent die Collection-API und ermöglicht eine etwas bessere Performance und eine bessere Speichernutzung als bei DOM. Über JDOM lassen sich die XML-formatierten Dateien einlesen, manipulieren und dann wieder schreiben. Mit einfachen Aufrufen lässt sich auch eine interne Datenstruktur der XML-Datei erzeugen. Dadurch kann jederzeit auf alle Elemente der XML-Datei zugegriffen werden. Die Klasse Document kann selbst nicht aus anderen Quellen die Daten entnehmen. Es sind immer die Builder, die Document-Objekte liefern. Es ist möglich, ein JDOM- Dokument sowohl mit Hilfe eines SAXBuilder (siehe Abb. 33) als auch mit einem DOMBuilder zu erzeugen. try { } SAXBuilder builder = new SAXBuilder(); // Erzeugen eines JDOM-Dokuments z. B. anhand der Datei acu_components.xml Document doc = builder.build(typexmlpath); catch (JDOMException e) { } e.printstacktrace(); catch (IOException e) { } e.printstacktrace(); Abbildung 33: Erzeugen eines JDOM-Dokuments mit Hilfe eines SAXBuilder

40 40 / 81 Wenn ein DOM nicht unbedingt benötigt wird, ist es sinnvoll, ein JDOM-Dokument mit dem SAX-Parser zu erzeugen. Dies schont die Ressourcen und ist viel schneller, da keine spezielle Datenstruktur für den JDOM-Baum erzeugt werden muss. Das Ergebnis ist in beiden Fällen ein JDOM-Dokument, das die XML-Datei in einer baumähnlichen Struktur abbildet. Die vorangegangene Beschreibung soll durch die folgende Abbildung noch verdeutlicht werden. XML-Dokument SAXBuilder DOMBuilder JDOM-Dokument DOM-Dokument Abbildung 34: Ablauf vom JDOM 4.3 Erzeugen der Objekte mit Reflection Reflection dient dazu, die Bestandteile von Klassen (Datenelemente, Konstruktoren und Methoden) dynamisch zur Laufzeit zu analysieren und zu benutzen. Es gestattet somit, in einem Java -Programm die Klassen und Interfaces zu benutzen, die zum Zeitpunkt des Kompilierens noch nicht bekannt sind. Die Reflection wird unter anderem in folgenden Fällen eingesetzt [dpj]: das dynamische Laden von Klassen in eine Anwendung und die Erzeugung von zugehörigen Exemplaren. Ein häufiger Anwendungsfall hierfür ist das dynamische Einbinden von Klassen, die eine Art Treiberfunktion haben. Der Name der Treiberklasse wird dabei in einer Konfigurationsdatei angegeben und beim Start der Applikation ausgelesen. Anschließend kann mit einem Konstruktoraufruf über das Reflection-API ein Exemplar der Treiberklasse erzeugt werden. auch bei Java -Beans kommt die Reflection-API zum Einsatz, um die Datenelemente der Bean-Klassen (in diesem Kontext meist Properties genannt) zu ermitteln und deren Werte auszulesen bzw. neu zu setzen. Diese Properties sind zwar spezifisch für alle Bean-Klassen, jedoch folgen die Bean-Properties einem Muster: zum Einstellen einer Property gibt es eine setxxx()-methode und zum Auslesen eine getxxx-methode, wobei XXX für den Namen der Property steht. Anhand dieses Musters kann eine Anwendung die Properties einer Bean- Klasse erkennen, indem sie nach diesen setxxx()- und getxxx-methoden sucht.

41 41 / 81 Allgemeiner kann man sagen, dass der Einsatz des Reflection-API immer dann erforderlich ist, wenn zur Laufzeit die Klassen eingebunden werden sollen, die zum Compile-Zeitpunkt noch nicht bekannt sind oder deren Schnittstellen nicht durch Interfaces oder abstrakte Klassen definiert sind, sondern nur Schnittstellenkonventionen und -mustern folgen. Man möchte alle zum laufenden Programm gehörenden Klassen anzeigen und dazu noch weitere Informationen wie Variablenbelegung, definierte Methoden, Konstruktoren und Informationen über die Vererbungshierarchie. Dafür wird die vordefinierte Klasse Class benötigt. Die Exemplare der Klasse Class sind Objekte, die jeweils eine Java -Klasse repräsentieren. In diesem Punkt unterscheidet sich Java von vielen herkömmlichen Programmiersprachen wie C++, da bei Java Eigenschaften von Klassen vom gerade laufenden Programm mittels der Class-Objekte abgefragt werden können. Neben normalen Klassen werden auch Schnittstellen durch je einen Class-Objekt repräsentiert. Zunächst muss man das zugehörige Class-Objekt für eine bestimmte Klasse in Erfahrung bringen und dies ist über mehrere Wege möglich [gal4]: Ist ein Exemplar der Klasse verfügbar, so wird die getclass()-methode des Objekts aufgerufen, und man erhält das Class-Exemplar der zugehörigen Klasse. Dies ist dann praktisch, wenn der Typ des Objekts nicht genau bekannt ist. Hat man schon ein Class- Objekt, ist aber nicht an ihm, sondern an dessen Vorfahren interessiert, so kann man einfach mit getsuperclass() ein Class-Objekt für die Oberklasse erhalten. Jede Klasse enthält eine Klassenvariable mit Namen.class vom Typ Class, die auf das zugehörige Class-Exemplar verweist. Auch auf primitiven Datentypen ist das Ende.class erlaubt. Eine Klasse kann auch über ihren Namen über die Klassenmethode Class.forName(String) angesprochen werden. Dadurch wird eine Klasse mit dem angegebenen Namen geladen, und wir erhalten das zugehörige Class-Exemplar als Ergebnis. Genau dieser Weg wird in der Abbildung 35 gezeigt: String myclassname = type; Class hitecclass = null; try { } hitecclass = Class.forName("model." + myclassname.tolowercase() + "." + myclassname); Abbildung 35: Ausschnitt aus dem Quellcode Der new-operator erzeugt in Java zur Laufzeit ein Exemplar einer Klasse. Der Compiler muss dazu den Namen der Klasse wissen, so dass er einen passenden Konstruktor-Aufruf erzeugen kann. Kennt man aber erst später zur Laufzeit den Namen der gewünschten Klasse für unser Objekt, so kann man die new-operation nicht verwenden, denn für diesen Spezialfall ist der new-operator nicht gedacht. Um Exemplare bestimmter Klassen dynamisch zu erzeugen, brauchen wir wieder ein passendes Class-Objekt. Nun holen wir uns mit getconstructor() ein Konstruktor- Objekt, das den gewünschten Konstruktor beschreibt. Jedes Konstruktor-Objekt kennt eine newinstance(object[ ])-Methode, die ein neues Exemplar erschafft, indem sie den

42 42 / 81 zugrunde liegenden Konstruktor aufruft. Der Parameter von newinstance() ist ein Feld von Werten, die an den echten Konstruktor gehen. Glücklicherweise kennt Java anonyme Arrays, so dass wenig zu schreiben bleibt. Bei einem parameterlosen Konstruktor kann man einfach newinstance(null) aufrufen (siehe Abb. 36): HitecComponent hiteccomponent = null; try { } hiteccomponent = (HitecComponent) htcomponentclass.newinstance(); hiteccomponent.setid(id); // ein erzeugtes Objekt mit einem eindeutigen Namen in die Liste einfügen this.addcomponent(hiteccomponent); catch (InstantiationException e) { } e.printstacktrace(); Abbildung 36: Ausschnitt aus dem Quellcode

43 43 / 81 5 Benutzung des Programms 5.1 Elemente der Benutzeroberfläche Das AWT (Abstract Window Toolkit) von Java enthält verschiedene Klassen, die über eine gemeinsame Vererbungshierarchie miteinander in Verbindung stehen (siehe Abb. 37). Abbildung 37: Vererbungshierarchie der Klassen Die Klasse Component ist eine abstrakte Klasse, deren Aufgabe darin besteht, ein Programmelement zu repräsentieren, das eine Größe und Position hat und das in der Lage ist, eine Vielzahl von Ereignissen zu senden und auf diese zu reagieren. Sie wird für Swing-Komponenten noch einmal zu JComponent erweitert. Allerdings leitet JComponent nicht direkt von Component ab, sondern erst von Container (und Container dann direkt von Component). Das hat die Konsequenz, dass jedes JComponent automatisch auch ein Container ist [klu]. Container ist ebenfalls eine abstrakte Klasse. Sie ist dafür zuständig, innerhalb einer Komponente andere Komponenten aufzunehmen. Container stellt Methoden zur Verfügung, um Komponenten hinzuzufügen oder sie zu entfernen, und realisiert in Zusammenarbeit mit den LayoutManager-Klassen die Positionierung und Anordnung der Komponenten. Panel ist die einfachste konkrete Klasse mit den Eigenschaften von Component und Container. Sie wird verwendet, um eine Sammlung von Dialogelementen mit einem vorgegebenen Layout zu definieren und wieder verwendbar zu machen. Nützlich ist die Klasse auch beim Layouten von Dialogen, weil sie es ermöglicht, Teildialoge zu schachteln und mit eigenen Layoutmanagern zu versehen.

44 44 / 81 Die für die Entwicklung von Applets wichtige Klasse Applet ist eine direkte Unterklasse von Panel. Sie erweitert zwar die Funktionalität der Klasse Panel um Methoden, die für das Ausführen von Applets von Bedeutung sind, bleibt aber letztlich ein Programmelement, das eine Größe und Position hat, auf Ereignisse reagieren kann und in der Lage ist, weitere Komponenten aufzunehmen. Die Klasse Window abstrahiert ein Top-Level-Window ohne Rahmen, Titelleiste und Menü. Sie ist für Anwendungen geeignet, die ihre Rahmenelemente selbst zeichnen oder die volle Kontrolle über das gesamte Fenster benötigen. Die Klasse Frame repräsentiert ein Top-Level-Window mit Rahmen, Titelleiste und optionalem Menü. Einem Frame kann ein Icon zugeordnet werden, das angezeigt wird, wenn das Fenster minimiert wird. Es kann eingestellt werden, ob das Fenster vom Anwender in der Größe verändert werden kann. Die zweite aus Window abgeleitete Klasse ist Dialog. Sie ist dafür vorgesehen, modale oder nicht-modale Dialoge zu realisieren. Ein modaler Dialog ist ein Fenster, das immer im Vordergrund des Fensters bleibt, von dem es erzeugt wurde, und das alle übrigen Fensteraktivitäten und Ereignisse so lange blockiert, bis es geschlossen wird. Ein nicht-modaler Dialog kann mit anderen Fenstern koexistieren und erlaubt es, im aufrufenden Fenster weiterzuarbeiten. 5.2 Menü-Funktionen Eine der Möglichkeiten eines Programms, mit dem Benutzer zu interagieren, besteht darin, Menüs zur Verfügung zu stellen. Die Aufgabe des Programms ist es dabei, den Aufbau und die visuellen Eigenschaften der Menüs festzulegen. Der Anwender wählt Menüpunkte aus und löst dadurch eine Nachricht aus, auf die das Programm entsprechend reagiert [dpj]. Während die Definition der Menüstruktur in den meisten auf Windows basierten Entwicklungssystemen in eine Ressourcen-Datei ausgelagert wird, erfolgt sie in Java innerhalb des Programms. Diese Vorgehensweise hat nicht nur den Vorteil, portabel zu sein, sondern bietet auch die Möglichkeit, bei der Gestaltung der Menüs die Vorteile der objektorientierten Programmierung zu nutzen. So ist es in Java ohne weiteres möglich, Menüs zu definieren, die allgemeine Eigenschaften an spezialisierte Unterklassen vererben. In größeren Programmen kann dies eine große Hilfe bei der Pflege der Menüstruktur und der Erhaltung der Konsistenz der Menüeinträge sein. In Java wird die Konstruktion von Menüs durch eine Reihe speziell dafür vorgesehener Klassen unterstützt. Die Klasse MenuBar stellt die Menüzeile eines Fensters dar, die Klasse Menu ein einzelnes der darin enthaltenen Menüs, und die Klassen MenuItem bilden die vom Benutzer auswählbaren Einträge innerhalb der Menüs. Die Menüeinträge sind die elementaren Bestandteile eines Menüs (siehe Abb. 38). Sie besitzen einen Text, mit dem sie dem Anwender die dahinter stehende Funktion anzeigen. Wenn der zugehörige Menüpunkt aufgerufen wird, sendet das Programm eine Nachricht an das zugehörige Fenster, die dann zum Aufruf der entsprechenden Methode führt.

45 45 / 81 JMenuBar menubar = new JMenuBar(); JMenu menu = new JMenu("General"); menubar.add(menu); JMenuItem menuitem = new JMenuItem("Save"); menuitem.setname("save"); menuitem.addactionlistener(this); menu.add(menuitem); menuitem = new JMenuItem("Delete"); menuitem.setname("delete"); menuitem.addactionlistener(this); menu.add(menuitem); Abbildung 38: Ausschnitt aus der Quellcode Nach dem Starten des Programms erscheint das Hauptfenster (JFrame) mit einer Menüleiste, einem Hintergrundbild, falls das vom Kunden erwünscht ist, aber noch mit leerem Fensterinhalt (siehe Abb. 39). In dieser Menüleiste sind folgende Menüeinträge: Configuration, General, Runtime, System und Help, die später genauer erläutert werden, definiert. Um die Objekte in dieses Fenster einzufügen, zu löschen oder die Eigenschaften eines einzelnen Objekts anzeigen oder bearbeiten zu können, muss das entsprechende Kommando aus den Menü ausgewählt werden. Abbildung 39: Benutzeroberfläche des M&C Systems

46 46 / 81 Configuration Die Objekte für jeden Typ können mit Hilfe des Configuration -Menüs erzeugt werden (siehe Abb. 40). In dem Menüeintrag New Component sind alle möglichen Typen wie ACU, Sw, Control, LineVertical, LineHorizontal usw., von denen dann die Objekte erzeugt werden können, aufgelistet. Beim Aktivieren eines Listen-Eintrages wird ein Objekt dieses selektierten Typs erzeugt und im Hauptfenster dargestellt (siehe Abb. 48). General Abbildung 40: Configuration -Funktion Damit die Daten beim Schließen des Hauptfensters nicht verloren gehen, kann der Benutzer mit Hilfe des General -Menüs das ganze Bild mit allen von ihm erzeugten Objekten in der XML-Datei speichern (Menüeintrag Save in Abb. 41). Außerdem ist es auch möglich, mit der Funktion Delete den ganzen Inhalt des Fensters wieder zu löschen. Mit einem Mausklick auf die linke Maustaste wird der Menüeintrag Delete aktiviert und alle Objekte, die in diesem Bild zu sehen sind, aus der XML-Datei gelöscht (Menüeintrag Delete in Abb. 41). Abbildung 41: General -Funktion Bevor das ganze Inhalt des Hauptbildes gelöscht wird, wird der Benutzer nochmall gefragt, ob er wirklich alles löschen will. Wenn das der Fall ist, werden alle Objekte in diesem Frame gelöscht (siehe Abb. 42).

47 47 / 81 Abbildung 42: Bestätigungsdialog zum Löschen Runtime Der Menüeintrag Runtime gibt dem Benutzer die Möglichkeit, die Eigenschaften bzw. Attribute eines Objekts zur Laufzeit (Runtime) zu manipulieren (siehe Abb. 43, Menüeintrag Receive ) oder diese abzufragen (siehe Abb. 43, Menüeintrag Send ). Abbildung 43: Runtime -Funktion In einer XML-Datei, die aus verschiedenen PCs über TCP/IP versendet werden kann, sind die Eigenschaften für ein bestimmtes Objekt gespeichert. Mit einem Mausklick auf die linke Maustaste wird die Receive -Funktion aktiviert und in der XML- Datei gespeicherte Werte werden mit Hilfe des JDOM eingelesen und auf das gespeicherte Objekt angewendet, falls ein solches Objekt schon existiert. Der Menüeintrag Send gibt dem Anwender die Möglichkeit, die Eigenschaften eines Objekts, dessen Typ und Name in einer XML-Datei gespeichert sind, zur Laufzeit zu erfragen. Die abgefragten Attribute werden dann mit allen ihren Werten wieder in die XML-Datei geschrieben, aber nur in dem Fall, wenn ein solches Objekt schon erzeugt wurde. Wenn ein solches Objekt noch nicht existiert, erhält der Benutzer eine Fehlermeldung in einem JOptionPane (siehe Abb. 44). JOptionPane ist sehr vielseitig und kann in seiner einfachsten Form dazu verwendet werden, ein Dialogfenster mit einem Titel, Icon und Hinweistext anzuzeigen. Er kann mit Hilfe eines "OK"-Buttons beendet werden. Die Aufrufe von showmessagedialog() sind grundsätzlich modal. Erst wenn der Dialog vom Anwender beendet wurde, wird die nächste Anweisung ausgeführt. Abbildung 44: Fehlermeldung bei Receive oder Send -Funktionen

48 48 / 81 System Über die System -Funktion (siehe Abb. 45) erhält man die Informationen zum System selbst. Wenn man auf den Menüeintrag Name mit der linken Maustaste klickt, bekommt man den Name dieses M&C Systems. Abbildung 45: System -Funktion Und mit dem Aktivieren des Menüeintrages About wird das Unternehmen in einem Popup (siehe Abb. 46) bekannt gegeben. Help Abbildung 46: About -Funktion Der Menüeintrag Doku (siehe Abb. 47) liefert eine Kopie der Dokumentation dieser Diplomarbeit. Abbildung 47: Help -Funktion

49 49 / Funktionalität der Objekte Nachdem die Objekte eines bzw. mehrerer Typen mit Hilfe des Configuration - Menüs erzeugt wurden, können sie jetzt manipuliert werden. Ihre Funktionalität wird mittels eines Popup-Menüs für jedes einzelne Objekt durchgeführt (siehe Abb. 48). Die Kontext- oder Popup-Menüs sind ein wichtiger Bestandteil der grafischen Oberflächen, der in den letzten Jahren verstärkt in die Programme den Einzug gehalten hat. Sie liefern auf rechten Mausklick ein Menü mit den wichtigsten Aktionen, die innerhalb der ausgewählten Komponente zur Verfügung stehen. Auf diese Weise steht eine Vielzahl von Funktionen dort zur Verfügung, wo sie benötigt wird, anstatt umständlich aus dem Hauptmenü des Programms ausgewählt oder per Kommando eingegeben werden zu müssen. Die Kontextmenüs werden durch die Klasse PopupMenu, die aus Menu abgeleitet ist, implementiert. PopupMenu ist genauso zu bedienen wie Menu und wird daher vor allem mittels geeigneter Aufrufe von add() mit Menüeinträgen ausgestattet. Diesen kann ein ActionListener zugeordnet werden, der bei Auslösen des Menüpunkts aufgerufen wird [klu]. Nach einem Klick auf ein beliebig ausgewähltes Objekt mit der rechten Maustaste erscheint das Popup-Menü, das insgesamt aus folgenden drei Menüeinträgen: Properties, PopUp und Delete besteht, auf dem Bildschirm. Gleichzeitig ist es möglich nur ein Popup-Menü für ein Objekt zu öffnen. Abbildung 48: Popup-Menü für ein Objekt Wenn der Benutzer den Properties -Menüeintrag mit dem Mausklick auf die linke Maustaste aktiviert, erscheint ein Properties-Fenster (Abb. 50) mit einer Tabelle, in der alle Eigenschaften eines selektierten Objekts zu sehen sind, und zwei Buttons: Submit und Close auf dem Bildschirm. Bei einem Mausklick auf den PopUp - Menüeintrag kommt ein PopUp -Fenster für jedes Objekt hoch (siehe Abb. 49, Popup

50 50 / 81 für ein twta-objekt). Und mit Hilfe der Delete -Funktion kann ein Objekt gelöscht werden. Abbildung 49: Popup für ein twta-objekt 5.4 Properties-Fenster Ein Properties-Fenster für ein Objekt mit allen seinen Eigenschaften erscheint dann, wenn man entweder den Properties -Menüeintrag in der Popup-Menü (siehe Abb. 48) aktiviert oder mit der linken Maustaste zwei Mal auf das Objekt klickt. In der Titel-Leiste dieses Properties-Fenster ist der Name bzw. Identität eines selektierten Objekts erkennbar und im Mittelpunkt befindet sich eine Tabelle (siehe Abb. 50). Die Tabelle ist eines der in anspruchsvollen Benutzeroberflächen am häufigsten gebrauchten Dialogelemente, also eine mehrzeilige, mehrspaltige Darstellung von Daten. Diese im AWT fehlende Komponente wird in Swing durch die Klasse JTable zur Verfügung gestellt. Mit ihrer Hilfe lassen sich unterschiedlichste Arten von textuellen oder grafischen Daten tabellarisch darstellen und editieren. Das Programm hat dabei weit reichende Möglichkeiten, die Tabelle zu konfigurieren, ihren Inhalt anzupassen und auf Benutzerereignisse zu reagieren [klu]. Der Benutzer kann auf den Inhalt der Tabelle mit entsprechenden Methoden wie getrowcount() und getcolumncount(), welche die aktuelle Zeilen- bzw. Spaltenzahl der Tabelle liefern, zugreifen. Mit getvalueat() kann auf das Element an der Position (row, column) zugegriffen werden. Beide Indizes beginnen bei 0, ein Zugriff außerhalb der Grenzen wird mit einer ArrayIndexOutOfBoundsException quittiert. Mit setvalueat() kann ein Zellenelement sogar verändert werden.

51 51 / 81 Wie alle anderen großen Dialogelemente wird die JTable vor der Übergabe an ihren GUI-Container auch in eine JScrollPane verpackt. Neben dem Effekt, die Daten vertikal oder horizontal scrollen zu können, hat das vor allem zur Folge, dass die Spaltenüberschriften angezeigt werden. Ohne JScrollPane wären diese dagegen nicht sichtbar. Abbildung 50: Properties-Fenster für ein Objekt Nach einem Doppelklick auf eine Zelle kann der Anwender die in diesem Element enthaltenen Daten verändern. Die Klasse JTable besitzt einige Methoden, mit denen das Programm abfragen kann, ob und in welcher Zelle die Tabelle gerade editiert wird. Die Methode isediting() gibt genau dann true zurück, wenn gerade ein Element der Tabelle geändert wird. Mit geteditingrow() und geteditingcolumn() kann das Programm herausfinden, welches Element von der Veränderung betroffen ist. Die in der Abbildung 50 dargestellte Tabelle besteht aus drei Spalten: PropertyName, SubPropertyName und Value. Die erste Spalte PropertyName

52 52 / 81 enthält alle Name der Eigenschaften wie color, positionx, width, outputlist usw.. In der zweiten Spalte SubPropertyName sind alle Attributen-Namen der Eigenschaften wie min, max, driver, value usw. zu sehen. Die Werte in der ersten und zweiten Spalten dürfen nicht editiert werden, der Benutzer erhält diese Meldung in einem JOptionPane (siehe Abb. 51). Abbildung 51: Meldedialog bei der Änderung der ersten oder zweiten Spalte In der dritten Spalte der Tabelle sind sowohl Standardwerte der Eigenschaften als auch der Attribute dargestellt. Der Benutzer kann sehr schnell die dritte Spalte mit den Standardwerten ändern und mit Hilfe des Buttons Submit wieder in die HashMap speichern. Wenn der Benutzer auf den Button Close klickt, wird das Properties- Fenster geschlossen. Nachdem entweder der Button Submit oder der Button Close betätigt wurde, hat man die Möglichkeit, das Properties-Fenster für ein anderes Objekt wieder zu öffnen. Bei der Veränderung von Werten der Eigenschaft output gibt es allerdings eine Besonderheit. Nachdem ein Objekt erzeugt wurde, ist die Anzahl der Nachfolger bei diesem Objekt zwar schon festgelegt, aber die Objekt-Nachfolger noch nicht, die output -Werte bei diesem Objekt sind also gleich null. Erst nachdem man die Null- Werte im Properties-Fenster auf die richtigen Werte gesetzt hat, werden die Nachfolger dieses Objekts bekannt. Wenn ein solcher Objekt-Nachfolger noch nicht existiert, wird ein Benutzer mit einer Fehlermeldung benachrichtigt und der Wert dieses output wird wieder auf null gesetzt (siehe Abb. 52). Abbildung 52: Fehlermeldung bei einer falschen output -Eingabe

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

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

Mehr

PIWIN 1 Übung Blatt 5

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

Mehr

Kapitel 6. Vererbung

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

Mehr

Von der UML nach C++

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

Mehr

Kapitel 6. Vererbung

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

Mehr

Bedienung von BlueJ. Klassenanzeige

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

Mehr

Projekt AGB-10 Fremdprojektanalyse

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

Mehr

Benutzerhandbuch für FaxClient für HylaFAX

Benutzerhandbuch für FaxClient für HylaFAX Benutzerhandbuch für FaxClient für HylaFAX Vielen Dank, daß Sie entschlossen haben, dieses kleine Handbuch zu lesen. Es wird Sie bei der Installation und Benutzung des FaxClients für HylaFAX unterstützen.

Mehr

Zeiterfassung-Konnektor Handbuch

Zeiterfassung-Konnektor Handbuch Zeiterfassung-Konnektor Handbuch Inhalt In diesem Handbuch werden Sie den Konnektor kennen sowie verstehen lernen. Es wird beschrieben wie Sie den Konnektor einstellen und wie das System funktioniert,

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

White Paper. Embedded Treiberframework. Einführung

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

Mehr

5 Projekt Bankverwaltung

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

Mehr

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

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

Mehr

Netzwerk Technologien in LabVIEW

Netzwerk Technologien in LabVIEW Netzwerk Technologien in LabVIEW von Dirk Wieprecht NI Germany Hier sind wir: Agenda Agenda Bedeutung des Ethernet für die Messtechnik Ethernet-basierende Technologien in LabVIEW Low Level- TCP/IP Objekt

Mehr

Remote Communications

Remote Communications HELP.BCFESDEI Release 4.6C SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem Zweck und in welcher

Mehr

Inhalt: Version 1.7.5

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

Mehr

1 Objektorientierte Software-Entwicklung

1 Objektorientierte Software-Entwicklung 1 Objektmodellierung 1 Objektorientierte Software-Entwicklung Prof. Dr. Heide Balzert Fachbereich Informatik Fachhochschule Dortmund Heide Balzert 2000 2 Lernziele Wissen, was unter objektorientierter

Mehr

Benutzerdokumentation Web-Portal

Benutzerdokumentation Web-Portal GRUPP: SWT0822 Benutzerdokumentation Web-Portal Yet Another Reversi Game Martin Gielow, Stephan Mennicke, Daniel Moos, Christine Schröder, Christine Stüve, Christian Sura 05. Mai 2009 Inhalt 1. Einleitung...3

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

Whitepaper 428-01 VCI - Virtual CAN Interface Einbindung in LabWindows/CVI

Whitepaper 428-01 VCI - Virtual CAN Interface Einbindung in LabWindows/CVI Whitepaper 428-01 VCI - Virtual CAN Interface Einbindung in LabWindows/CVI The expert for industrial and automotive communication IXXAT Hauptsitz Geschäftsbereich USA IXXAT Automation GmbH IXXAT Inc. Leibnizstr.

Mehr

Kurzbeschreibung PC-Software für das Gerät URO-2050

Kurzbeschreibung PC-Software für das Gerät URO-2050 Kurzbeschreibung PC-Software für das Gerät URO-2050 1 Einleitung 1.1 Allgemeines Das Programm kann zum Verwalten der durchgeführten Untersuchungen mit dem Gerät URO-2050 benutzt werden. Es funktioniert

Mehr

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de Innovator 11 excellence DDL importieren Data-Definition-Language-Dateien in Datenbankschema importieren HowTo www.mid.de Zweck In Innovator Data excellence können Sie mit dem DDL-Import Ihr physisches

Mehr

Dokumentation zum Projekt Mail-Adapter in SAP PI. 17.01.2011 Sinkwitz, Sven 519707 Theel, Thomas 519696

Dokumentation zum Projekt Mail-Adapter in SAP PI. 17.01.2011 Sinkwitz, Sven 519707 Theel, Thomas 519696 Dokumentation zum Projekt Mail-Adapter in SAP PI 17.01.2011 Sinkwitz, Sven 519707 Theel, Thomas 519696 Inhalt 1. Einleitung... 2 2. Vorgehen... 3 1. Datentyp für die Mail einrichten... 3 2. Message Typen

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

Programmierkurs: Delphi: Einstieg

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

Mehr

S a t S e r v i c e Gesellschaft für Kommunikationssysteme mbh

S a t S e r v i c e Gesellschaft für Kommunikationssysteme mbh sat-nms Universal Network Management and Monitoring & Control System for Multimedia Ground Terminals Enhancement and Hardware Extension SatService GmbH Hardstraße 9 D- 78256 Steißlingen Tel 07738-97003

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

Design Patterns. 5. Juni 2013

Design Patterns. 5. Juni 2013 Design Patterns 5. Juni 2013 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Refactoring und Design Patterns: Welchen Zusammenhang gibt es

Mehr

3 Anwendungsarchitektur und Entwicklungsumgebung

3 Anwendungsarchitektur und Entwicklungsumgebung 21 3 Anwendungsarchitektur und Bei den Entwicklern von Web-basierten Dialogsystemen hat sich im Laufe der Zeit eine Vorgehensweise im Design von Anwendungen entwickelt, dies es ermöglicht, flexible Web-Dialoge

Mehr

Es gibt situationsabhängig verschiedene Varianten zum Speichern der Dokumente. Word bietet im Menü DATEI unterschiedliche Optionen an.

Es gibt situationsabhängig verschiedene Varianten zum Speichern der Dokumente. Word bietet im Menü DATEI unterschiedliche Optionen an. 3. SPEICHERN DATEIEN SPEICHERN Dateien werden in Word Dokumente genannt. Jede Art von Datei, die Sie auf Ihrem Computer neu erstellen, befindet sich zuerst im Arbeitsspeicher des Rechners. Der Arbeitsspeicher

Mehr

Die Hifidelio App Beschreibung

Die Hifidelio App Beschreibung Die Hifidelio App Beschreibung Copyright Hermstedt 2010 Version 1.0 Seite 1 Inhalt 1. Zusammenfassung 2. Die Umgebung für die Benutzung 3. Der erste Start 4. Die Ansicht Remote Control RC 5. Die Ansicht

Mehr

Fingerpulsoximeter. A. Wie führt man einen Echtzeitdatentransfer vom PULOX PO-300 zum Computer durch und speichert diese Messdaten auf dem PC?

Fingerpulsoximeter. A. Wie führt man einen Echtzeitdatentransfer vom PULOX PO-300 zum Computer durch und speichert diese Messdaten auf dem PC? Mini-FAQ v1.5 PO-300 Fingerpulsoximeter A. Wie führt man einen Echtzeitdatentransfer vom PULOX PO-300 zum Computer durch und speichert diese Messdaten auf dem PC? B. Wie nimmt man mit dem PULOX PO-300

Mehr

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design

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

Mehr

PPP-Zugang unter Windows XP zum RZ der FSU

PPP-Zugang unter Windows XP zum RZ der FSU PPP-Zugang unter Windows XP zum RZ der FSU 1. Vorbemerkung Diese Anleitung gilt sowohl für die Home-Version als auch für die Professional-Version von Windows XP. Das Rechenzentrum der FSU Jena stellt seit

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

3.9 Grundelemente einer Benutzeroberfläche

3.9 Grundelemente einer Benutzeroberfläche 92 3 Grundlagen einer ios-anwendung 3.8.4 Target-Actions Einer der häufigsten Anwendungsfälle bei einer Oberfläche ist das Betätigen einer Schaltfläche durch einen Anwender, woraufhin eine bestimmte Aktion

Mehr

ZMI Benutzerhandbuch Sophos. Sophos Virenscanner Benutzerhandbuch

ZMI Benutzerhandbuch Sophos. Sophos Virenscanner Benutzerhandbuch ZMI Benutzerhandbuch Sophos Sophos Virenscanner Benutzerhandbuch Version: 1.0 12.07.2007 Herausgeber Zentrum für Medien und IT ANSCHRIFT: HAUS-/ZUSTELLADRESSE: TELEFON: E-MAIL-ADRESSE: Zentrum für Medien

Mehr

Integration Services - Dienstarchitektur

Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Dieser Artikel solle dabei unterstützen, Integration Services in Microsoft SQL Server be sser zu verstehen und damit die

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

SchlieSSen Sie Ihren Lemur an

SchlieSSen Sie Ihren Lemur an 1 SchlieSSen Sie Ihren Lemur an Der Lemur ist nicht irgendein durchschnittlicher MIDI-Controller. Er spricht 1000 Mal schneller und mit der 4-fachen Auflösung. Also finden Sie auf der Rückseite auch nicht

Mehr

FTP HOWTO. zum Upload von Dateien auf Webserver. Stand: 01.01.2011

FTP HOWTO. zum Upload von Dateien auf Webserver. Stand: 01.01.2011 FTP HOWTO zum Upload von Dateien auf Webserver Stand: 01.01.2011 Copyright 2002 by manitu. Alle Rechte vorbehalten. Alle verwendeten Bezeichnungen dienen lediglich der Kennzeichnung und können z.t. eingetragene

Mehr

TYPO3 Redaktoren-Handbuch

TYPO3 Redaktoren-Handbuch TYPO3 Redaktoren-Handbuch Kontakt & Support: rdv interactive ag Arbonerstrasse 6 9300 Wittenbach Tel. 071 / 577 55 55 www.rdvi.ch Seite 1 von 38 Login http://213.196.148.40/typo3 Username: siehe Liste

Mehr

Anleitung zum Online Banking

Anleitung zum Online Banking Anleitung zum Online Banking Diese Anleitung beschreibt das Vorgehen zur Installation und Konfiguration von Online Banking unter Jack. Um das Online Banking in Jack nutzen zu können, müssen Sie das entsprechende

Mehr

Installation und Benutzung AD.NAV.ZipTools

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

Mehr

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

Software Engineering II

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

Mehr

TimePunch SQL Server Datenbank Setup

TimePunch SQL Server Datenbank Setup TimePunch TimePunch SQL Server Datenbank Setup Benutzerhandbuch 26.11.2013 TimePunch KG, Wormser Str. 37, 68642 Bürstadt Dokumenten Information: Dokumenten-Name Benutzerhandbuch, TimePunch SQL Server Datenbank

Mehr

MGE Datenanbindung in GeoMedia

MGE Datenanbindung in GeoMedia TIPPS & TRICKS MGE Datenanbindung in GeoMedia 10. September 2002 / AHU INTERGRAPH (Schweiz) AG Neumattstrasse 24, CH 8953 Dietikon Tel: 043 322 46 46 Fax: 043 322 46 10 HOTLINE: Telefon: 043 322 46 00

Mehr

INSTALLATION und BENUTZUNG von REAL VNC 3.3.5-7

INSTALLATION und BENUTZUNG von REAL VNC 3.3.5-7 INSTALLATION und BENUTZUNG von REAL VNC 3.3.5-7 Einleitung: Real VNC ist ein Remote Programm das zur Fernwartung von PCs über das Internet verwendet werden kann. It is fully cross-platform das heißt man

Mehr

iid software tools QuickStartGuide iid RFID read write unit 13.56 MHz closed coupling RFID iid interface configuration tool

iid software tools QuickStartGuide iid RFID read write unit 13.56 MHz closed coupling RFID iid interface configuration tool iid software tools QuickStartGuide iid software tools RFID read write unit 13.56 MHz closed coupling RFID iid interface configuration tool microsensys Feb 2014 Einleitung Das iid interface configuration

Mehr

AnSyS.B4C. Anleitung/Dokumentation. für die Installation des Barcode-Hand-Scanners. Honeywell Voyager 1400g. AnSyS GmbH 2015.

AnSyS.B4C. Anleitung/Dokumentation. für die Installation des Barcode-Hand-Scanners. Honeywell Voyager 1400g. AnSyS GmbH 2015. AnSyS.B4C Anleitung/Dokumentation für die Installation des Barcode-Hand-Scanners Honeywell Voyager 1400g (unter Windows) AnSyS GmbH 2015 Seite 1 2015 AnSyS GmbH Stand: 29.09.15 Urheberrecht und Gewährleistung

Mehr

Modellierung einer Android-App. 2. Mai 2013

Modellierung einer Android-App. 2. Mai 2013 Modellierung einer Android-App 2. Mai 2013 Taentzer Software-Praktikum 2013 42 Überblick Modellierung der wesentlichen Aspekte Welche Anwendungsfälle haben wir? Übersicht durch Anwendungsfalldiagramme

Mehr

1 Hochverfügbarkeit. 1.1 Einführung. 1.2 Network Load Balancing (NLB) Quelle: Microsoft. Hochverfügbarkeit

1 Hochverfügbarkeit. 1.1 Einführung. 1.2 Network Load Balancing (NLB) Quelle: Microsoft. Hochverfügbarkeit 1 Hochverfügbarkeit Lernziele: Network Load Balancing (NLB) Failover-Servercluster Verwalten der Failover Cluster Rolle Arbeiten mit virtuellen Maschinen Prüfungsanforderungen von Microsoft: Configure

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

IRF2000, IF1000 Application Note ModbusTCP API

IRF2000, IF1000 Application Note ModbusTCP API Version 2.0 Original-Application Note ads-tec GmbH IRF2000, IF1000 Application Note ModbusTCP API Version 2.0 Stand: 28.10.2014 ads-tec GmbH 2014 IRF2000 IF1000 2 Inhaltsverzeichnis 1 Einführung... 3 2

Mehr

Bedienungsanleitung Modbus-LAN Gateway

Bedienungsanleitung Modbus-LAN Gateway Bedienungsanleitung Modbus-LAN Gateway Bedienungsanleitung Modbus-LAN Gateway Inhalt 1. Starten der Konfigurationsoberfläche des MLG... 3 2. Konfiguration MLG... 4 2.1. Network Settings... 4 2.1.1 Statische

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung 1. Begriffe Objektorientierte Programmierung mit C++ Prozedurale Programmierung Sprachen: C, Pascal, Cobol, Basic,... Objektorientierte Programmierung Sprachen: C++, C#, Java... Methode: - Gesamtproblem

Mehr

Vorbereitung zu Praktikum 3

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

Mehr

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum Analyse der Android Plattform Andre Rein, Johannes Florian Tietje FH-Gieÿen-Friedberg Android Praktikum 28. Oktober 2010 Topics 1 Übersicht Android Plattform Application Framework Activities und Services

Mehr

Installation Anleitung für JTheseus und MS SQL Server 2000

Installation Anleitung für JTheseus und MS SQL Server 2000 Installation Anleitung für JTheseus und MS SQL Server 2000 Inhaltsverzeichnis 1 Installation der Datenbank 3 1.1 Erstellen der Datenbank 3 1.2 Tabellen und Minimal Daten einlesen 4 1.3 Benutzer JTheseus

Mehr

Dokumentation RabattManagerLX Pro. Version 1.0.901.1

Dokumentation RabattManagerLX Pro. Version 1.0.901.1 Dokumentation RabattManagerLX Pro Version 1.0.901.1 Dokumentation RabattManagerLX Pro Version 1.0.901.1 Was ist RabattManagerLX Pro? RabattManagerLX Pro ist ein Programm um individuelle Warengruppen-Rabatte

Mehr

Kurzanleitung. Logstar_FTP. Version 1.1

Kurzanleitung. Logstar_FTP. Version 1.1 Kurzanleitung Logstar_FTP Version 1.1 Februar 2006 UP GmbH Anleitung_Logstar_FTP_1_24.doc Seite 1 von 8 LOGSTAR _FTP Inhaltsverzeichnis Einleitung...3 Registrierung...3 Das Logstar_FTP Hauptmenu...4 Server...4

Mehr

1. Interface. Wireshark (Ehtereal)

1. Interface. Wireshark (Ehtereal) Wireshark (Ehtereal) Das Programm Wireshark Network Protocol Analyzer dient dazu, wie der Name schon sagt, ersichtlich zu machen, welche Datenpakete die Netzwerkkarte empfängt bzw. sendet. In Form von

Mehr

Microsoft Access 2010 Bilder

Microsoft Access 2010 Bilder Microsoft Access 2010 Bilder Hyperlinks... arbeiten ähnlich wie ein Link in einer Webseite. sind ein Verweis auf eine Datei (access2010\material\beispiel\tabledevelop\automat.accdb). können ein Verweis

Mehr

CONTROL-M Configuration Manager for CONTROL-M zos 6.3.xx

CONTROL-M Configuration Manager for CONTROL-M zos 6.3.xx CONTROL-M Configuration Manager for CONTROL-M zos 6.3.xx ATAGE 2009 18. Juni Peter Laur plaur@atics.de 1 Ansprechpartner: ATICS GmbH IT-Beratung Schulungsteam Impressum Oberstr. 48c 64589 Stockstadt am

Mehr

IMBA. Installationsanleitung. SQL Server-Datenbankadapter. Das Instrument für den fähigkeitsgerechten Personaleinsatz

IMBA. Installationsanleitung. SQL Server-Datenbankadapter. Das Instrument für den fähigkeitsgerechten Personaleinsatz Das Instrument für den fähigkeitsgerechten Personaleinsatz IMBA SQL Server-Datenbankadapter Installationsanleitung gefördert durch das Bundesministerium für Gesundheit und Soziale Sicherung Vorbereitung

Mehr

1. Wireless Switching... 2. 1.1 Einleitung... 2. 1.2 Voraussetzungen... 2. 1.3 Konfiguration... 2. 2. Wireless Switch Konfiguration...

1. Wireless Switching... 2. 1.1 Einleitung... 2. 1.2 Voraussetzungen... 2. 1.3 Konfiguration... 2. 2. Wireless Switch Konfiguration... Inhaltsverzeichnis 1. Wireless Switching... 2 1.1 Einleitung... 2 1.2 Voraussetzungen... 2 1.3 Konfiguration... 2 2. Wireless Switch Konfiguration... 3 2.1 Zugriff auf den Switch... 3 2.2 IP Adresse ändern...

Mehr

Kurzanleitung. SpaceController

Kurzanleitung. SpaceController Kurzanleitung SpaceController V ielen Dank, dass Sie sich für den SpaceController entschieden haben. Natürlich haben Sie hinreichende Erfahrung in der Installation von Treibern und Software. Dennoch sollten

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Bedienungsanleitung für PolterPhones (Smartphones ohne Touchscreen) Inhaltsverzeichnis

Bedienungsanleitung für PolterPhones (Smartphones ohne Touchscreen) Inhaltsverzeichnis Bedienungsanleitung für PolterPhones (Smartphones ohne Touchscreen) Inhaltsverzeichnis 1. Allgemeines... 2 1.1 Einschalten... 2 1.2 Polter Programm starten... 2 1.3 Info Anzeige... 2 1.4 Haupt Fenster...

Mehr

Calligra. Eine allgemeine Einführung

Calligra. Eine allgemeine Einführung Eine allgemeine Einführung Raphael Langerhorst Jost Schenck Deutsche Übersetzung: Maren Pakura Deutsche Übersetzung: Marco Wegner Deutsche Übersetzung: Hans-Frieder Hirsch 2 Inhaltsverzeichnis 1 Einführung

Mehr

4 Vererbung, Polymorphie

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

Mehr

Migrationsanleitung von 2.0 auf 2.1

Migrationsanleitung von 2.0 auf 2.1 Die wichtigste Neuerung von 2.0 auf 2.1 aus Sicht der Anwendungs- Migration ist die Verwendung von Maven. Mit Maven holt sich die Anwendung alle notwendigen Bibliotheken in den jeweils angegebenen Versionen

Mehr

Anleitung Gen2VDR Installationsanleitung für REYCOM. Gen2VDR Installationsanleitung für REYCOM

Anleitung Gen2VDR Installationsanleitung für REYCOM. Gen2VDR Installationsanleitung für REYCOM 1 Gen2VDR Installationsanleitung für REYCOM 2 Anleitung Gen2VDR Installationsanleitung für REYCOM Inhaltsverzeichnis 1 Allgemein... 3 1.1 Systemvoraussetzungen... 3 2 Installation... 4 2.1 Download der

Mehr

Zugriff auf Fachbibliotheken von außerhalb der Hochschule Prof. Dr. Stephan Kleuker Version / Datum: 1.1 / 5.3.2015

Zugriff auf Fachbibliotheken von außerhalb der Hochschule Prof. Dr. Stephan Kleuker Version / Datum: 1.1 / 5.3.2015 Thema: Zugriff auf Fachbibliotheken von außerhalb der Hochschule Autoren: Prof. Dr. Stephan Kleuker Version / Datum: 1.1 / 5.3.2015 Die kurze Anleitung zeigt, wie man als Studierender der Hochschule Osnabrück

Mehr

OPC-Server VM OPC. Anleitung. Installation, Konfiguration, Verwendung. Version 1.01

OPC-Server VM OPC. Anleitung. Installation, Konfiguration, Verwendung. Version 1.01 Installation, Konfiguration, Verwendung Version 1.01 Seite 2 von 20 OPC-Server VM OPC Revision Version Erstellt am Versionsnummer Bemerkung 1.00 26.07.2013 Erstellung 1.01 05.11.2013 2.14 - Reiter der

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

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

Mehr

TL-PS110P TL-PS110U TL-PS310U Parallelport-/USB-Printserver

TL-PS110P TL-PS110U TL-PS310U Parallelport-/USB-Printserver TL-PS110P TL-PS110U TL-PS310U Parallelport-/USB-Printserver Rev: 1.2.0 INHALTSVERZEICHNIS 1. IP-Adresse des Printservers einstellen 3 2. Manuelle Erstellung eines TCP/IP-Druckeranschlusses 4 3. TCP/IP-Einstellungen

Mehr

KURZANLEITUNG CLOUD BLOCK STORAGE

KURZANLEITUNG CLOUD BLOCK STORAGE KURZANLEITUNG CLOUD BLOCK STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung......Seite 03 2. Anlegen eines dauerhaften Block Storage...Seite 04 3. Hinzufügen von Block Storage

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

Web 2.0 Software-Architekturen

Web 2.0 Software-Architekturen Web 2.0 Software-Architekturen Servlets als Controller einer MVC Web Architektur Prof. Dr. Nikolaus Wulff HTTP und HTML Das HyperText TransferProtokoll (HTTP) beschreibt eine einfache verbindungslose Kommunikation,

Mehr

Business Intelligence Aufgabenstellung

Business Intelligence Aufgabenstellung Hochschule Darmstadt Business Intelligence (BI) Fachbereich Informatik Praktikum 2 Prof. Dr. C. Wentzel Dipl. Inf. Dipl. Math. Y. Orkunoglu Sebastian Gobst Änderung: 15.06.2012 Datum: 30.05.2012 1. Einführung

Mehr

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

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

Mehr

Android Processes & Services

Android Processes & Services Android Processes & Services Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 4 besprechen (inkl. Repetition)

Mehr

Einbindung eines Buchungs- und Ticketingsystems in eine bestehende Anwendungslandschaft

Einbindung eines Buchungs- und Ticketingsystems in eine bestehende Anwendungslandschaft Einbindung eines Buchungs- und Ticketingsystems in eine bestehende Anwendungslandschaft Harald Lange sd&m Lübecker Str. 1 22087 Hamburg harald.lange@sdm.de Abstract: Mit der Einführung eines Buchungs-

Mehr

Leica icon Series. Installations und Lizenzaktivierungs Handbuch. Version 1.0 Deutsch

Leica icon Series. Installations und Lizenzaktivierungs Handbuch. Version 1.0 Deutsch Leica icon Series Installations und Lizenzaktivierungs Handbuch Version 1.0 Deutsch Inhaltsverzeichnis Inhalt Kapitel Seite 1 icon robot 50 3 1.1 Aktualisieren der Firmware auf dem icon robot 50 3 1.2

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

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Wie fängt man an. Fortgeschrittene Kontakt Verwaltung

Wie fängt man an. Fortgeschrittene Kontakt Verwaltung Wie fängt man an Um alle Vorzüge der iphone TBird Anwendung zu nutzen, sollten nachfolgende Hinweise gelesen werden. Fortgeschrittene Kontakt Verwaltung Mit der TBird iphone Anwendung ist es möglich Kontakte

Mehr

Datenzugriff über VPN

Datenzugriff über VPN Leitfaden Datenzugriff über VPN Einführung Ab der Version 3.0 besteht bei einer Installation von SPG-Verein die Möglichkeit, den Programmund Datenbereich getrennt abzulegen. Dadurch kann u. a. der Datenbereich

Mehr

Einführung in Automation Studio

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

Mehr

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

1. BlueJ installieren (nach dem Buch Java lernen mit BlueJ von David J. Barnes; Michael Kölling) 1. BlueJ installieren... 1 2. BlueJ auf die deutsche Version umstellen... 1 3. BlueJ Extensions... 2 a. Klassenkarte... 2 i. UML Extension... 2 ii. Klassenkarte zum Schulbuch... 3 b. CNU BlueJ Code Formatter...

Mehr

Installationscheckliste Pervasive Server Engine Version 7.94, Stand 16.10.2012

Installationscheckliste Pervasive Server Engine Version 7.94, Stand 16.10.2012 Installationscheckliste Pervasive Server Engine Version 7.94, Stand 16.10.2012 Pervasive Server Engine Checkliste für die Neuinstallation in einem Windows-Netzwerk Bitte prüfen Sie auf unseren Webseiten

Mehr

Abschlussarbeiten 2010 in der Medizininformatik

Abschlussarbeiten 2010 in der Medizininformatik Abschlussarbeiten 2010 in der Medizininformatik Ansprechpartner: Prof. Dr. Eberhard Beck eberhard.beck@fh-brandenburg.de FACHHOCHSCHULE BRANDENBURG FACHBEREICH INFORMATIK UND MEDIEN Konzeption und prototypische

Mehr

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten CORBA-Konzept Ziele Common Object Request Broker Architecture CORBA Plattformunabhängige Kommunikation Transparente Verteilung von Objekten CORBA-Konzept Object Management Group Spezifiziert den CORBA-Standard

Mehr

Installationsanleitung für Haufe Advolux Kanzleisoftware ab Version 2.5 (Linux)

Installationsanleitung für Haufe Advolux Kanzleisoftware ab Version 2.5 (Linux) Installationsanleitung für Haufe Advolux Kanzleisoftware ab Version 2.5 (Linux) Verfasser : Advolux GmbH, AÖ Letze Änderung : 20.04.2012 Version : v2 1 Inhaltsverzeichnis 1. Hardware-Voraussetzungen...

Mehr

Stata I: Analyseorganisation und erste Schritte

Stata I: Analyseorganisation und erste Schritte Stata I: Analyseorganisation und erste Schritte 03. November 2003 Ziel dieser Veranstaltung ist zu lernen: 1. Benutzung der Hilfe-Funktion (help, search) 2. Ein Analyse-File zu erstellen 3. die Arbeit

Mehr

Bogobit Digimux mit Viessmann Multiplex-Signalen und Märklin Central Station 2

Bogobit Digimux mit Viessmann Multiplex-Signalen und Märklin Central Station 2 Bogobit Digimux mit Viessmann Multiplex-Signalen und Märklin Central Station 2 1 Ein neues Signal in der CS2 anlegen Führen Sie die folgenden Schritte aus, um ein neues Signal in der CS2 anzulegen und

Mehr

Client/Server-Systeme

Client/Server-Systeme Fachbereich Informatik Projektgruppe KOSI Kooperative Spiele im Internet Client/Server-Systeme Vortragender Jan-Ole Janssen 26. November 2000 Übersicht Teil 1 Das Client/Server-Konzept Teil 2 Client/Server-Architekturen

Mehr