Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Ähnliche Dokumente
8.6 Visualisierung der Sortieralgorithmen

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Workshop zu Folge 9.3 Überarbeitete Version vom Mai 2016

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 4

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

Schritt 1 - Ein Spielfeld

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

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

OOP: Nebenläufigkeiten Threads. Dipl.-Inform. Arnold Willemer

Objektorientierte Programmierung OOP Programmieren mit Java

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

Inhaltsverzeichnis. Rechenmaschinen - EINFÜHRUNG IN DIE OOP MIT JAVA PI - KAPITEL 1: GRAFIK UND GUIS - V SEITE 1 VON 10 -

Ausnahmebehandlung in Java

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

Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele:

Motivation. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 20: Threads. Inhalt. Ein Beispiel zur Motivation

Grundlagen der Informatik für Ingenieure I

Einführung in die Informatik - Teil 3b -

Praktikum 4: Grafiken und Ereignisse

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

Lebenszyklus von Threads

// // // // // erstellt von W. Stickler import java.applet.*; import java.awt.*; import java.awt.image.*;

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

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Applications Applets (eingeschränkte Rechte)

Dr. Monika Meiler. Inhalt

Java Zusammenfassung. Basisdatentypen ganzzahlig: Byte, Short, Integer, Long Fließkomma: Float, Double Zeichen: Character Wahrheitswerte: Boolean

Ab jetzt: Java ohne Kara

Parallele Prozesse. Prozeß wartet

Grundlagen der Informatik für Ingenieure I

Programmieren in Java

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov

JAVA 3. Arbeitsblätter für die Lehrveranstaltung OOP. III. Applets und JavaScript. Das Applet-Tag:

Nebenläufigkeit mit Java

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Klassen und Unterklassen

Kapitel X - Zeichnen mit Java2D

Programmieren in Java -Eingangstest-

Java Kurzreferenz Für Fortgeschrittene

Erste Java-Programme (Scopes und Rekursion)

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

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Einführung Verteilte Systeme - Java Threads I -

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

Einfache Sortierverfahren in Java, 2. Version

Klausur Softwaretechnik / JAVA Fachbereich BW, für WINFO

1 Modellierung einer Uhr

Programmierung für Mathematik HS11

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Objektorientierte Programmierung Studiengang Medieninformatik

Praktikum aus Softwareentwicklung 2, Stunde 5

Java-Schulung Grundlagen

Beispiel für überladene Methode

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139

