Programmieren in Java

Größe: px
Ab Seite anzeigen:

Download "Programmieren in Java"

Transkript

1 HOCHSCHULE MUENCHEN FAKULTÄT FÜR ELEKTROTECHNIK UND INFORMATIONSTECHNIK BEREICH DATENTECHNIK V JV TH 02 Programmieren in Java Kapitel 6 6. Applets 6.1. Aufbau und Funktionsweise 6.2. Applet-Tag im HTML-Code 6.3. Java-Applet-API 6.4. Sicherheitsbeschränkungen

2 FG TECHNISCHE INFORMATIK V JV TH 02 Aufbau und Funktionsweise von Java-Applets (1) Prinzip eines Applets Ein Applet ist ein i.a. kleineres Java-Programm, das nicht eigenständig durch eine JVM ausgeführt wird sondern innerhalb eines Java-fähigen Web-Browsers bzw eines Applet-Viewers abläuft. Als Applet-Viewer steht z.b. das im JDK enthaltene Programm appletviewer zur Verfügung. Ein Applet besitzt immer eine graphische Benutzeroberfläche. Das diese Oberfläche bereitstellende Top-Level-Fenster ist aber nicht eigenständig, sondern befindet sich innerhalb des Browser-Fensters. Üblicherweise befindet sich der Applet-Code auf einem Server. Er kann nur aus einer HTML-Seite heraus gestartet werden. Hierfür muß die Start-Klasse des Applets durch ein <APPLET>-Tag in der HTML-Seite referiert werden.. Stößt der Browser (bzw. der Applet-Viewer) bei der Interpretation der HTML-Seite auf ein <APPLET>-Tag, so startet er seine direkt integrierte oder als Plug-In eingebundene eine JVM enthaltene Java-Laufzeit-Umgebung (JRE Java Runtime Environment). Diese lädt die Start-Klasse vom Server, instanziert sie und beginnt die Abarbeitung ihres Codes durch den Aufruf spezieller Methoden. Die Funktionalität eines als Applet realisierten Java-Programms ist nicht auf die Start-Klasse begrenzt. Ausgehend von der Start-Klasse können wie bei einem Java-Applikations-Programm weitere Klassen geladen und instanziert werden. Trotzdem bezieht man den Begriff Applet häufig nur auf die Start-Klasse bzw auf das von ihr im Browser instanzierte Objekt. Die Klassen Applet und JApplet Die Start-Klasse eines Applets muß von der Klasse Applet (Package java.applet) abgeleitet sein. Diese Klasse ist ihrerseits über die Klasse Panel von der Klasse Container abgeleitet. Sie verfügt daher über die allen AWT-Komponenten- und Container-Klassen gemeinsamen Fähigkeiten zum Aufbau graphischer Oberflächen (einschliesslich des Event-Handling-Mechanismus für Benutzereingaben). Die Klasse Applet selbst ergänzt diese durch die besonderen Fähigkeiten und Funktionalitäten, die für Applets benötigt werden. Das von der Browser-JVM instanzierte Objekt der Applet-Start-Klasse bildet einen Container, in den AWT-GUI- Komponenten eingefügt werden können. Defaultmässig besitzt dieser Container ein BorderLayout. Wenn die vom Applet dargebotene Benutzeroberfläche aus Swing-GUI-Komponenten bestehen soll, muß seine Start- Klasse von der Klasse JApplet (Package javax.swing) abgeleitet sein. Diese ist selbst direkt von der Klasse Applet abgeleitet und ergänzt diese um die besonderen Fähigkeiten und Eigenschaften des Swing-Frameworks. Das von der Browser-JVM instanzierte Objekt einer von JApplet abgeleiteten Start-Klasse bildet somit einen Container für Swing-GUI-Komponenten. Dieser besitzt wie ein JFrame-Container eine Content Pane, in die Komponenten einzufügen sind. Defaultmässig besitzt die Content Pane ein BorderLayout. Wesentliche Unterschiede zwischen Applets und Applikationsprogrammen Applet Applikationsprogramm Start-Klasse von Applet bzw JApplet abgeleitet beliebige Klasse, keine main()-methode statische main()-methode Programmstart Laden Start-Klasse in Browser-JVM, Laden Start-Klasse in JVM, Instanzierung, Aufruf spezieller API-Methoden Aufruf von deren main()-methode Benutzerschnittstelle graphisch Konsole oder graphisch Zugriff zum lokalen durch Security-Manager in Browser-JVM Lesen, Schreiben, Ausführen von Dateisystem i.a. verhindert (Lesen, Schreiben, Ausführen) Dateien i.a. zulässig

3 FG TECHNISCHE INFORMATIK V JV TH 02 Aufbau und Funktionsweise von Java-Applets (2) Demonstrationsbeispiel eines sehr einfachen Applets Applet-Code (Datei HelloWorldApplet.java) import java.applet.applet; import java.awt.graphics; public class HelloWorldApplet extends Applet public void paint(graphics g) super.paint(g); g.drawstring("this Applet just says : \"Hello world!\"", 70, 25); Einbettende HTML-Datei (HelloWorldApplet.html) <HTML> <HEAD> <TITLE> A Simple Applet </TITLE> </HEAD> <BODY> <H3> Ein sehr einfaches Applet : </H3> <APPLET CODE="HelloWorldApplet.class" WIDTH=340 HEIGHT=40> </APPLET> </BODY> </HTML> Darstellung des Applets im Browser Darstellung des Applets durch : appletviewer HelloWorldApplet.html

4 BEREICH DATENTECHNIK V JV TH 03 Aufbau und Funktionsweise von Java-Applets (3) Der Lebenszyklus eines Applets Ein Applet durchläuft während seiner Lebensdauer mehrere Zustände : no-arg-konstruktor instanziert init() initialisiert start() gestartet paint() stop() start() angehalten destroy() zerstört Zur Instanzierung eines Applets (genauer : eines Objekts der Applet-Start-Klasse) wird von der JRE des Browsers/ Applet-Viewers der no-arg-konstruktor der Applet-Start-Klasse aufgerufen. Normalerweise wird für diese ein derartiger Konstruktor nicht explizit definiert, stattdessen wird der Default-nor-arg- Konstruktor verwendet. Dieser ruft lediglich den no-arg-konstruktor der Basisklasse (Applet oder JApplet) auf. Applets werden also üblicherweise durch ihren Konstruktor nicht initialisiert. Der Übergang zwischen den verschiedenen Applet-Zuständen wird durch spezielle Memberfunktionen der Klasse Applet, die in der Applet-Start-Klasse gegebenenfalls geeignet überschrieben werden müssen, begleitet. Diese Memberfunktionen werden durch die JRE des Browsers/Applet-Viewers automatisch in verschiedenen Situationen aufgerufen. Nach ihrer Ausführung befindet sich das Applet im jeweils neuen Zustand. Unmittelbar nach der erfolgreichen Instanzierung eines Objekts der Applet-Start-Klasse wird dessen Methode init() aufgerufen. Diese dient zur Initialisierung des Applets und überführt es somit in den Zustand "initialisiert" In ihr werden Anweisungen ausgeführt, die normalerweise in Konstruktoren enthalten sind, also nur einmal während der Lebensdauer eines Applets ausgeführt werden sollen. Typischerweise werden durch diese Methode Datenkomponenten initialisiert, die vom Applet dargestellte graphische Oberfläche aufgebaut sowie sonstige dauernd benötigte Resourcen alloziert. Nach seiner erfolgreichen Initialisierung gelangt das Applet durch Aufruf der Methode start() in den Zustand "gestartet" (aktiv). Diese Methode wird auch immer dann aufgerufen, wenn das im Zustand "angehalten" befindliche Applet erneut aktiviert wird. Dies kann z.b. dann der Fall sein, wenn die HTML-Seite, in die das Applet eingebettet ist, nach dem kurzzeitigen Laden einer anderen Seite erneut angezeigt wird oder das Browser/Applet-Viewer-Fenster nach vorübergehender Ikonifizierung wieder voll dargestellt wird. Grundsätzlich kann ein Applet also während seiner Lebensdauer mehrmals zwischen den Zuständen "gestartet" und angehalten" wechseln. Allerdings verhalten sich viele Browser in derartigen Situation anders : Im ersten Fall vernichten sie das Applet und instanzieren es erneut. Im zweiten Fall verbleibt das Applet auch während der Ikonifizierung im Zustand "gestartet". In der Methode start() sollten alle Aktionen gestartet werden, die zur Ausführung des Applets notwendig sind (z.b. Erzeugung und Start von Animations-Threads, Allokation von nur temporär benötigten Resourcen usw) Die Methode stop() überführt das Applet in den Zustand "angehalten" (inaktiv). Sie wird unmittelbar vor der Zerstörung eines Applets aufgerufen. Ausserdem kann sie immer dann aufgerufen werden, wenn das Applet vorübergehend nicht dargestellt wird (Laden einer anderen HTML-Seite, Ikonifizierung des Browser-Fensters, s. oben). Die in der Methode start() begonnenen Aktionen und vorgenommenen Allokationen sollen in der Methode stop() wieder angehalten bzw freigegeben werden ( Verhinderung unnötigen Resourcenverbrauchs) Die Methode destroy() wird aufgerufen, wenn das Applet mit Sicherheit nicht mehr benötigt wird. Es gelangt in den Zustand "zerstört". Danach wird es endgültig beseitigt (aus dem Browser und dem Speicher entfernt). In dieser Methode sollten die in der init()-methode durchgeführten Allokationen soweit notwendig wieder aufgehoben werden ( Funktionalität eines Destruktors!). Die Standard-Implementierung der vier Lebenszyklus-Methoden (methods for milestones) in der Klasse Applet enthält einen leeren Funktionsrumpf. Bei Bedarf müssen sie in einer Applet-Start-Klasse geeignet überschrieben werden.

