Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.

Slides:



Advertisements
Ähnliche Präsentationen
Steigung m berechnen Man kann die Steigung auch berechnen,
Advertisements

verweis-sensitive Grafiken
Imperative Programmierung -Entwicklungswerkzeuge
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Java2D Richard Göbel.
Java: Grundlagen der Sprache
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Polymorphie (Vielgestaltigkeit)
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 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Java-Kurs Grafik Julian Drerup.
Programmieren mit JAVA
Programmieren mit JAVA Teil V. Grafikausgabe mit JAVA, das AWT Java wurde von Anfang an mit dem Anspruch entwickelt, ein vielseitiges, aber einfach zu.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Das Java-Hamstermodell
Einführung in Visual C++
Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung.
Packages Vortrag : Cornelia Hardt 23. November 1999.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Java programmieren mit JavaKara
Kapitel 1 – Erste Schritte
Herzlich Willkommen zu „Einführung in die Programmierung mit Java“
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Hyperlinks und Anker Links notieren
Einführung in die Programmiersprache Java
Applets Java für’s Web.
Guten Nachmittag!.
Wir haben gesehen Das Gerüst ist bei JavaKara fix vorgegeben
Java und Eclipse.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Einführung in JavaKara
PHP Basic.
Übungen zum 2. Tag unter dem Motto Events
Programmierpraktikum Java SS 2005
Wilfried Imrich CuP - Java Erste Vorlesung Entspricht ungefähr Kapitel 1.1 des Skriptums Wilfried Imrich Montanuniversität Leoben Freitag, 4. Oktober 2002.
Starten der Entwicklungsumgebung (IDE)
Herzlich Willkommen zur zwölften Lektion DBD-KostenKalkül.
Gestern: Kara Steuerung: Endliche Automaten.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
Java-Kurs Übung Benutzeroberflächen und Graphik
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Einführung in die OOP in Java
Objektorientierte Programmierung (OOP)
Pool Informatik, Sj 11/12 GZG FN W.Seyboldt 1 Pool Informatik 5 GZG FN Sj. 11/12 Kopieren, Daten, Programme.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Beispiel class SpreadSheet { int cellA1, cellA2, cellA3; synchronized.
Java Programme nur ein bisschen objektorientiert.
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
Schwarz, Lubkoll : Javakurs LE Organisatorisches ● Wer sind wir? ● Was machen wir hier? ● Was haben wir davon? ● Was habt ihr davon?
Hello World! Javakurs 2013 Arne Kappen
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
 Präsentation transkript:

Java ohne Kara

Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen

JavaKara -> Java Ablauf in JavaKara: Ablauf in Java gleich Programm schreiben Kompilieren Programm starten Ablauf in Java gleich

1. Programm schreiben Texteditor statt JavaKara-Editor

2. Kompilieren Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf javac steht für „java compiler“

3. Programm starten Befehl in MS-DOS-Eingabeaufforderung anstatt bequemer Knopf

TextPad Wir verwenden hier TextPad (www.textpad.com) Vorteil 1: Farben erleichtern das Lesen der Programmzeilen Vorteil 2: Kompilieren und Start des Applets mit je einem Menu-Befehl

TextPad Wir brauchen nur wichtigste Funktionen des TextPad: Datei öffnen Datei speichern Rückgängig-Befehl Java kompilieren Java-Applet starten Siehe TextPad-Anleitung in den Unterlagen

Warum HelloWorld.html ? 2 Arten Java Programme Java Applikationen Java Applets Kann/muss man in Webseiten einbauen Einfachere Programme als bei Applikationen Applets: Man benötigt Webseite (.html) und ein Betrachtungsprogramm

Wie sieht die .html-Datei aus? Dateiname der kompilierten Java-Klasse Grösse des Programm-Fensters

TextPad-Problem Um Java-Applet aus dem TextPad zu starten, muss die .html-Datei bereits existieren

Also nochmals... Programm schreiben -> HelloWorld.java Kompilieren -> HelloWorld.class (javac HelloWorld.java) HTML-Datei (z.B. HelloWorld.html) erstellen und Programm starten (appletviewer HelloWorld.html)

Ein einfaches Java-Applet import java.awt.*; import java.applet.*; public class HelloWorld extends Applet { public void paint(Graphics screen) screen.drawString("hello world", 10, 10); }

Gähhhnnn... Jetzt seid Ihr aber dran!

Auftrag Jede schreibt das HelloWorld-Applet, speichert es, kompiliert es und lässt es laufen. Zeit: 20 Minuten Ihr findet alles was Ihr braucht in den Unterlagen

Los!

Quelle: Uli Stein

Wichtig bei Java-Programmen Goldene Regel Dateiname = Klassenname HelloWorld.java <-> (...) class HelloWorld (...) Kompilieren nicht vergessen! (Sonst startet man eine alte „HelloWorld.class“-Version)

Das Spezielle an Java Java stellt viele Funktionen zur Verfügung Durch diese „Fertig-Bauelemente“ ist man schneller am Ziel Aber: Man muss sich an die Richtlinien halten

public void paint(...) Wird von Java aufgerufen, sobald ein Bildschirmbereich neu gezeichnet werden muss Von Java festgelegter Name Ideal, um Grafik-Sachen zu zeichnen.

Ablauf bei Java-Programmen In Java programmiert man Ereignisse Ereignis: „Führe bei Mausklicks die Methode xy aus“ Nicht Ereignis-gesteuert: Viel komplizierter!

Ablauf bei Java-Programmen Einige vordefinierte Methoden: init, start, paint, stop, destroy Die restlichen Ereignisse muss man selber definieren: Z.B. Neuer Knopf erstellen Ereignis-Methode schreiben Methode zuordnen „Wenn Mausklick auf diesen Knopf, dann führe Methode xy aus“ Hä? – Brauchen wir vorläufig gar nicht!

Ablauf bei Java Von Java definierte Methoden Beim Start der Ausführung: void init() Immer, wenn es etwas zu zeichnen gibt: void paint(Graphics g) Vor dem Programmende: void destroy() Und noch weitere wie void start(), void stop(), void update()

Was muss ich jetzt tun? Methode paint() eignet sich ideal für das Zeichnen von Punkten, Linien, etc. auf den Bildschirm. Java-Applet-Programm muss die Methode enthalten, dann wird sie automatisch aufgerufen.

Linie zeichnen import java.awt.*; import java.applet.*; public class ZeichneLinie extends Applet { public void paint(Graphics screen) screen.drawLine(10,10,200,50); } x y

Graphics… import java.awt.*; import java.applet.*; public class ZeichneLinie extends Applet { public void paint(Graphics screen) screen.drawLine(10,10,200,50); }

Graphics… Okay. Aber wo soll ich denn hinzeichnen? Programm Okay. Aber wo soll ich denn hinzeichnen? An Programm: starte dein paint(…) ! Java

Graphics… Danke. Ich nenne das Blatt "screen" Hier kriegst du ein Blatt Papier vom Typ Graphics Graphics Java Programm

Zusammengefasst Der Methode paint(...) wird ein Objekt vom Typ Graphics übergeben: Dem Objekt geben wir einen Namen Objekte vom Typ Graphics stellen viele Methoden bereit, z.B. drawLine(…) public void paint (Graphics screen) { screen.drawLine(10,10,200,50); }

Graphics-Befehle Text ausgeben: Linie zeichnen: Punkt zeichnen: Graphics screen; Text ausgeben: screen.drawString("Java ist cool", 10, 20); Linie zeichnen: screen.drawLine(5, 10, 250, 40); Punkt zeichnen: screen.drawLine(10, 70, 10, 70);

Jetzt kombinieren wir alles! Variablen, Schleifen, Methoden, Linien, Kreise, Punkte, Texte, ... Grafik-Aufgaben im Anhang Zeit: 45 Minuten Danach 15 Minuten Pause

Hinweise zu Grafik Koordinaten beginnen bei (0,0) Fenster der Grösse 400x200 Punkt oben-links: (0,0) Punkt unten-rechts: (399,199) 1 2 3 4 1 2 Punkt (4,2)

Graphics-Blatt "weitergeben" Methode zeichneRechteck(…) soll man mit screen.drawLine(x1, y1, x2, y2); eine Linie zeichnen können Wir geben das Blatt an die Methode weiter public void paint (Graphics blatt) { zeichneRechteck(10, 10, 200, 50, blatt); } void zeichneRechteck ( ... , Graphics screen) { screen.drawLine(x1, y1, x2, y2); }

RechteckApplet.java void zeichneRechteck(int x, int y, int width, int height, Graphics screen) { (...) screen.drawLine(obenlinks_x , obenlinks_y , obenrechts_x , obenrechts_y ); screen.drawLine(obenrechts_x , obenrechts_y , untenrechts_x, untenrechts_y); screen.drawLine(untenrechts_x, untenrechts_y, untenlinks_x , untenlinks_y ); screen.drawLine(untenlinks_x , untenlinks_y , obenlinks_x , obenlinks_y ); }

RechteckApplet.java int obenlinks_x = x; int obenlinks_y = y; int obenrechts_x = x+width-1; int obenrechts_y = y; int untenlinks_x = x; int untenlinks_y = y+height-1; int untenrechts_x = x+width-1; int untenrechts_y = y+height-1;

RechteckApplet.java public void paint(Graphics g) { zeichneRechteck(100,50,200,100,g); g.drawLine(100,50,299,149); g.drawLine(299,50,100,149); }

Punktmuster Punktmuster im 10er-Raster Ideen? 10 Punkte Punktmuster im 10er-Raster Ideen? Erstelle mal die erste Zeile: 1 2 3 4 5 6 7 8 9 for (int i=0; i<400; i++) { screen.drawLine(i*10,0,i*10,0); }

Punktmuster Und jetzt? 10 Punkte Die restlichen Zeilen: Wiederhole erste Zeile „x-Mal“ for (int j=0; j<400; j++) { } for (int i=0; i<400; i++) { screen.drawLine(i*10, j*10, i*10, j*10); } for (int i=0; i<400; i++) { screen.drawLine(i*10, 0, i*10, 0); }

Auf den ersten Blick verwirrend Innere Schleife wird "zuerst abgearbeitet" (einzelne Zeile) Die Zeile muss bei jedem neuen j wiederholt gezeichnet werden for (int j=0; j<400; j++) { for (int i=0; i<400; i++) { screen.drawLine(i*10, j*10, i*10, j*10); }

Schweizerkarte Schweizerkarte auf dem Bildschirm anzeigen Stadt Bern und Stadt Zürich einzeichnen

Wo einzeichnen? Koordinaten von Bern: y=200'000, x=600'000 ETH Zürich, Hönggerberg: y=251'326, x=679'885 y x

Wo ist Zürich? y j i x 300‘000 400 600 i=? j=? x=679'885 y=251'326 400 600 i=? j=? j i x=679'885 y=251'326 50‘000 x 500‘000 850‘000

Für x bzw. i y Linker Rand subtrahieren: xneu=179'885 300‘000 400 600 x=679'885 Linker Rand subtrahieren: xneu=179'885 Streckungsfaktor: scale= 600 350'000 Multiplizieren mit scale: xneu·scale=308 50‘000 350‘000 xneu x 500‘000 850‘000

Auf einen Blick y i1 i=(x-x0)· =308 x1-x0 x 300‘000 400 i1=600 400 i1=600 x=679'885 i=(x-x0)· =308 i1 x1-x0 50‘000 x x0=500‘000 x1=850‘000

Für y bzw. j y jneu=(y-y0)· =322 j1 y1-y0 jneu jneu 300‘000 jneu 400 400 600 y=251'326 Idee: Drehe j-Achse vorübergehend Jetzt wie bei x- bzw. i-Achse j=400-jneu=78 50‘000 x 500‘000 850‘000

( ) Auf einen Blick y i1 i=(x-x0)· =308 x1-x0 j j1 j=j0 - (y-y0)· =78 300‘000 400 600 j x=679'885 i=(x-x0)· =308 i1 x1-x0 y=251'326 j=j0 - (y-y0)· =78 j1 y1-y0 ( ) 50‘000 i x 500‘000 850‘000

Wo ist nun Zürich? y j i x 300‘000 400 600 (308, 78) x=679'885 400 600 (308, 78) j x=679'885 i=berechneBildschirmI(x); y= 251'326 j=berechneBildschirmJ(y); 50‘000 i x 500‘000 850‘000

Nun in Java... int berechneBildschirmI (double x) { double bildschirmI; bildschirmI = (x-XMIN) * FENSTERMAX_I / (XMAX-XMIN); return (int) bildschirmI; } int berechneBildschirmJ (double y) { double bildschirmJ; double jverkehrt; jverkehrt = (y-YMIN) * FENSTERMAX_J / (YMAX-YMIN); bildschirmJ = FENSTERMAX_J – ( jverkehrt ); return (int) bildschirmJ; }

Bern i=berechneBildschirmI(600000); j=berechneBildschirmJ(200000); 160 171

(Zusatzfolien)

Nicht dein Traum-Typ? Typen kann man in Java umwandeln! Gleitkommazahl in eine Ganzzahl umwandeln int i; double pi = 3.14159; i = (int) pi; Ganzzahl in Zeichenkette umwandeln int jahr = 2002; String text = "Wir haben das Jahr" + jahr;

Java-Gerüst import java.awt.*; import java.applet.*; public class ZeichneLinie extends Applet { public void paint(Graphics screen) /* ... */ } awt: Advanced Windowing Toolkit

Java-Gerüst import java.awt.*; import java.applet.*; public class ZeichneLinie extends Applet { public void paint(Graphics screen) /* ... */ } „Erweitert“ Applet, d.h. ZeichneLinie gehört zu den Applets

Graphics Neben Graphics gibt es in Java auch noch eine Klasse Image. Graphics beinhaltet immer ein Image, aber auch noch weitere Objekte Graphics Aktuelle Font Aktuelle Farbe Image Hintergrund

Graphics Wir zeichnen die Linien in das Graphics-Objekt. Dort werden die Linien auf das Image-Objekt übertragen Graphics Aktuelle Font Aktuelle Farbe Image Hintergrund