Events und Streams.

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

der Universität Oldenburg
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
1 Fraktale Julia-Mengen die Mandelbrotmenge komplexe Abbildungen realisiert als JAVA-Applet.
Kapselung , toString , equals , Java API
Java Beans von Raoul Schneider.
Menu Ziel von Nano-World GRS Experimentieren heute Das Konzept der Virtuellen Hardware Software-Lösungen Protokolle.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Objektorientierte Programmierung
Java: Programmierung grafischer Oberflächen
Java: Objektorientierte Programmierung
Java: Programmierung grafischer Oberflächen
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Konstruktoren.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Objektorientierte Programmierung JDK-Klassenbibliothek
Java Server Pages Implementierung eines Web-Service-Clients Pea 13: Maik Opitz, Martin Melle, Philipp Hake.
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
JAVA RMI.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
EDV Swing1 Swing. EDV Swing 2 Swing - AWT AWT passt sein L&F der Umgebung automatisch an. Swing kann sein L&F selbst verändern, auch zur.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
AWT und JFC Abstract Windowing Toolkit
Wir bauen uns eine Webapplikation!
Applets Java für’s Web.
Steuerung externer Komponenten über ein USB-Interface.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Java: Programmierung grafischer Oberflächen
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Internet und SMS Internet und SMS Daniel Rickenbacher Jeremy Deuel.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Netzwerke.
EPROG Tutorium #4 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Javelin Internet-based parallel computing using Java.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Events und Streams

Ein „Virtueller Verstärker“ (fast immer Daten) Stream Stream (fast immer Daten) Event (fast nie Daten)