5 FG TECHNISCHE INFORMATIK V JV TH 02 Aufbau und Funktionsweise von Java-Applets (4) Die Methode paint() Die Klasse Applet erbt von der Klasse Container (Package java.awt) u.a. die Methode public void paint(graphics g) Diese Methode wird vom JRE des Browsers/Applet-Viewers immer dann aufgerufen, wenn das Applet-Fenster neu gezeichnet werden muß. Dies ist z.b. immer dann der Fall, - wenn das Browser/Applet-Viewer-Fenster und damit das eingebettete Applet-Fenster zum ersten Mal dargestellt wird (Aufruf von paint() nach start()) - wenn das Browser/Applet-Viewer-Fenster wegen einer Größenänderung neu gezeichnet wird - wenn das Applet-Fenster durch andere Fenster überdeckt war und wieder sichtbar wird - wenn im Applet-Code durch den Aufruf von repaint() ein Neuzeichnen veranlasst wird. Die Methode wird häufig in Applet-Start-Klassen überschrieben, um gezielt bestimmte Graphik-Ausgaben(einschliesslich Text) direkt in das Applet-Fenster vorzunehmen. (z.b. g.drawstring("hallo") statt Einfügen einer Label-(bzw JLabel-)Komponente mit dem Text "Hallo" in das Applet-Objekt) Um eine einwandfreie Funktion sicherzustellen sollte die überschreibende paint()-funktion als erstes die von Container geerbte paint()-funktion aufrufen ( erste Anweisung : super.paint(g)) Anmerkungen zum Erstellen / Testen von Applets Während ihrer Entwicklung sollten Applets grundsätzlich mit dem JDK-Programm appletviewer getestet werden. Bei diesem Programm ist sichergestellt, dass die HTML-Seite und damit das auszuführende Applet bei jedem Aufruf neu geladen wird. Damit wird immer die neueste Version des Applets ausgeführt. Browser dagegen speichern den einmal geladenen Code eines Applets im Arbeitsspeicher und besitzen darüberhinaus einen Seiten-Cache. Dadurch wird nach Änderung des Quellcodes eines Applets und seiner Neu-Übersetzung gegebenenfalls nicht die dadurch neu entstandene Version des Applets sondern die im Arbeitsspeicher bzw Cache vorhandene alte Version ausgeführt. Selbst das Neuladen der HTML-Seite aktualisiert nicht das im Arbeitssspeicher vorhandene Applet. Das Programm appletviewer stellt allerdings nur das Applet und nicht die übrigen Elemente der HTML-Seite dar. Vereinigung von Applet und Applikations-Programm Es ist möglich, Java-Programme zu erstellen, die sowohl als Applet als auch als Applikations-Programm gestartet werden können. Um dies zu realisieren, muß die Start-Klasse sowohl von der Klasse Applet abgeleitet sein und gegebenenfalls die Lebenszyklus-Methoden implementieren als auch eine geeignete main()-methode definieren Damit das Applet und das Applikations-Programm die gleiche GUI besitzen, sollte der Aufbau derselben in einer eigenen Memberfunktion implementiert sein, die sowohl von der init()-funktion als auch der main()-funktion (bzw gegebenenfalls auch von einem geeigneten Konstruktor) aufgerufen werden kann.

6 BEREICH DATENTECHNIK V JV TH 01 Aufbau und Funktionsweise von Java-Applets (5-1) Demonstrationsbeispiel zum Lebenszyklus eines Applets Applet-Code (Datei LifeCycleDemo.java) // LifeCycleDemo.java import java.applet.applet; import java.awt.*; import javax.swing.*; public class LifeCycleDemo extends JApplet JLabel info; public LifeCycleDemo() // i.a. nicht ueblich, nur fuer Demo-Zwecke super(); System.out.println("constructing... "); public void init() info = new JLabel("Demo des Applet Lifecycles", SwingConstants.CENTER); info.setbackground(color.yellow); info.setopaque(true); getcontentpane().add(info); System.out.println("initializing... "); public void start() System.out.println("starting... "); public void stop() System.out.println("stopping... "); public void destroy() System.out.println("destroying..."); public void paint(graphics g) super.paint(g); System.out.println("painting..."); //Zeichnen eines Rechtecks um Fensterflaeche des Applets. g.drawrect(0, 0, getsize().width - 1, getsize().height - 1); Einbettende HTML-Datei (LifeCycleDemo.html) <HTML> <HEAD> <TITLE> A Simple Aplet </TITLE> </HEAD> <BODY> <APPLET code="lifecycledemo" width="300" height = "100" > </APPLET> </BODY> </HTML>

7 BEREICH DATENTECHNIK V JV TH 01 Aufbau und Funktionsweise von Java-Applets (5-2) Demonstrationsbeispiel zum Lebenszyklus eines Applets, Forts. Darstellung des Applets durch : appletviewer LifeCycleDemo.html Beispiel zur Konsolenausgabe Ausführung folgender Aktionen - Start des Applets im Appletviewer - Vergrösserung des Applet-Viewer-Fensters in der Breite ( einmaliger Aufruf von paint()) - Vergrösserung des Applet-Viewer-Fensters in der Höhe ( einmaliger Aufruf von paint()) - Ikonifizierung des Applet-Viewer-Fensters - Herstellung der Normalgroesse des Applet-Viewer-Fensters - Verkleinerung des Applet-Viewer-Fensters in der Breite ( zweimaliger Aufruf von paint()) - Schliessen des Applet-Viewer-Fensters E:\Java\fhm\ee\vorl\applets>appletviewer LifeCycleDemo.html constructing... initializing... starting... painting... painting... painting... stopping... starting... painting... painting... painting... stopping... destroying... E:\Java\fhm\ee\vorl\applets>