Transkript:

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 mit mehreren Bildern 5. Java-Applet mit Thread Übungen 6. Java-Applet mit jar-archiv 7. Java-Applet mit Lauftexten 2 Aufgabe 1: Java-Applet mit Text Programmieren Sie ein Java-Applet JavaApplet1 nur mit der paint- Methode, das folgendes im appletviewer ausgibt: Lösung 1: Java-Applet mit Text Java-Klasse JavaApplet1 zur Erzeugung des Applets: public class JavaApplet1 extends java.applet.applet { g.drawstring("dies ist ein Java-Applet!", 70, 50); g.drawstring("toll!!!", 100, 80); g.drawstring(":-)", 110, 110); HTML-File Aufruf_JavaApplet1 zum Aufruf des Applets: <APPLET CODE="JavaApplet1.class" WIDTH=300 HEIGHT=200> 3 4

Aufgabe 2: Java-Applet mit Bild und Text Programmieren Sie ein Java-Applet JavaApplet2 mit der init- und paint- Methode, das das Bild usa3 skaliert auf die Grösse 300x300 mit dem Text in der Mitte des Bildes im appletviewer ausgibt: Tipps: Um Bilder auf eine gewisse Grösse zu skalieren, wird die erweiterte Methode.drawImage(einBild, 0, 0, ScaleX, ScaleY, this) eingesetzt. Darin bedeuten ScaleX und ScaleY die skalierte Grösse in x- und y-richtung. Um die Schriftart (also den Font) zu ändern, verwenden Sie die Methode.setFont(einFont), wobei einfont ein Objekt der Klasse der Klasse java.awt.font ist und über den Konstruktor Font("Arial", Font.BOLD, 20) aufgerufen wird. Schauen Sie in der Java-Dokumentation unter Graphics und Font nach. 5 Lösung 2: Java-Applet mit Bild und Text Java-Klasse JavaApplet2 zur Erzeugung des Applets: Benötigte Klasse importieren Benötigte Objekte deklarieren Bild laden Schriftart setzen Bild und Text ausgeben import java.awt.image; import java.awt.font; public class JavaApplet2 extends java.applet.applet { Image einbild; Font einfont; // Bild wird geladen und an Grösse angepasst einbild = getimage(getdocumentbase(), "usa3.jpg"); // Bild und Text wird ausgegeben // Schriftart setzen einfont = new Font("Arial", Font.BOLD, 20); g.setfont(einfont); // Bild und Text ausgeben g.drawimage(einbild, 0, 0, 300, 300, this); g.drawstring("usa steht Kopf", 80, 150); 6 Lösung 2: Java-Applet mit Bild und Text Aufgabe 3: Java-Applet mit Grafik HTML-File Aufruf_JavaApplet2 zum Aufruf des Applets: <APPLET CODE="JavaApplet2.class" WIDTH=300 HEIGHT=300> Programmieren Sie ein Java-Applet JavaApplet3 nur mit der paint- Methode, das folgende Grafik im appletviewer ausgibt: In Grafiken kommen folgende Methoden der Klasse Graphics zum Einsatz: Farbe setzen:.setcolor(einefarbe), wobei einefarbe ein Objekt der Klasse java.awt.color(int r, int g, int b) ist. Rot ist z.b. (255, 0, 0). Linien:.drawLine(int x1, int y1, int x2, int y2) Kreise:.drawOval(int x, int y, int width, int height) Ausgefüllte Kreise:.fillOval(int x, int y, int width, int height) Kreisbögen:.drawArc(int x, int y, int width, int height, int startangle, int arcangle) Schauen Sie in der Java-Dokumentation unter Graphics nach. 7 8

Lösung 3: Java-Applet mit Grafik Java-Klasse JavaApplet3 zur Erzeugung des Applets: Lösung 3: Java-Applet mit Grafik Benötigte Klasse importieren Benötigtes Objekt deklarieren Farbe setzen Smily zeichnen: Gesicht Augen, Nase, Mund import java.awt.color; public class JavaApplet3 extends java.applet.applet { Color einefarbe; // Bild und Text wird ausgegeben // Farbe erzeugen einefarbe = new Color(255,0,0); g.setcolor(einefarbe); // Smily zeichnen g.drawoval(50, 50, 200, 200); // Gesicht g.filloval(100, 120, 20, 20); // Augen g.filloval(180, 120, 20, 20); g.drawline(150, 150, 150, 170); // Nase g.drawarc(100, 150, 100, 50, 0, -180); // Mund HTML-File Aufruf_JavaApplet3 zum Aufruf des Applets: <APPLET CODE="JavaApplet3.class" WIDTH=300 HEIGHT=300> 9 10 Lösung 4: Java-Applet mit mehreren Bildern Aufgabe 4: Java-Applet mit mehreren Bildern Programmieren Sie ein Java-Applet JavaApplet4 mit der init- und paint-methode, das die Bilder usa1, usa2, usa3 und usa4 skaliert auf die Grösse 300x300 kontinuierlich immer der Reihe nach übereinander im appletviewer darstellt. Verwenden Sie keine Threads, sondern eine Endlosschleife. Um zwischen der Darstellung zweier Bilder eine kleine Pause einzufügen, verwenden Sie eine for- Schleife, die nichts macht: for (long i=1;i<dauer;i++); Java-Klasse JavaApplet4 zur Erzeugung des Applets: Benötigte Klassen importieren Benötigte Objekte deklarieren Bilder laden Endlosschleife Bild ausgeben warten Bild ausgeben warten... import java.awt.image; public class JavaApplet4 extends java.applet.applet { Image einbild1, einbild2, einbild3, einbild4; long Dauer = 10000000L; // Bild wird geladen und an Grösse angepasst einbild1 = getimage(getdocumentbase(), "usa1.jpg"); einbild2 = getimage(getdocumentbase(), "usa2.jpg"); einbild3 = getimage(getdocumentbase(), "usa3.jpg"); einbild4 = getimage(getdocumentbase(), "usa4.jpg"); // Bild wird ausgegeben do { g.drawimage(einbild1, 0, 0, 300, 300, this); g.drawimage(einbild2, 0, 0, 300, 300, this); g.drawimage(einbild3, 0, 0, 300, 300, this); g.drawimage(einbild4, 0, 0, 300, 300, this); while (true); 11 12

Lösung 4: Java-Applet mit mehreren Bildern HTML-File Aufruf_JavaApplet4 zum Aufruf des Applets: <APPLET CODE="JavaApplet4.class" WIDTH=300 HEIGHT=300> Aufgabe 5: Java-Applet mit Thread Erweitern Sie das Java-Applet JavaApplet4 zu JavaApplet5, das jetzt die Applet-Methoden init(), start(), paint() und stop() sowie einen Thread verwendet. Aufgrund dieses Threads entfällt nun die Endlosschleife und die Pseudo- Wartezeiten for (long i=1;i<dauer;i++); in der Methode paint(). (Hinweis: Beim Schliessen des Applets kann eine Fehlermeldung auftreten. Lassen Sie sich davon nicht stören. Eventuell müssen Sie mit dem Task- Manager auch den Browser "abschiessen".) 13 14 Lösung 5: Java-Applet mit Thread Es wird ein Thread thread1 angelegt, wozu das Interface Runnable definiert werden muss. Dieser Thread wird, wenn er nicht schon läuft, in der Applet-Methode start() gestartet, sobald auch das Applet gestartet wird. import java.awt.*; import java.applet.*; public class JavaApplet5 extends Applet implements Runnable { Image einbild1, einbild2, einbild3, einbild4; int Zaehler = 0; Thread thread1 = null; System.out.println("Applet wird initialisiert."); einbild1 = getimage(getdocumentbase(), "usa1.jpg"); einbild2 = getimage(getdocumentbase(), "usa2.jpg"); einbild3 = getimage(getdocumentbase(), "usa3.jpg"); einbild4 = getimage(getdocumentbase(), "usa4.jpg"); public void start() { System.out.println("Applet wird gestartet."); if (thread1 == null) { thread1 = new Thread(this); thread1.start(); else { //thread1.resume(); public void stop() { System.out.println("Applet wird gestoppt."); //thread1.suspend(); thread1 = null; Lösung 5: Java-Applet mit Thread Die Methode run(), die vom Interface Runnable zum Überschreiben bereitgestellt wird, ruft die Methode repaint() auf, (die wiederum die Applet-Methode paint() aufruft). Dann wird 1000ms gewartet, bevor wieder repaint() aufgerufen wird. In paint() wird die Variable Zaehler kontinuierlich von 0 bis 3 hochgezählt und danach wieder auf 0 gesetzt. public void run() { while (true) { repaint(); try { thread1.sleep(1000); catch (Exception e) { // Bild wird ausgegeben Zaehler = (Zaehler>=3)? 0 : (Zaehler+1); System.out.println(Zaehler); switch (Zaehler%4) { case 0: g.drawimage(einbild1, 0, 0, 300, 300, this); case 1: g.drawimage(einbild2, 0, 0, 300, 300, this); case 2: g.drawimage(einbild3, 0, 0, 300, 300, this); case 3: g.drawimage(einbild4, 0, 0, 300, 300, this); 15 16

Aufgabe 6: Java-Applet mit jar-archiv Speichern Sie die Klasse JavaApplet5.class und die 4 Bilder usa1.jpg, usa2.jpg, usa3.jpg und usa4.jpg in ein jar-archiv namens JavaApplet5.jar. Lösung 6: Java-Applet mit jar-archiv Klasse JavaApplet5.class und die 4 Bilder usa1.jpg, usa2.jpg, usa3.jpg und usa4.jpg im jar-archiv JavaApplet5.jar speichern: Kontrollieren Sie, ob alles dort abgelegt ist. Rufen Sie im HTML-File Aufruf_JavaApplet6.html das jar-archiv JavaApplet5.jar auf. Kontrolle, ob alle Files dort abgelegt sind: Welches sind die Vorteile dieser Vorgehensweise? 17 18 Lösung 6: Java-Applet mit jar-archiv HTML-File Aufruf_JavaApplet6.html, das wiederum das jar-archiv JavaApplet5.jar aufruft (JavaApplet5.class ist die Haupt-Appletklasse im jar-archiv): Aufgabe 7: Java-Applet mit Lauftexten Programmieren Sie ein Java-Applet, das einen Lauftext folgender Art auf dem Bildschirm ausgibt: <html> <body> <applet code="javaapplet5.class" archive="javaapplet5.jar" width=300 height=300> </applet> </body> </html> Vorteile dieser Vorgehensweise: Alle Dateien, die das Applet benötigt (JavaApplet5.class, usa1.jpg, usa2.jpg, usa3.jpg und usa4.jpg) sind kompakt in einem jar-file (quasi einem zip-file) abgelegt. übersichtlicher Beim Laden des Applets, muss der Browser nur einen Ladebefehl (HTTP-Aufrufe) über das Internet absetzen, um JavaApplet5.jar zu laden, und nicht 5 Ladebefehle für die 5 einzelnen Dateien. Zeitersparnis, Applet schneller verfügbar 19 Beachten Sie dabei folgendes: Der obere Text schreibt keinen, einen, zwei usw. Buchstaben des Textes nacheinander hin. Wenn der Text vollständig ist, wird wieder von vorne begonnen. Der untere Text ist ein wirklicher Lauftext, der je nach dem, mit welchem Buchstaben er beginnt, die fehlenden hinten dransetzt. Für beide Texte gilt: Kommt jeweils ein neuer Buchstabe hinzu, ändert sich die Farbe (alle RGB- Farben möglich) und die Schriftgröße (zwischen 15 und 25 pt); Schrifttyp Arial und fett. Das Java-Applet ist mit einem Thread realisiert. Der Thread schläft jeweils 300 Millisekunden. Text.substring(a,b) gibt den Teil-String von Position a bis Position b des Strings Text aus. Das Applet wird 300x100 Pixel groß dargestellt. Das Java-File heißt JavaAppletLauftext.java, das HTML-File JavaAppletLauftext.html. 20

Lösung 7: Java-Applet mit Lauftexten <html> <body> <APPLET CODE="JavaAppletLauftext.class" WIDTH=300 HEIGHT=100> </body> </html> import java.awt.*; import java.applet.applet; public class JavaAppletLauftext extends Applet implements Runnable { // Thread-Methode run überschreiben public void run() { while (true) { repaint(); try { Prozess.sleep(300); catch (Exception e) { // Variablendeklaration Thread Prozess = null; String Text = "Dies ist ein Lauftext! "; String Text1 = ""; String Text2 = Text + Text; int Stelle = 0; // Laenge des Textes berechnen int Laenge = Text.length(); // Applet-Methoden init, start und stop überschreiben public void start() { if (Prozess == null) { Prozess = new Thread(this); Prozess.start(); else { //Prozess.resume(); // veraltete Umsetzung public void stop() { //Prozess.suspend(); // veraltete Umsetzung Prozess = null; // Applet-Methode paint überschreiben // Fontgroesse zufällig setzen zwischen 10 und 25 int f1 = (int)(math.random()*10) + 15; Font einfont = new Font("Arial", Font.BOLD, f1); g.setfont(einfont); // Farbe zufällig setzen (alle möglichen RGB-Farben) int c1 = (int)(math.random()*255); int c2 = (int)(math.random()*255); int c3 = (int)(math.random()*255); Color einefarbe = new Color(c1,c2,c3); g.setcolor(einefarbe); // aktuelle Stelle der beiden Lauftexte berechnen Stelle = (Stelle>=Laenge)? 0 : (Stelle+1); // oberen Lauftext ermitteln und ausgeben Text1 = Text.substring(0, Stelle); g.drawstring(text1, 40, 40); // unteren Lauftext ermitteln und ausgeben Text1 = Text2.substring(Stelle, Stelle+Laenge); g.drawstring(text1, 40, 80); 21