Main Loop, go home main{ Repeat MyEvent=CheckNextEvent() If(MyEvent=null) {Abarbeiten} Else {HandleEvent(myEvent)} Until(quit)

Klassische Abfragen GetStatus Event Source Das Hauptprogramm fragt zu bestimmten Zeiten den Status aller möglichen EventSources ab. Hauptprogramm

Events und Listeners Event Event Source Die EventSource muss den Listener kennen ! Listener

Beispiel ActionEvent Button ActionListener addActionlistener(ActionListener) MyListener=ActionListener Falls was passiert: MyListener.actionPerformed() ActionListener actionPerformed(ActionEvent)

In unserem Fall FloatEvents BooleanEvents =? ActionEvents StringEvents =? SocketEvents IntegerEvents =? AdjustmentEvents

FloatControl? FloatListener

FloatControl? ansprechendes Design intuitive Kontrollelemente

FloatLED FloatListener FloatPanel EventListener FloatKreis Aufrufende Klasse Event FloatLED FloatListener erstellt Event FloatPanel extends Event EventListener erstellt Event FloatKreis Test erstellt FloatPanel(new...); FL erstellt FK->FC FC sendet ActionPerformed wenn setValue aufgerufen wird FloatListener sendet es zu allen angemeldeten Listenern setValue FloatControl

Events FloatListener Event Event Event FloatPanel Event Aufrufende Klasse Event FloatPanel Event

public interface FloatListener extends EventListener{ package nano.awt; import java.util.*; public interface FloatListener extends EventListener{ public void FloatEventPerformed(double zahl); }

Klasse FloatDesign Definiert Farben der Kontrollelemente wie z.B. Zeiger-und Kreisfarbe, sowie -grösse Über Konstruktoren verschiedene Varianten vordefiniert Über Methoden auf einzelne Einstellungen zugreifbar weiteres Vorgehen und Zukunft der Klasse noch nicht klar, u.a. auch wegen Designern

Vorteile Möglichkeit der individuellen Gestaltung der Kontrollelemente (Farben) nur eine einmalige Definition nötig wenn gewünscht für alle Elemente gültig

Technische Spezifikationen von TCP / IP

Was ist ein „Socket“ ? Engl. „Stecker“, ist aber eher ein Kabel. Kommt von den Inet-Ports. Vollständige Adressierung besteht aus IP-Nummer und Port-Nummer Eine bidirektionale Verbindung zwischen zwei Internet-Ports.

Verbindungsaufbau Einer ist Server (Derjenige der auf die Verbindung gewartet hat) Einer ist Client (Derjenige der die Verbindung Initiiert hat) Handshaking Pakete werden ausgetauscht (vgl. UDP)

Virtuelle Kabel

Socket als Kabel LabView als schlechtes Vorbild Wir nehmen Streams anstelle von Zahlen Jede Steckdose erhält den Befehl plug(DataLine) Sie hat eine Instanzvariable MyDestination

Abstrakte Klasse „DataLine“ ? Zwei Implementierungen: TCP / IP Socket (InetAddr, Port, R/W) Pipe (Pointer auf Pufferbereich) (+) Schnellere Performance Eine einzige Implementierung: (+) Universeller, „The Net is the Computer“

Stecker-Metapher Signal kommt immer aus einer Dose (weiblich) Anzeigegeräte (Oszi, Fluke, etc.) haben nur männliche Stecker Damit ist jeder Port männlich oder weiblich

Signale in „Sockets“ Elektronisches Signal ist eine Funktion R R t U(t) Das Signal soll sich selbst beschreiben. Beschreibung im Ortsraum Langsame Signale, (Tiefpass) Beschreibung im Fourier-Raum Schnelle Signale, (Hochpass) I I

Doppelstecker

Selbstbeschreibendes Signal TCP/IP Päckchen von konstanter Grösse (Derzeit 256Byte) In JAVA: Werte von –128 bis +127 !! Erstes Byte=-128 bedeutet Achtung: Beschreibung Zweites Byte gibt an, wieviele Pakete Beschreibung sind.

Wie beschreibt sich das Signal XML-Text oder was???? Beschreibung soll beliebig offen sein.

Dokumentation und Kooperation mit einem Classpath

JAVADOC Auf Nanoworld2 unter D:\development\jdk1.3\docs\tooldocs\win32\javadoc.html (Muss noch veröffentlicht werden) Pakete müssen einzeln angegeben werden Bilder und gewisse Tags sind möglich.

Struktur unseres Classpath nano.paketname.* Paketname sollte dem von java.lang entsprechen. Bsp. nano.awt.*;

Wer darf in den Classpath ? Fertige Klassen (Das bedeutet: Jede Änderung muss mit einer Versionsänderung und dem zugehörigen Datum verbunden sein) Vollständig dokumentiert in Javadoc. Alle modifiers sind durchdacht. Alle Setter und Getter sind vorhanden.

Experiment Server Controller Datenbanken Client Client

Was für Klassen gibt es schon? Beachte die strikte Trennung von Funktionalität und GUI Steuerung erfolgt über Kommandos GUI generiert Kommandos (vgl. TCL/TK unter UNIX)

Vorhandene Pakete Package nano.awt (Alles was mit GUI zu tun hat) Package nano.net (Alles was mit Netzwerk und Streams zu tun hat) Package nano.compute (Alles was………..weiss auch noch nicht)

Das Paket nano.compute

Parser-Problem Wir brauchen eine Zuordnung String-Methode Realisiert analog awt.event (Event-Methode)

Simulator API AddCommand(String, CommandExecutor) AddInt AddDouble AddString AddBoolean SetBoolean(String, boolean), sb(), etc.

Sprachdefinition Basiswortschatz Definiert in der Klasse nano.compute.Simulator: Set Parameter: name, value Beispiel: command=set, name=speed, value=131.5 Get Parameter: name Stop Parameter: keine Start

Nano.net

EventClient EventServer Local Port Local Port Remote IP,Port EventSocketListener EventClient Local Port Remote IP,Port EventServer Local Port put put EventSocketListener plug StreamServer Local Port StreamClient Local Port Remote IP,Port

MySQL Pool (De- & Multiplexer) EventClient StreamClient EventClient www StreamClient www EventClient www EventClient EventClient www StreamClient www StreamServer www EventClient www StreamClient www EventSocket- Listener

Pool_UI? Eigenarten der Tabellen in Java

Klasse Pool Verwaltung und Bereitstellung von Benutzerdaten, wie: Anzahl der User im Pool Name, IP-Adresse und Portnummer User connected? addUser()

Pool_UI Graphische Benutzeroberfläche der Klasse Pool

Pool_UI Pool TableModel JTable Tabelle Frägt ab setUser erstellt Über setUser werden die Daten in der Tabelle geändert. Tabelle

Tabellen Model - Viewer Konzept

Früher Daten DefaultTableModel JTable

Heute Model Viewer Daten TableModel Einpacken in die methoden von TableModel und dann die ganzen/richtigen/wahren daten JTable übergeben TableModel Model Viewer

Zuständigkeit TableModel: Datenerstellung, -aufbereitung, -berechnung JTable: Darstellung der Daten

Vorteile des Model-Viewer Konzeptes skalierbar Einfachere Handhabung von dynamischen und editierbaren Tabellen Möglichkeit von verschiedenen Viewern Geschwindigkeit

How To

AbstractTableModel public abstract class AbstractTableModel extends Objects implements TableModel stellt default Implementierungen für die meisten Methoden des TableModel zur Verfügung kümmert sich um die Listener und Events

Erstellen einer Tabelle mithilfe des AbstractTableModels Implementation von folgenden Methoden notwendig: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column);

Weitere nützliche Methoden public String getColumnName(int col) public String getColumnCount() / getRowCount public Class getColumnClass(int col) public boolean isCellEditable(int row, int col)

Erstellen einer 10*10 - Tabelle TableModel beispielModel = new AbstractTableModel(){ public int getRowCount() {return 10;} public int getColumnCount() {return 10;} public Object getValueAt(int row, int column) {return new Integer(row*col);} } JTable table = new JTable(beispielModel); JScrollPane scrollpane = new JScrollPane(table);

TableCellRenderer Renderer: Zuständig für die Darstellung der Zellen JTable besitzt Standard-Renderer Möglichkeit der Individuellen Darstellung von Zellen Nachteil: recht grosser Aufwand für Effizienz nötig

Verschieben der Kolonnen

Jede Kolonne eigene ID (default: Name der Kolonne) Vorteile: Verschieben der Kolonnen ohne sich um die Änderung der Reihenfolge kümmern zu müssen -> JTable rechnet intern mit ID und stellt es richtig dar

Zusammenarbeit mit dem SmartSPM Projekt Hardware-Programmierung

Stand der Dinge GUI.DLL HW.DLL Mainframe MIDDLE.DLL COMM.DLL TCP/IP

Measuring with Super-DAQTM (PCI or USB) n-Channel Ultraslow Human Input m-Channel Ultraslow Human Output TerraMemory N-Channel Ultrafast AD 4096 bit, 1024 GHz M-Channel Ultrafast DA 4096 bit, 1024 GHz

Schichtmodell SuperDAQ UI-Layer JAVA - TCL/TK – TCP/IP - HTTP Verarbeitungs- Layer JAVA C Fortran Funktionalitäts- Layer BF1.DLL BF2.DLL BF3.DLL BF4.DLL BF5.DLL Hardware- Layer HW.DLL Hardware (1 Layer) ADA

JAVA - TCL/TK – TCP/IP - HTTP Virtueller SuperDAQ UI-Layer JAVA - TCL/TK – TCP/IP - HTTP Verarbeitungs- Layer JAVA C Fortran Funktionalitäts- Layer BF1.DLL BF2.DLL BF3.DLL BF4.DLL BF5.DLL Virtual SuperDAQ Hardware- Layer HW.DLL HW.DLL HW.DLL DSP Code DSP Code DSP Code Hardware (2 Layers) ADA ADA ADA