8 BEREICH DATENTECHNIK V JV TH 01 Aufbau und Funktionsweise von Java-Applets (6-1) Demonstrationsbeispiel zur Vereinigung von Applet und Applikations-Programm Applet-Code (Datei AppletAndAppliDemo.java) // AppletAndAppliDemo.java import java.applet.*; import java.awt.*; import javax.swing.*; public class AppletAndAppliDemo extends JApplet String progtype="application"; JLabel lab; public void init() progtype="applet"; setcontentpane(buildgui()); private Container buildgui() JPanel pan=new JPanel(); lab=new JLabel("gestartet als " + progtype, SwingConstants.CENTER); lab.setbackground(color.yellow); lab.setborder(borderfactory.createemptyborder(10,10,10,10)); lab.setopaque(true); pan.add(lab); return pan; public static void main(string[] args) AppletAndAppliDemo app = new AppletAndAppliDemo(); JFrame frame = new JFrame("AppletAndAppliDemo"); frame.setcontentpane(app.buildgui()); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setsize(330, 150); frame.setvisible(true); Einbettende HTML-Datei (AppletAndAppliDemo.html) <HTML> <HEAD> <TITLE> AppletAndAppliDemo</TITLE> </HEAD> <BODY> <APPLET code="appletandapplidemo" width="330" height = "150" > </APPLET> </BODY> </HTML>

9 BEREICH DATENTECHNIK V JV TH 01 Aufbau und Funktionsweise von Java-Applets (6-2) Demonstrationsbeispiel zur Vereinigung von Applet und Applikations-Programm, Forts. Start als Applet mittels : appletviewer AppletAndAppliDemo.html Start als Applikations-Programm mittels : java AppletAndAppliDemo

10 FG TECHNISCHE INFORMATIK V JV TH 03 HTML-<APPLET>-Tag (1) Minimalform des <APPLET>-Tags Vorbemerkung : In der HTML-Syntax wird nicht zwischen Groß- und Klein-Buchstaben unterscheiden. Das zur Referenzierung eines Applets (genauer : der Applet-Start-Klasse) in einer HTML-Seite benötigte <APPLET>- Tag besitzt Attribute. Diese dienen zur Festlegung bestimmter Eigenschaften des Applets. In seiner Minimalform muß das <APPLET>- Tag den Namen der Applet-Start-Klasse sowie die Größe (Breite und Höhe) des Applet-Fensters festlegen. Damit muß es wenigstens die folgenden drei Attribute definieren : code : Dateiname der Bytecode-Datei der Applet-Start-Klasse. Die Extension.class kann weggelassen werden. Die Angabe eines auch Directory-Angaben enthaltenen Dateipfades ist nicht zulässig. Der Dateiname wird relativ zur Codebase-URL der Applet-Start-Klasse ausgewertet. Ohne explizite Festlegung (Attribut codebase) ist diese Codebase-URL gleich der Directory-URL der HTML-Datei, d.h. Applet-Bytecode-Datei und HTML-Datei müssen sich im gleichen Verzeichnis befinden. width : Breite des Applet-Fensters in Pixel height : Höhe des Applet-Fensters in Pixel Beispiel : <APPLET code = "LifeCycleDemo" width = "300" height = "100" > </APPLET> Allgemeine Form des <APPLET>-Tags Die Werte der Attribute des <APPLET>-Tags werden als Strings interpretiert. Sie können mit oder ohne String-Quotes (doppelte Hochkommata) angegeben werden. Die Minimalform des <APPLET>-Tags kann optional ergänzt werden um weitere Attribute Parameter, die an das Applet übergeben werden alternativen HTML-Code, der von Browsern, die das <APPLET>-Tag nicht verstehen, interpretiert wird Allgemeine Form des <APPLET>-Tags (Die eckigen Klammern [...] kennzeichnen optionale Angaben) : <APPLET [codebase = codebaseurl] code = appletfile [archive = archivfile] [alt = alternatetext] [name = appletinstancename] width = wpixels heigt = hpixels [align = alignment] [vspace = vpixels] [hspace = hpixels] > [<PARAM name = appletparameter1 value = parval1 >] [<PARAM name = appletparameter2 value = parval2 >]... [alternatehtml] </APPLET>

11 BEREICH DATENTECHNIK V JV TH 02 HTML-<APPLET>-Tag (2) Optionale Attribute des <APPLET>-Tags Die folgenden <APPLET>-Tag-Attribute sind optional : codebase : URL des Verzeichnisses, in dem sich die Bytecode-Datei der Applet-Start-Klasse bzw die Java- Archiv-Datei (s. unten) befindet. Die Angabe kann absolut oder relativ zur Directory-URL der HTML-Datei erfolgen Diese Angabe ist notwendig, wenn die Codebase-URL von der Directory-URL der HTML-Datei abweicht, also Applet-Bytecode-Datei und HTML-Datei sich in verschiedenen Verzeichnissen befinden. archive : Dateiname einer Java-Archiv-Datei (Extension.jar), in der die Applet-Start-Klasse sowie weitere von dieser verwendete Klassen zusammengefasst sind. Der Dateiname wird relativ zur Codebase-URL ausgewertet. alt : name : Alternativer Text, der dargestellt wird, wenn der Browser zwar das <APPLET>-Tag versteht, aber keine Java-Applets ausführen kann Name der Applet-Instanz (genauer : Instanz der Applet-Start-Klasse). Dieser Name ermöglicht es, dass sich mehrere Applets auf der gleichen HTML-Seite gegenseitig lokalisieren und miteinander kommunizieren können. align : Ausrichtung des Applets gegenüber dem umgebenden Text (Wirkung wie beim <IMG>-Tag) Zulässige Werte : midddle, top, bottom, left, right, texttop, absmiddle, baseline, absbottom hspace : Horizontaler Abstand (links und rechts) des Applet-Fensters zu den umgebenden Elementen auf der HTML-Seite in Pixel vspace : Vertikaler Abstand (oben und unten) des Applet-Fensters zu den umgebenden Elementen auf der HTML-Seite in Pixel Parameter in <APPLET>-Tags Zwischen den Tag-Begrenzungen <APPLET> und </APPLET> können auch Parameter angegeben werden, die von der HTML-Seite an das Applet (genauer : die Instanz der Applet-Start-Klasse) übergeben werden. Name und Wert eines Parameters sind als Attribut-Werte eines <PARAM>-Tags festzulegen. Sowohl der Name als auch der Wert des Parameters sind jeweils als String anzugeben : <PARAM name = appletparameter value = parval > Es können beliebig viele Parameter angegeben werden. In der Klasse Applet existieren Memberfunktionen, mit denen Applets zu diesen Parametern zugreifen können. Alternativer HTML-Code alternatehtml Steht für alternativen HTML-Code, der für Browser, die das <APPLET>-Tag nicht verstehen, vorgesehen ist. Er ist zwischen den Tag-Begrenzungen <APPLET> und </APPLET> anzugeben. Typischerweise kann hier alternativ auszugebender Text oder ein Link zu einer alternativ anzuzeigenden Seite angegeben werden. Von Browsern, die das <APPLET>-Tag verstehen, wird dieser Code ignoriert.

