SWT 17.6.99 J AVA B EANS und Komposition Oliver Stiemerling Universität Bonn J AVA B EANS –Events –Properties –Reflection Komposition –Alternative Ansätze.

Slides:



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

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
DI Christian Donner cd (at) donners.com
Java Beans von Raoul Schneider.
der Universität Oldenburg
der Universität Oldenburg
Java: Programmierung grafischer Oberflächen
Java: Objektorientierte Programmierung
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Sprache
FH-Hof Interaktion Richard Göbel. FH-Hof Interaktion mit der Klasse Behavior Behavior-Objekte sind Knoten des Szenengraphen. Behavior-Objekte werden durch.
Java: Grundlagen der Objektorientierung
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
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 4 Vererbung Sommersemester 2003 Lars Bernard.
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.
Reflection API ETIS SS04.
Reflection API ETIS SS05.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
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 Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Beanifiing the Browser Beans implementieren Serializable.
Universität Bonn, Seminar Softwaretechnologie WS 03/04, Alexander Höck 1 Seminar Component and Aspect Engineering im WS03/04 FlexiBeans / FreEvolve von.
Universität Bonn, Seminar Softwaretechnologie WS 2003/2004, Frank Reichartz 1 Java Beans A Java Bean is a reusable software component that can be visually.
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
1DVG3 - Eventbehandlung Eventbehandlung. DVG3 - Eventbehandlung 2 Events Events sind externe Ereignisse, die parallel zum normalen Programmablauf auftreten.
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.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
Klassen 02 - Klassen.
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.
Informatikunterricht mit Java
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
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.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
AWT und JFC Abstract Windowing Toolkit
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Grundlagen der Programmierung
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Variablenkonzept Klassisch, in Java Basistyp
Objectives Verstehen was unterDelegate verstanden wird
EPROG Tutorium #5 Philipp Effenberger
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Parallelisierung für Multiprozessor-Maschinen Teil 2.
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Java Programme nur ein bisschen objektorientiert.
Die Programmiersprache Ruby Seminarvortrag von Lia Schulze Dephoff 1.
 Präsentation transkript:

SWT J AVA B EANS und Komposition Oliver Stiemerling Universität Bonn J AVA B EANS –Events –Properties –Reflection Komposition –Alternative Ansätze –Vergleich

Überblick J AVA B EANS Komponentenmodell: –Was ist eine Komponente? –Wie interagieren Komponenten? –Wie werden Komponenten "verdrahtet"? J AVA B EANS : –Komponente = Menge von Java Klassen ( hauptsächlich GUI, aber auch unsichtbare Komponenten ) –Interaktion über Events –Verdrahtung durch Entwicklungswerkzeug

Event Interaktion: Grundlagen Event "Quelle" (source) ruft eine Eventhandling Methode beim Event "Zuhörer" (listener) auf: Es wird keine Resultat zurückgegeben... Instanz Komponente A Instanz Komponente B SWTListener Interface handleSWTEvent(e); e addSWTListener(l); removeSWTListener(l); actionPerformed(e);

Event Interaktion: Verbindungen Multicast: –>1 Eventlistener –keine garantierte Reihenfolge! Fan-in: –Ein Listener hört auf >1 Quellen –Synchronisierung? –synchronized Instanz Komponente A e addSWTListener(l); removeSWTListener(l); Instanz Komponente B SWTListener Interface handleSWTEvent(e);

Event Interaktion: Elemente Event Klasse: SWTEvent Eventlistener Interface: SWTListener Eventsource Klasse: A Eventlistener Klasse: B Instanz Komponente A Instanz Komponente B SWTListener Interface handleSWTEvent(e); e addSWTListener(l); removeSWTListener(l);