12 FACHHOCHSCHULE MUENCHEN FAKULTÄT ELEKTROTECHNIK UND INFORMATIONSTECHNIK FG TECHNISCHE INFORMATIK V JV TH 03 Allgemeines Java-Applet-API (1) Das Java-Applet-API wird im wesentlichen durch die Klasse Applet und das Interface AppletContext implementiert (beide sind im Package java.applet enthalten). Auf der Basis der engen Beziehung, die zwischen Applets und den sie ausführenden Web-Browsern besteht, stellen sie die folgenden Applet-Fähigkeiten zur Verfügung : Annahme verschiedener Lebenszyklus-Zustände ("milestones") Zugriff zu im <APPLET>-Tag enthaltenen Parametern Einbinden von Graphiken, die in Dateien abgelegt sind Abspielen von Audio- (Sound-)Dateien Ausgabe von Informationen in der Statuszeile des Browsers Darstellung eines neuen HTML-Dokuments im Browser Kommunikation mit anderen Applets auf derselben HTML-Seite Das Interface AppletContext Das Interface AppletContext stellt dem Applet einen Zugang zu seiner Umgebung (der das Applet enthaltenen HTML-Seite und den anderen Applets auf dieser Seite) zur Verfügung. Es wird durch die JRE des Browsers/Applet- Viewers implementiert. Mittels der Methode getappletcontext() kann ein Applet sein AppletContext-"Objekt" ermitteln. Über dieses kann das Applet mit seiner Umgebung kommunizieren. Methoden des Interfaces (Auszug) public Image getimage(url url) Erzeugung eines Image-Objekts, das die durch die absolute URL url referierte Bild-Datei repräsentiert public AudioClip getaudioclip(url url) Erzeugung eines AudioClip-Objekts, das die durch die absolute URL url referierte Audio-Datei repräsentiert public void showstatus(string msg) public void showdocument(url url) public void showdocument(url url, String tgt) public Applet getapplet(string name) Ausgabe des Strings msg in die Statuszeile des Browsers Ersatz der aktuell dargestellten HTML-Seite durch den Inhalt der durch die absolute URL url referierten HTML-Datei (darf von einem Applet-Viewer ignoriert werden) Darstellung des Inhalts der durch die absolute URL url rereferierten HTML-Datei in dem durch tgt bezeichneten Browser-Frame (darf von einem Browser / Applet-Viewer ignoriert werden) Ermittlung der Instanz des Applets mit dem Namen name Dabei ist name der Wert des name-attributs im <APPLET>-Tag public Enumeration<Applet> getapplets() Ermittlung aller Applet-Instanzen in der aktuellen HTML- Seite, einschliesslich des Applets, das diese Methode für seinen AppletContext aufruft Für einige dieser Methoden stehen gleichnamige Methoden in der Klasse Applet zur Verfügung, die jeweils mittels getappletcontext() das zugehörige AppletContext-"Objekt" ermitteln und dann für dieses die entsprechende AppletContext-Methode aufrufen. In einem derartigen Fall kann der Applet-Programmierer also auf den expliziten Aufruf von getappletcontext() verzichten und direkt die jeweilige Applet-Methode aufrufen

13 FACHHOCHSCHULE MUENCHEN FAKULTÄT ELEKTROTECHNIK UND INFORMATIONSTECHNIK FG TECHNISCHE INFORMATIK V JV TH 03 Java-Applet-API (2) Memberfunktionen der Klasse Applet (auszugsweiser Überblick) Lebenszyklus-Methoden : Aufruf durch JRE des Browsers, Implementierung in der Klasse Applet tut nichts, Bei Bedarf müssen sie in abgeleiteten Klassen geeignet überschrieben werden public void init() Aufruf beim erstmaligen Laden des Applets, dient zur Initialisierung des Applets public void start() Aufruf beim (Wieder-)Beginn der Applet-Abarbeitung public void stop() Aufruf beim (vorübergehenden) Anhalten der Applet-Abarbeitung public void destroy() Aufruf, wenn das Applet zerstört wird, dient zur Freigabe allozierter Resourcen einige weitere Methoden : public String getappletinfo() Rückgabe von Informationen über das Applet Die Implementierung in Applet liefert null. Die Methode sollte in abgeleiteten Klassen geeignet überschrieben werden (Autor, Version, Copyright) public AppletContext getappletcontext() Ermittlung des AppletContext-"Objekts" public URL getcodebase() public URL getdocumentbase() public String[][] getparameterinfo() Ermittlung der URL des Directories, das die Datei mit dem Applet-Code enthält Ermittlung der URL der HTML-Datei, in die das Applet eingebettet ist. Rückgabe von Informationen über die Parameter, die das Applet "verstehen" kann Die Implementierung in Applet liefert null. Die Methode sollte in abgeleiteten Klassen geeignet überschrieben werden (s. Java-API-Dokumentation) public String getparameter(string name) Ermittlung des Werts des Parameters bzw <APPLET>-Tag- Attributs mit dem Namen name public Image getimage(url url) public Image getimage(url base, String rel) Rückgabe eines Image-Objekts, das die durch die absolute URL url referierte Bild-Datei repräsentiert Rückgabe eines Image-Objekts, das die Bild-Datei repräsentiert, die durch die absolute Basis-URL base und den hierzu relativen Pfad rel referiert wird public AudioClip getaudioclip(url url) Rückgabe eines AudioClip-Objekts, das die durch die absolute URL url referierte Audio-Datei repräsentiert public AudioClip getaudioclip(url base, Rückgabe eines AudioClip-Objekts, das die Audio-Datei String rel) repräsentiert, die durch die absolute Basis-URL base und den hierzu relativen Pfad rel referiert wird public void play(url url) Abspielen der durch url referierten Audio-Datei public void play(url base, String rel) Abspielen der durch die Basis-URL url und den hierzu relativen Pfad rel referierten Audio-Datei public void showstatus(string msg) Ausgabe des Strings msg in die Statuszeile des Browsers public static final AudioClip newaudioclip(url url) (ermöglicht Sound in Applikations-Progr.) Rückgabe eines AudioClip-Objekts, das die durch die absolute URL url referierte Audio-Datei repräsentiert

14 BEREICH DATENTECHNIK V JV TH 01 Zugriff zu Applet- Parametern Java-Applet-API (3) Von der HTML-Seite, in die ein Applet eingebettet ist, lassen sich Parameter an das Applet übergeben, die analog zu Kommandozeilen-Parametern von Applikations-Programmen die Konfigurierung und Steuerung der Arbeitsweise des Applets ermöglichen ( Applet-Parameter). Applet-Parameter sind im <APPLET>-Tag mit ihrem Namen und Wert anzugeben : <PARAM name = appletparameter value = parval > Sowohl der Name (name) als auch der Wert (value) werden unabhängig davon, ob sie in doppelte Hochkommata gesetzt werden oder nicht als Strings interpretiert Dabei werden beim Namen Groß- und Klein-Buchstaben als gleich betrachtet (case-insensitive), während der Wert dagegen case-sensitive ist. Werden durch die Strings Werte anderer Datentypen dargestellt (z.b. numerische Werte), müssen sie vor ihrer Verwendung erst entsprechend konvertiert werden. Innerhalb des Applet-Codes kann (typischerweise in der init()-methode) der Wert eines durch seinen Namen name spezifizierten Parameters ermittelt werden mittels der Methode public String getparameter(string name) Für einen im <APPLET>-Tag nicht gesetzten Parameter liefert die Methode den Wert null. Mit dieser Methode lassen sich auch die Werte der <APPLET>-Tag-Attribute ermitteln (name == Attribut-Name) Beispiele typischer Kandidaten für Applet-Parameter sind - Name und Ort von zu verwendenden Resource-Dateien (z.b. Bild- oder Ton-Dateien) - Werte, die die Erscheinung des Applets beeinflussen (darzustellender Text, Schrift-Stil und -Größe, Anzahl der Bildwechsel pro sec bei annimierten Applets usw) - Größe darzustellender Fenster usw Defaultwerte für Applet-Parameter Für alle von einem Applet verwendeten Parameter sollten im Applet-Code sinnvolle Defaultwerte vorgesehen werden. Damit kann eine einwandfreie Funktion des Applets auch dann sichergestellt werden, wenn bestimmte Parameter nicht durch das <APPLET>-Tag bereitgestellt werden. Beispiel :... <APPLET code="appletapidemo1" width="250" height = "225" >... <PARAM name = "SoundPath" value = "sounds/bgsound.mid" >... </APPLET>... public class AppletAPIDemo1 extends JApplet //... static final String DEF_SOUNDPATH = "sounds/bark.au"; //... public void init() String relsoundpath=getparameter("soundpath"); if (relsoundpath==null) relsoundpath=def_soundpath; //... //...