Event Klasse: SWTEvent public class SWTEvent extends java.util.EventObject { private int info; // zusätzliche Informationen zum Ereignis public SWTEvent (Object source, int info) { super (source); this.info = info; } public int getInfo () {return info;} }

Eventlistener Interface: SWTListener public interface SWTListener extends java.util.EventListener { public void handleEvent (SWTEvent e); }

Eventsource Klasse: A public class A { Vector listeners = new Vector (); public void synchronized addSWTListener (SWTListener listener) { listeners.addElement (listener); } public void synchronized removeSWTListener (SWTListener listener) { listeners.removeElement (listener); } private void fireSWTEvent () { SWTEvent e = new SWTEvent (this, 9999); int n = listeners.size (); for (int i = 0; i < n; i++) { (SWTListener) listeners.elementAt (i).handleEvent(e); } } } Daran erkennt man eine Event Quelle!

Eventlistener Klasse: B public class B implements SWTListener {... public void handleEvent(SWTEvent e) { doSomething();... } Daran erkennt man einen Event Listener!

Zusammenfassung Events Events werden durch void method calls realisiert multicast und fan-in sind möglich 4 Implementierungselemente: –Event Klasse –EventListener Inferface –Eventsource Klasse (Methodensignaturen) –Eventlistener Klasse (implementiert Interface) "Umverdrahten" zur Laufzeit möglich

Events ++: Adapter Event soll einen bestimmten, nicht antizipierten Methodenaufruf im Listener verursachen => Mehr Flexibilität Instanz Komponente A Instanz Komponente B SWTListener Interface e handleSWTEvent(e); addSWTListener(l); removeSWTListener(l); Adapter machWasBesonderes();

J AVA B EANS : Properties Properties = (veränderbare) Eigenschaften einer Komponente Methodensignatur: void setHintergrundfarbe (Farbe wert); Farbe getHintergrundfarbe(); Drei Arten von Properties: –"silent" –bound: Änderungen erzeugen Events –constraint: Änderungen erzeugen Events und können verhindert werden

J AVA B EANS : Reflection Dynamisches Nachladen einer Klasse: Klasse = ClassLoader.loadClass("Unbekannt", true); Analyse der Methoden der Klasse Methoden[ ] = Klasse.getMethods();... if (Methoden[i].getName.startsWith("add")) { }; Dynamisches Aufrufen von Methoden Methoden[i].invoke(Instanz_von_Klasse,Parameter[ ]);

J AVA B EANS : Benutzungsmodell Entwickler erhält Bean mit allen Klassen & Ressourcen (z.B. bitmaps) als JAR Datei Entwicklungswerkzeug analysiert Bean => Event (Ein- und Ausgänge), Methoden, Properties Komposition: Bean wird instanziiert, Properties werden gesetzt, Instanz wird mit anderen Bean Instanzen "verdrahtet" "Netz" von Beans wird persistent gemacht Design Modus > Runtime Modus

Komposition "Beschreibung eines Systems von Softwarekomponenten" Unterschiedliche Ansätze Gemeinsame Elemente: –Komponenteninstanzen –Komponenteneigenschaften –Komponentenverbindungen A B D C AB D C A Komponenten laufendes System

Kompositionswerkzeuge IBM Visual AgeJ AVA B EANS MS Visual BasicCOM Unix Shell SkriptePipes & Filters Regis (D ARWIN )"Applikationen" Komponentenmodell => Vielzahl von unterschiedlichen Komponentenmodellen => Vielzahl von Kompositionsmethoden

IBM Visual Age for Java Visuelle Komposition Erzeugt reinen Java Code Komposition wird compiliert => System = "normales" Java Programm

IBM Visual Age: erzeugter Code public SWTFrame() { initialize(); } private void initialize() { getButton1().addActionListener(this); } private java.awt.Button getButton1() { if (ivjButton1 == null) { ivjButton1 = new java.awt.Button(); ivjButton1.setName("Button1"); ivjButton1.setBounds(53, 29, 134, 37); ivjButton1.setLabel("Und tschüß"); }; return ivjButton1; public class SWTFrame extends java.awt.Frame private java.awt.Button ivjButton1 = null;

MS Visual Basic Visuelle Komposition + Scripting Skript wird in speziellen P-Code übersetzt Komponenten selber in C++ (compiliert) => System = P-Code + Komponenten + VB Runtime

Unix Shell Skript #!/bin/sh # Test auf unbekannte Schluesselwoerter awk '! /^#/' keywords | tr -c '[A-Z][a-z]' '[\012*]' | sort -u > /tmp/words grep -h '^#Keys' $* | tr -c '[A-Z][a-z]' '[\012*]' | grep -v 'Keys' | sort -u | comm /tmp/words > /tmp/unknown echo "Unknown keywords:" cat /tmp/unknown Komponenteninstanzen Komponenteneigenschaften Komponentenverbindungen => System = Skript-file + Executables © Nierstrasz & Schneider

D ARWIN: Eine Kompositionssprache für verteilte Systeme Komponenten: lokale Applikationen / Prozesse Verbindungen: Methodenaufrufe ("Services") component System { required input daten; provided output daten; subcomponent Instanz1 = 5); subcomponent Instanz2 bind Instanz1.Port1 -- Input bind Instanz1.Port2 -- Instanz2.Port1; bind Instanz2.Port2 -- Output; } System Instanz1 Port1Port2 Port1 Input Output Instanz2 => System = Darwin file + Executables + Runtime Umgebung

Regis Runtime Umgebung D ARWIN Ablauf component System { required input daten; provided output daten; subcomponent Instanz1 = 5); subcomponent Instanz2 bind Instanz1.Port1 -- Input bind Instanz1.Port2 -- Instanz2.Port1; bind Instanz2.Port2 -- Output; } machine1 System Instanz1 von Executable Port1Port2 Port1 Input Output Instanz2 von Executable Executable.exe... Andere.exe

Zusammenfassung IBM Visual Age System = Java Programm (+ Virtual Machine) MS Visual Basic System = P-Code + Komponenten + VB Runtime Unix Shell Skripte System = Skript + Executables (+ Shell) Regis (D ARWIN ) System = D ARWIN file + Executables + Regis Runtime

Zusammenfassung 2: Unterschiede Wie wird komponiert? (Interface: textuell, visuell, gemischt) Anzahl der Sprachen zur Beschreibung des ausgelieferten Systems? (nur Java, Kompositionssprache + Programmiersprache, Programmiersprache1 + Programmiersprache2) Ist das resultierende System verteilt oder lokal? Wann werden Änderungen in der Komposition wirksam? (nach dem Neustart, nach Compilieren+Neustart, sofort)

Dynamische Anpaßbarkeit der Komposition einer Anwendung Integration von Kompositionsumgebung + Laufzeitumgebung

E VOLVE