15 FG TECHNISCHE INFORMATIK V JV TH 03 Zugriff zu Resource-Dateien Java-Applet-API (4) Mit einigen Applet-API-Funktionen kann zu Resource-Dateien (i.a. Bild- und Audio-Dateien) zugegriffen werden. Die entsprechenden Methoden benötigen i.a. ein Objekt der Klasse URL als Parameter. Objekte der Klasse URL (Package java.net) repräsentieren in Java die als Uniform Resource Locator (URL) bezeichnete spezielle Darstellung von Resourcen-Adressen im Internet. Eine URL setzt sich im allgemeinen aus mehreren Komponenten zusammen, im wesentlichen aus : - Protokoll - Rechneradresse - Port-Nummer - Dateipfad (auf dem Rechner) Einige der Komponenten können gegebenenfalls auch fehlen. Sie werden dann durch Default-Werte ersetzt (z.b. Default-Port-Nr des jeweiligen Protokolls). Eine URL kann auch als relative URL angegeben werden. Sie dient dann zur Spezifikation einer Resource relativ zu einer anderen URL. Meist handelt es sich hierbei um einen relativen Dateipfad. Derartige relative URLs werden z.b. häufig innerhalb von HTML-Seiten verwendet. Sie beziehen sich dann auf die Directory-URL der HTML-Seite. URLs werden üblicherweise als Strings angegeben, z.b. Erzeugung eines URL-Objektes aus einem URL-String : Hierzu dient der folgende Konstruktor der Klasse URL : public URL(String spec) throws MalformedURLException Wenn der als Parameter übergebene String spec formal keine URL bezeichnen kann (z.b. unbekanntes Protokoll), wird eine MalformedURLException geworfen. Es existieren noch weitere Konstruktoren mit mehr als einem Parameter. Einige dieser Konstruktoren erlauben es, einzelne Komponenten einer URL getrennt durch Strings anzugeben. Applets dürfen i.a. nur zu Dateien zugreifen, die sich auf demselben Rechner befinden, von dem sie selbst (d.h. der Byte-Code ihrer Start-Klasse) geladen worden sind. Sinnvollerweise werden derartige Dateien durch eine relative Pfadangabe referiert, die sich entweder auf die Code- Base-URL (Directory-URL der Applet-Start-Klasse) oder auf die Directory-URL der HTML-Seite, in der das Applet eingebettet ist, bezieht. Die Klasse Applet stellt Memberfunktionen sowohl zum relativen Dateizugriff als auch zur Ermittlung der i.a. hierfür benötigen Basis-URLs zur Verfügung. Einbinden von Graphiken Mittels den Applet-Memberfunktionen public Image getimage(url url) public Image getimage(url base, String rel) wird ein Objekt der Klasse Image aus dem Inhalt der Bild-Datei erzeugt, die durch die absolute URL url bzw die Basis-URL base und den relativen Pfad rel referiert wird. Mittels des Konstruktors public ImageIcon(Image img) lässt sich aus dem Image-Objekt img ein Objekt der Klasse ImageIcon erzeugen. Die Klasse ImageIcon implementiert das Interface Icon. Die durch Objekte dieser Klasse repräsentierten Bilder können in diversen Swing-Komponten (z.b. JButton, JLabel, JCheckBox) dargestellt werden (Übergabe durch entsprechende Konstruktoren bzw Memberfunktionen. Beispiel : Image img = getimage(getcodebase(), relpictpath); JButton pictbut=new JButton(new ImageIcon(img)); Alternativ kann ein Image-Objekt auch innerhalb der Methode public void paint(graphics g) mittels der Graphics-Memberfunktion public boolean drawimage(image img,...) dargestellt werden.

16 BEREICH DATENTECHNIK V JV TH 01 Abspielen von Audio-Dateien Java-Applet-API (5) Java-Applets können Audio-Dateien abspielen. Ab dem JDK 1.2 steht diese Möglichkeit auch für Applikations-Programme zur Verfügung. Zum einmaligen Abspielen einer Audio-Datei dienen die Applet-Memberfunktionen public void play(url url) public void play(url base, String rel) Die abzuspielende Audio-Datei wird entweder durch eine absolute URL url oder eine Basis-URL base und einen relativen Pfad rel referiert. Sie wird bei jedem Aufruf von play() erneut geladen. Zum beliebig mehrmaligen und auch ständig wiederholten Abspielen ohne erneutes Laden der Audio-Datei ist es sinnvoll, zunächst ein die Audio-Datei repräsentierendes AudioClip-Objekt zu erzeugen. Dies ermöglichen die Applet-Memberfunktionen public AudioClip getaudioclip(url url) public AudioClip getaudioclip (URL base, String rel) Auch hier wird die abzuspielende Audio-Datei entweder durch eine absolute URL url oder eine Basis-URL base und einen relativen Pfad rel referiert. Das Interface AudioClip stellt drei Methoden zur Verfügung : public void play() public void loop() public void stop() einmaliges Abspielen der durch das AudioClip-Objekt repräsentierten Audio-Datei ständiges wiederholtes Abspielen der repräsentierten Audio-Datei Beenden des Abspielens der repräsentierten Audio-Datei Mit ihnen lässt sich das Abspielen der repräsentierten Audio-Datei ohne erneutes Laden beliebig steuern. Dies kann zum Beispiel in der Methode actionperformed() eines ActionListener-Objekts als Reaktion auf das Betätigen eines Schaltknopfes (JButton) erfolgen. Beispiel : public class AppletAPIDemo1 extends JApplet //... AudioClip sound; public void init() //... sound=getaudioclip(getcodebase(), relsoundpath); //... class ButtonListener implements ActionListener public void actionperformed(actionevent e) Object src=e.getsource(); if (src==startbut) sound.loop(); else if (src==stopbut) sound.stop();

17 BEREICH DATENTECHNIK V JV TH 01 Java-Applet-API (6-1) Demonstrationsbeispiel 1 zum Java-Applet-API Applet-Code (Datei AppletAPIDemo1.java), 1.Teil import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class AppletAPIDemo1 extends JApplet static final String DEF_LABTEXT = "Demo"; static final String DEF_PICTPATH = "images/dukewavered.gif"; static final String DEF_SOUNDPATH = "sounds/bark.au"; static final int DEF_RAND = 10; Container c; JLabel lab; JButton pictbut; JButton startbut; JButton stopbut; JPanel playpan; AudioClip sound; public void init() String relsoundpath=getparameter("soundpath"); if (relsoundpath==null) relsoundpath=def_soundpath; sound=getaudioclip(getcodebase(), relsoundpath); String labtext=getparameter("labeltext"); if (labtext==null) labtext=def_labtext; int rand; try rand = Integer.parseInt(getParameter("RandBreite")); catch (NumberFormatException e) rand=def_rand; lab=new JLabel(labText, SwingConstants.CENTER); lab.setalignmentx(component.center_alignment); lab.setbackground(color.yellow); lab.setborder(borderfactory.createemptyborder(rand, rand, rand, rand)); lab.setopaque(true); String relpictpath=getparameter("pictpath"); if (relpictpath==null) relpictpath=def_pictpath; Image img = getimage(getcodebase(), relpictpath); pictbut=new JButton(new ImageIcon(img)); pictbut.setalignmentx(component.center_alignment); pictbut.setborder(borderfactory.createcompoundborder( BorderFactory.createEmptyBorder(5, 0, 10, 0), pictbut.getborder())); startbut = new JButton("start play"); startbut.setbackground(color.green); stopbut = new JButton("stop play"); stopbut.setbackground(color.red); playpan = new JPanel(); playpan.add(startbut); playpan.add(stopbut); ActionListener butlis = new ButtonListener(); startbut.addactionlistener(butlis); stopbut.addactionlistener(butlis);

18 BEREICH DATENTECHNIK V JV TH 01 Java-Applet-API (6-2) Demonstrationsbeispiel 1 zum Java-Applet-API, Forts. Applet-Code (Datei AppletAPIDemo1.java), 2.Teil c=getcontentpane(); c.setlayout(new BoxLayout(c, BoxLayout.Y_AXIS)); c.add(lab); c.add(pictbut); c.add(playpan); // Ende init() class ButtonListener implements ActionListener public void actionperformed(actionevent e) Object src=e.getsource(); if (src==startbut) sound.loop(); else if (src==stopbut) sound.stop(); Einbettende HTML-Datei (AppletAPIDemo1.html) <HTML> <HEAD> <TITLE> AppletAPIDemo1</TITLE> </HEAD> <BODY> <APPLET code="appletapidemo1" width="300" height = "225" > <PARAM name = "LabelText" value = "Demo zum Applet-API" > <PARAM name = "RandBreite" value = 8 > <PARAM name = "PictPath" value = "images/animals/bird.gif" > <PARAM name = "SoundPath" value = "sounds/bgsound.mid" > </APPLET> </BODY> </HTML> Darstellung des Applets durch : appletviewer AppletAPIDemo1.html

19 BEREICH DATENTECHNIK V JV TH 01 Java-Applet-API (7-1) Demonstrationsbeispiel 2 zum Java-Applet-API (Demo zu showstatus()) Applet-Code (Datei AppletAPIDemo2.java) // AppletAPIDemo2.java // Demo zu showstatus() import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class AppletAPIDemo2 extends JApplet static final String DEF_PICTPATH = "images/javalogo52x88.gif"; Container c; JLabel textlab; JLabel pictlab; public void init() textlab=new JLabel("Demo zu showstatus()", SwingConstants.CENTER); textlab.setalignmentx(component.center_alignment); textlab.setborder(borderfactory.createemptyborder(8, 8, 8, 8)); String relpictpath=getparameter("pictpath"); if (relpictpath==null) relpictpath=def_pictpath; Image img = getimage(getcodebase(), relpictpath); pictlab=new JLabel(new ImageIcon(img)); pictlab.setalignmentx(component.center_alignment); pictlab.setborder(borderfactory.createlineborder(color.black)); c=getcontentpane(); c.setlayout(new BoxLayout(c, BoxLayout.Y_AXIS)); c.add(textlab); c.add(pictlab); MouseListener mouselis = new AppletMouseListener(); addmouselistener(mouselis); class AppletMouseListener extends MouseAdapter public void mouseentered(mouseevent e) showstatus("gruess Gott Mouse!"); public void mouseexited(mouseevent e) showstatus("auf Wiedersehen Mouse!");

20 BEREICH DATENTECHNIK V JV TH 01 Java-Applet-API (7-2) Demonstrationsbeispiel 2 zum Java-Applet-API (Demo zu showstatus()), Forts. Einbettende HTML-Datei (AppletAPIDemo2.html) <HTML> <HEAD> <TITLE> AppletAPIDemo2</TITLE> </HEAD> <BODY> <APPLET code="appletapidemo2" width="300" height = "150" > <PARAM name = "PictPath" value = "images/dukewavered.gif" > </APPLET> </BODY> </HTML> Darstellung des Applets durch : appletviewer AppletAPIDemo2.html Mouse-Zeiger über dem Applet Mouse-Zeiger wieder ausserhalb desapplets

21 BEREICH DATENTECHNIK V JV TH 02 Allgemeines Sicherheitsbeschränkungen bei Java-Applets (1) Ein über das Netz geladenes lokal ablaufendes Programm stellt für den lokalen Rechner prinzipiell ein Sicherheitsrisiko dar. Um dieses Sicherheitsrisiko aufzuheben, muß sichergestellt werden, dass ein derartiges Programm keine unbefugten Aktionen (wie z.b. Zugriff zum lokalen Dateisystem, Start lokaler Programme usw) durchführen kann. Als Mechanismus zum Schutz vor der unbefugten Ausführung sicherheitsrelevanter Operationen ist in Java ein sogenannter Security-Manager vorgesehen. Ein Security-Manager ist ein Objekt der Klasse SecurityManager oder einer davon abgeleiteten Klasse, das in jedem Java-Programm installiert sein kann. Ein SecurityManager-Objekt stellt Methoden zur Verfügung, die die Zulässigkeit diverser sicherheitsrelevanter Operationen überprüfen. Falls im Programm ein SecurityManager-Objekt installiert ist, wird von den Java-Bibliotheks-Klassen vor der Ausführung einer entsprechenden sicherheitsrelevanten Operation die zugehörige SecurityManager-Überprüfungs- Methode aufgerufen. Falls die Ausführung der überprüften Operation unzulässig ist, wird eine SecurityException geworfen. Defaultmässig besitzt ein Applikations-Programm keinen Security-Manager. Soll die Ausführung bestimmter sicherheitsrelevanter Operationen für ein Applikations-Programm beschränkt werden, muß es selbst ein geeignetes SecurityManager-Objekt erzeugen und installieren. Die existierenden java-fähigen Browser und Applet-Viewer dagegen installieren beim Start einen Security-Manager. Damit unterliegt die Ausführung von Applets den durch diesen zur Verfügung gestellten Sicherheits-Überprüfungen. Für die Ausführung von Applets gelten also bestimmte Sicherheitsbeschränkungen, die verhindern, dass unbefugte Aktionen ausgeführt werden können. Prinzipielle Sicherbeschränkungen bei Applets Der Umfang der für Applets geltenden Sicherheitsbeschränkungen hängt von dem jeweiligen Browser / Applet-Viewer und dem installierten Security-Manager sowie von der Vertrauenswürdigkeit des Applets ab. Standardmässig werden alle von einem anderen Rechner geladen Applets als nicht-vertrauenswürdig betrachtet. Sie unterliegen damit i.a. allen nachfolgend aufgelisteten Sicherheitsbeschränkungen. Vom lokalen Dateisystem geladene Applets werden dagegen als vertrauenswürdig betrachtet. Für sie gelten die meisten der Sicherheitsbeschränkungen nicht. Analoges gilt für signierte Applets, auch wenn sie von einem entfernten Rechner geladen werden. Sie werden ebenfalls als vertrauenswürdig betrachtet. Typischerweise gelten für nicht-vertrauenswürdige Applets die folgenden Sicherheitsbeschränkungen : kein Zugriff (weder lesend noch schreibend) zum lokalen Dateisystem (Client-Datei-System) kein Aufbau von Netzwerkverbindungen, außer zu dem Rechner von dem das Applet jeweils stammt (Host-Rechner) kein Start von Programmen auf dem ausführenden (lokalen) Rechner (Client-Rechner) kein zusätzliches Laden von Bibliotheken (über die vom Browser geladene Standard-Bibliothek hinaus) keine Definition von native-methoden kein Top-Level-Fenster ohne Warnhinweis erzeugen keine Beendigung des Browsers (mittels System.exit(i)) eingeschränkter Zugriff zur System-Umgebung (System Properties) Für vom Applet-Viewer des JDK ausgeführte Applets gelten viele der o.a. Beschränkungen nicht

22 BEREICH DATENTECHNIK V JV TH 01 Sicherheitsbeschränkungen bei Java-Applets (2) Beschränkungen beim Zugriff zur System-Umgebung (System-Properties) Applets können zu einigen, aber nicht allen System Properties zugreifen. Der Zugriff zu folgenden System Properties ist gemäß der Java-Dokumentation für Applets nicht möglich : java.home java.class.path user.name user.home user.dir Java-Installations-Directory Wert der CLASSPATH-Environment-Variablen Benutzer-Name des aktuellen Benutzers Heimat-Verzeichnis des aktuellen Benutzers aktuelles Arbeitsverzeichnis des aktuellen Benutzers Zu den folgenden System Properties sollte dagegen von Applets aus jedem Browser bzw Applet-Viewer zugegriffen werden können : java.version java.vendor java.vendor.url Nummer der Java-Version Kennzeichnung des Java-Lieferanten URL des Java-Lieferanten java.class.version Java-Klassen-Versions-Nummer os.name os.arch os.version file.separator path.separator line.separator Name des Betriebssystems Prozessor-Architektur auf der das Betriebssystem läuft Versions-Nummer des Betriebssystems Trennzeichen in Pfadangaben Trennzeichen zwischen Pfaden Zeilenende-Zeichen

Applets I. Grundlagen der g Applet-Programmierung

Applets I. Grundlagen der g Applet-Programmierung Applets I Grundlagen der g Applet-Programmierung 2 Inhalt Applets Was sind Applets Entwicklung Grundlagen Zustandssteuerung eines Applets Methoden zum Nachrichtentransfer Soundausgabe Animation Einbindung

Mehr

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog. Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Applets Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Einführung 2 Sicherheits-Maßnahmen 3 Ereignisgesteuerte Programmierung

Mehr

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

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

Mehr

Applets Pro r g o r g a r m a mier e e r n e n mit Jav a a Einf n üh ü r h u r n u g n g in n App p l p et e s Ya Y na N o N rina

Applets Pro r g o r g a r m a mier e e r n e n mit Jav a a Einf n üh ü r h u r n u g n g in n App p l p et e s Ya Y na N o N rina Applets Programmieren mit Java Einführung in Applets Applets Einführung Geschichte Applets und Applikationen Was ist ein Applets? Die wichtigsten Methoden Applets Programmierung Beispiele Fazit 2 Geschichte

Mehr

V by WBR1/BFH-TI 2011 by MOU2/BFH-TI

V by WBR1/BFH-TI 2011 by MOU2/BFH-TI Java-Applets Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/BFH-TI 2011 by MOU2/BFH-TI Java-Applets V3.0 2011 by WBR1&MOU2/BFH- TI Lernziele Die Kursteilnehmer sind in der Lage: Möglichkeiten und

Mehr

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen

Mehr

Grundlagen der Programmierung APPLETS

Grundlagen der Programmierung APPLETS Grundlagen der Programmierung APPLETS Inhalt dieser Einheit Java-Applets: Java-Applets Vor- und Nachteile Sicherheitskonzepte Methoden Einbetten in HTML Graphical User Interface 2 Java Applets Applets

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

Praktikum 4: Grafiken und Ereignisse

Praktikum 4: Grafiken und Ereignisse Praktikum 4: Grafiken und Ereignisse Aufgabe 1: Java Applikation Bisher haben wir in Java (ebenso wie in C) jeweils selbständige Konsole-Applikationen erstellt. Java wurde als Programmiersprache für das

Mehr

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

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

Mehr

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 22 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface,

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Programmieren II. Java-Applets. Heusch 17 Ratz 4. www.kit.edu. Institut für Angewandte Informatik

Programmieren II. Java-Applets. Heusch 17 Ratz 4. www.kit.edu. Institut für Angewandte Informatik Programmieren II Java-Applets Heusch 17 Ratz 4 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Was sind Java-Applets? Minianwendung

Mehr

import java.applet.applet; import java.awt.*; public class Grow extends Applet { public void start() { setbackground(color.orange); } public void

import java.applet.applet; import java.awt.*; public class Grow extends Applet { public void start() { setbackground(color.orange); } public void 22.3 Animation Animation ist eine Bewegung vortäuschende Abfolge von Bildern(evt. mit Ton unterlegt:-) Für das menschliche Auge genügen 24 Bilder pro Sekunde. In der Zeit dazwischen legen wir das Applet

Mehr

13 Applets Applets. Parameter Kommunikation mit dem Browser

13 Applets Applets. Parameter Kommunikation mit dem Browser 13 Applets 13-1 Inhalt Applets Einführung Initalisierung Parameter Kommunikation mit dem Browser Sicherheit Übungsaufgaben Einführung Applets sind im Prinzip Komponenten, die in eine Web-Seite eingelagert

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 6 Applets 6.1 Applets 6.3 Painting 6.4 Applet - HTML-Umgebung.1 6.1 Applikationen - Applets 6.1 Applikationen - Applets Java-Applikationen laufen auf dem Rechner ab, auf dem sie gestartet werden. Die Programme

Mehr

Aufbau einer typischen Java-Datei

Aufbau einer typischen Java-Datei Aufbau einer typischen Java-Datei 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 [package mein.paket;] [import

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 6. Applets 6.1 Applikationen - Applets 6.3 Painting 6.4 Applet - HTML-Umgebung.1 6.1 Applikationen - Applets 6.1 Applikationen - Applets Java-Applikationen laufen auf dem Rechner ab, auf dem sie gestartet

Mehr

GUI Programmierung mit JAVA Swing

GUI Programmierung mit JAVA Swing GUI Programmierung mit JAVA Swing Komponenten Layout Event Handling Imaging 2001 Thomas Weiler 1 JAVA Swing Bibliothek zur Erstellung grafischer Benutzerschnittstellen in JAVA Bietet Klassen für grafische

Mehr

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

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

Mehr

Swing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Swing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 27.06.07 G. Bohlender (IANM UNI Karlsruhe) Swing 27.06.07 1 / 10 Übersicht 1 Einführendes

Mehr

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,

Mehr

Fachhochschule Stuttgart Prof. Uwe Schulz 5. Juli 2006 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Fachhochschule Stuttgart Prof. Uwe Schulz 5. Juli 2006 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4 Hochschule der Medien Klausur Informatik, EDV-Nr. 40301(42021) Seite 1 von 4 Name: Matr. Nr.: Note Teil 1: Keine Hilfsmittel! Bearbeitungszeit: 20 Minuten Frage Stichwort Punkte 1 Schleife 2 2 Code-Fragment

Mehr

Applications Applets (eingeschränkte Rechte)

Applications Applets (eingeschränkte Rechte) 1 Arten von Java-Programmen Man unterscheidet 2 verschiedene Arten von Java-Programmen: Applications Applets (eingeschränkte Rechte) Erstere sind eigenständige Programme. Letztere sind "kleine" Programme,

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Java I Vorlesung 11 Graphische Oberflächen mit Swing

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

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 2 Java: Java-Einführung 2 Java: Java-Einführung 2.1 Java-Entwicklungsgeschichte 2.2 Java Eigenschaften 2.3 Java-Entwicklungsumgebung 2.4 Application vs. Applet 2.5 Ein erstes Programm 2.1 2.1 Java - Entwicklungsgeschichte

Mehr

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets Kapitel 3: Java Applets 1 Was sind Applets? kleine in Fenstern ausführbare Programme typisch: Aufruf im Browserfenster als Teil einer HTML-Seite Anfang des umgebenden HTML-Textes

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben

Mehr

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009 Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009 Fabian Birzele, LMU Institut für Informatik, Lehrstuhl für Praktische Informatik und Bioinformatik, 2008: Programmierpraktikum 1 Ziele

Mehr

Instrumentierung und Dekodierung

Instrumentierung und Dekodierung 116 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Instrumentierung und Dekodierung Erweiterung der Grafikklassen Das awt-paket erweitert alle Klassen für Grafikobjekte in java.awt, so

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Aufgabe Ein Benutzer soll

Mehr

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 9 Übungen: Applets Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 1. Java-Applet mit Text 2. Java-Applet mit Bild und Text 3. Java-Applet mit Grafik 9 Applets 4. Java-Applet

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung Aufgabe Editor package BA.GUI.Swing; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.logging.level; import java.util.logging.logger;

Mehr

Wiederholung JAVA. 1. (Vorbereitung)

Wiederholung JAVA. 1. (Vorbereitung) Softwaretechnik für IM, WS2018/2019 http://knopper.net/bw/swt/ Übung 1 Wiederholung JAVA Hinweise: Das JAVA Development Kit (JDK) zum Entwickeln von JAVA-Programmen und das JAVA Runtime Environment (JRE)

Mehr

Programmiertechnik GUI Programmierung mit Java Swing

Programmiertechnik GUI Programmierung mit Java Swing Programmiertechnik GUI Programmierung mit Java Swing Prof. Dr. Oliver Haase Software Engineering und Verteilte Systeme Raum F012 haase@htwg-konstanz.de Tel: 07531/206-720 Oliver Haase Hochschule Konstanz

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Aufgabe Ein Benutzer soll zwei Zahlen in ein Programm

Mehr

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1 Heute Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files 17.01.2017 IT I - VO 11 1 Organisatorisches Noch zwei UE und eine Wissensüberprüfung Heute

Mehr

Session 1: Classes and Applets

Session 1: Classes and Applets Session 1: Classes and Applets Literature Sprechen Sie Java, ISBN 3-89864-117-1, dpunkt deutsch Java für Studenten, ISBN 3-8273-7045-0, PearsonStudium deutsch Java in a Nutshell, ISBN: 0-59600-283-1, O'Reilly

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 8

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

Mehr

Einführung: Verteilte Systeme - Remote Method Invocation -

Einführung: Verteilte Systeme - Remote Method Invocation - Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation

Mehr

Objektorientierte Software-Entwicklung

Objektorientierte Software-Entwicklung Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine

Mehr

11. GUI-Programmierung mit SWING Überblick

11. GUI-Programmierung mit SWING Überblick 11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing

Mehr

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz 16 Zeichnen in Swing-Komponenten 2009 2014, Prof. Dr. D. Ratz 16.1 Grafische Darstellung von Komponenten Der Repaint-Manager sorgt für die grafische Darstellung der Komponenten Aktivierung beim erstmaligen

Mehr

8.6 Visualisierung der Sortieralgorithmen

8.6 Visualisierung der Sortieralgorithmen 8.6 Visualisierung der Sortieralgorithmen 8.6.1 Problemstellung Schauen Sie sich den folgenden Quelltext eines Java-Applets an: import java.awt.*; import javax.swing.*; import java.awt.event.*; public

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Fachhochschule Stuttgart Prof. Uwe Schulz 14. Juli 2005 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Fachhochschule Stuttgart Prof. Uwe Schulz 14. Juli 2005 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4 Hochschule der Medien Klausur Informatik, EDV-Nr. 40301(42021) Seite 1 von 4 Name: Matr. Nr.: Note Teil 1: Keine Hilfsmittel! Bearbeitungszeit: 20 Minuten Frage Stichwort 1 Schleife 2 2 Code-Fragment mit

Mehr

Appletprogrammierung

Appletprogrammierung Appletprogrammierung 362 Übersicht zum Vorlesungsinhalt zeitliche Abfolge und Inhalte können variieren Appletprogrammierung HTML Methoden eines Applets AppletViewer Applikation zu Applet Flackernde Applets

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Probeklausur Informatik 2 Sommersemester 2013

Probeklausur Informatik 2 Sommersemester 2013 Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel

Mehr

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen Einführung in die Programmierung für NF Grafische Benutzeroberflächen Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorienferte Programmierung kennenlernen.

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 5. Grafische Userinterfaces Christian Scheible Institut für Maschinelle Sprachverarbeitung 31. Juli 2009 Christian Scheible Java für Computerlinguisten 31. Juli 2009 1 / 33

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau

Mehr

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 22 Einführung: Grafische Benutzeroberflächen 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische

Mehr

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1 Kapitel 1 Einstieg in Java Dr. Elham Firouzi 06.09.10 1 1 : Einstieg in Java Einleitung Ein erstes Beispiel Berner Fachhochschule Entwicklung von Java-Programmen Applikationen Applets Vor und Nachteile

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion 1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2)

Mehr

Informatik II. Aufgabe 1: Image Viewer ImageViewer.java

Informatik II. Aufgabe 1: Image Viewer ImageViewer.java Universität Augsburg, Institut für Informatik Sommersemester 2006 Prof. Dr. Werner Kießling 27. Juli 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 12 Aufgabe 1: Image Viewer ImageViewer.java Informatik

Mehr

Funktionale und Objekt-Orientierte Programmierkonzepte

Funktionale und Objekt-Orientierte Programmierkonzepte Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Donnerstag Inhaltsübersicht java.lang.object Pakete Java Applications Klassenmethoden und -variablen Ein- und Ausgabeströme Objektorientiertes Programmdesign Javas Root-Klasse:

Mehr

Objektorientiertes Programmieren mit C++ für Fortgeschrittene

Objektorientiertes Programmieren mit C++ für Fortgeschrittene BEREICH DATENTECHNIK I CQ 300 00 TH 02 Objektorientiertes Programmieren mit C++ für Fortgeschrittene Kapitel 3 3. Mehrfachvererbung 3.1. Eigenschaften und Problematik 3.2. Virtuelle Basisklassen BEREICH

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 6.1 Applets 6.2 Applets kreieren 6.3 Painting 6.4 Applet - HTML-Umgebung GdI 6-1 6.1 Applets Java-Applikationen laufen auf dem Rechner ab, auf dem sie gestartet werden. Die Ladeobjekte liegen im lokalen

Mehr

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch Einführung in die Programmierung für Nebenfach Medieninformatik Beat Rossmy, Michael Kirsch Direct Feedback - Socrative Eure Mitarbeit ist uns wichtig! Installiert euch dazu die kostenlose App Socrative

Mehr

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September

Mehr

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Sommersemester Implementierung III: GUI und Verhalten (Teil 2) Sommersemester 2003 Implementierung III: GUI und Verhalten (Teil 2) 26 Aufgabe 5 Implementierung III: GUI und Verhalten (Teil 2) Umfang: 1 Woche Punkte: 50 P. Als Nächstes soll die Implementierung des

Mehr

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt GUI GUI = Graphical User Interface Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt Gute Übersicht über alle Funktionalitäten

Mehr

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden.

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden. Objektzugriff Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden. Attribute sind in der Klasse mit Datentyp und Namen deklariert im Objekt sind sie mit jeweils

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Kurzanleitung zur Verwendung der Java-IDE NetBeans (1)

Kurzanleitung zur Verwendung der Java-IDE NetBeans (1) FG TECHNISCHE INFORMATIK U JV 055 01 TH 01 Kurzanleitung zur Verwendung der Java-IDE NetBeans (1) Erzeugung eines neuen Projekts Start der NetBeans-IDE Menü "Datei" Auswahl "Neues Projekt" (CTRL-Shift-N)

Mehr

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke GUIs mit Swing Markus Reschke 28.08.2014 Beispiel: Ein einfaches GUI-Programm Siehe Painter.java Markus Reschke GUIs mit Swing 2 GUI Frameworks in Java AWT war das erste GUI-Framework, welches mit Java

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik Programmieren II Zeichnen in Swing-Komponenten Heusch 18 Ratz 16.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Zeichnen in Swing-Komponenten (1) Eine Swing-Komponente kann nicht

Mehr

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

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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch Einführung in die Programmierung für Nebenfach Medieninformatik Beat Rossmy, Michael Kirsch Direct Feedback - Socrative Eure Mitarbeit ist uns wichtig! Installiert euch dazu die kostenlose App Socrative

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Toolbar 1. JToolBar 2. Menü 1. JMenuBar 2. JMenu 3. JMenuItem 4. KeyStroke 5. Beispiel JMenuDemo1 6. JCheckBoxMenuItem 7. JRadioButtonMenuItem 8. Beispiel JMenuDemo2 9. JPopupMenu 10. Beispiel

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 03: Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in GUI-Programmierung Motivation Grundlagen von Swing Praxis: UI für

Mehr

Hochschule der Medien Prof. Uwe Schulz 13. Juli 2009 Klausur Informatik, EDV-Nr Seite 1 von 6. Teil 2: Aufgaben

Hochschule der Medien Prof. Uwe Schulz 13. Juli 2009 Klausur Informatik, EDV-Nr Seite 1 von 6. Teil 2: Aufgaben Hochschule der Medien Prof Uwe Schulz 13 Juli 2009 Klausur Informatik, EDV-Nr 40301 Seite 1 von 6 Name: Matr Nr: Teil 2: Aufgaben Hilfsmittel: Bearbeitungszeit: alle außer tragbare Computer und Nachbar

Mehr

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick 1 Einführung 2 Einfache Swing Komponenten 3 Ereignisbehandlung und Adapterklassen 4 Zeichnen 5 Layout Manager 6 Komplexere Swing Komponenten

Mehr

Einführung in GUI-Programmierung. javax.swing

Einführung in GUI-Programmierung. javax.swing Einführung in GUI-Programmierung javax.swing GUI Graphical User Interface ( Grafische Benutzerschnittstelle ) Anschaulichere und leichtere Möglichkeit zur Dateneingabe und Kontrolle von Programmen Stellt

Mehr

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum. Hochschule der Medien Prof Uwe Schulz 1 Februar 2007 Stuttgart Klausur Informatik 2, EDV-Nr 40303/42022 Seite 1 von 2 Name: Matr Nr: Teil 1: Keine Hilfsmittel Bearbeitungszeit: 20 Minuten Teil 1 Teil 2

Mehr