Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 12. Vorlesung WS 2002/2003.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
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)
Polymorphie (Vielgestaltigkeit)
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 9. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
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-AG Ausnahmebehandlung Gerhard Gröger.
Java-Kurs Grafik Julian Drerup.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Grundlagen der Programmierung
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Java-Kurs Übung Benutzeroberflächen und Graphik
Robuste Programme durch Ausnahmebehandlung
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 8. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 11. Vorlesung WS 2002/2003.
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Java-Kurs Übung Benutzeroberflächen und Graphik Besprechung der Hausaufgabe Applets Interaktive Eingabe und Darstellung mehrerer Polygonen.
Lösung der Hausaufgaben von Vorlesung 10 Universität Bonn Institut für Kartografie und Geoinformation Dipl.-Ing. Dörschlag, Dr. Gröger, Prof. Dr. Plümer.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 12. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 11. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 13. Vorlesung WS 2002/2003.
Java-Kurs Übung zAusnahmebehandlung: Exceptions zEin-/Ausgabe yDatenströme.
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 10. Vorlesung WS 2002/2003.
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 Übung Benutzeroberflächen und Graphik Besprechung der Hausaufgabe Applets Interaktive Eingabe und Darstellung mehrerer Polygonen.
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Java Programme nur ein bisschen objektorientiert.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Einführung in die Programmierung mit Java
 Präsentation transkript:

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 12. Vorlesung WS 2002/2003

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/032 Übersicht Besprechung der Hausaufgabe Einfache Graphik Fehler-/Ausnahmebehandlung (try-catch-Anweisung)

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/033 Hausaufgabe Programmiert eine Anwendung, die eine Temperatur von Celsius nach Fahrenheit und umgekehrt umrechnet. Die Ausgangstemperatur soll interaktiv eingegeben werden. Die Richtung der Berechnung soll über eine Checkbox eingestellt werden. Die Anwendung soll also so oder so ähnlich aussehen: Hinweis: das Programm zur Temperaturumrechnung findet Ihr in Vorlesung 3 (Musterlösung zur Hausaufgabe) Label (wie "Celsius") erzeugt mal mit Eine Checkbox erzeugt man mit. Die Methode boolean getState() der Klasse Checkbox gibt an, ob ein Häkchen da ist (true) oder nicht (false).

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/034 Lösung private void button1MouseClicked(java.awt.event.MouseEvent evt) { String CelsiusString = textField1.getText(); double CelsiusDouble; String FahrenheitString = textField2.getText(); double FahrenheitDouble; if( checkbox1.getState() ) { CelsiusDouble = Double.parseDouble(CelsiusString); FahrenheitDouble = CelsiusDouble * 9.0 / ; String s = "" + FahrenheitDouble; textField2.setText(s); } else{/* analog */ } } Vorsicht: äußerst unsicher!

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/035 Graphik: Methode "paint" Graphik wird erzeugt durch Überladen der Methode "paint" von "Frame": "paint" wird automatisch bei jedem Neuaufbau des Bildschirms aufgerufen "paint" erhält als Parameter ein Objekt der Klasse "Graphics" Methoden für "Graphics"-Objekt: –drawLine(int x1, int y1, int x2, int y2) –drawPolygon(int[] xPoints, int[] yPoints, int nPoints) –drawString(String str, int x, int y) –setColor(Color.cyan) – Paket "java.awt.*" muss importiert werden

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/036 Zeichnen in Methode "paint" Beispiel: public void paint(Graphics g) { g.setColor(Color.cyan); g.drawLine(30,40,100,80); g.drawLine(100,80,50,190); }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/037 Methoden der Klasse „Graphics“ drawPolygon(int[] xPoints, int[] yPoints, int nPoints) drawString(String str, int x, int y) drawPolyline(int[] xPoints, int[] yPoints, int nPoints) drawOval(int x, int y, int width, int height) drawRect(int x, int y, int width, int height) fillRect(int x, int y, int width, int height) weitere in JavaDoc

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/038 vorher: Größe des Frame ändern public MeinFrame() { initComponents (); pack (); setSize(300,300); }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/039 Übungsaufgabe Erzeugt ein Frame und zeichnet darin die französische Fahne

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0310 Alternative: Graphics2D Bessere Behandlung der Geometrie, von Koordinatentransformationen, Farben und Texten Graphics2D statt Graphics in draw (Typumwandlung) Graphics2D hat Methode draw(Shape s) –statt Methoden drawString, drawPolygon, drawPolyline bei Graphics Graphics2D hat Methode fill(Shape s) Shapes können sein: –Polygon, RectangularShape, Rectangle, Area, Line2D, GeneralPath, QuadCurve2D, CubicCurve2D, Ellipse2D,... –Shapes sind eigene Objekte –Paket: java.awt.geom

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0311 Beispiel public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; Point2D p1 = new Point2D.Double(50,30); Point2D p2 = new Point2D.Double(70,80); Point2D p3 = new Point2D.Double(240,180); Line2D l1 = new Line2D.Double(p1,p2); Line2D l2 = new Line2D.Double(p2,p3); g2d.setColor(Color.cyan); g2d.draw(l1); g2d.draw(l2); }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0312 Klasse „GeneralPath“ Polylinie bzw. Polygon „Unterklasse“ von Shape Methoden: –GeneralPath(): Konstruktor –append(Shape s, boolean connect): Fügt s an –lineTo(float x, float y): Fügt Punkt (x,y) an –closePath(): schliesst Polygon

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0313 Beispiel public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; Point2D p1 = new Point2D.Double(50,30); Point2D p2 = new Point2D.Double(70,80); Line2D l1 = new Line2D.Double(p1,p2); GeneralPath gp = new GeneralPath(); gp.append(l1,true); gp.lineTo(67,99); gp.closePath(); g2d.setColor(Color.cyan); g2d.draw(gp); g2d.setColor(Color.red); g2d.fill(gp); }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0314 Interaktives Zeichnen in „paint“ bisher: Zeichnen fest in „paint“ programmiert Interaktives Zeichnen: –LinkedList mit Shapes (Attribut des Frame) –„paint“ ruft für jedes Shape in der LinkedList die Methode „draw“ auf –Füllen der LinkedList mit Shapes in anderer Methode (z.B. formMouseClicked(MouseEvent evt)) und neuzeichnen (Methode repaint()).

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0315 Methode „Paint“ interaktiv public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; Iterator It = z.iterator(); //z ist LinkedList mit Shapes while(It.hasNext()) { Shape s = (Shape) It.next(); //Typkonvertierung g2d.draw(s); g2d.fill(s); }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0316 Ausnahmebehandlung

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0317 Motivation: Hausaufgabe für heute private void button1MouseClicked(java.awt.event.MouseEvent evt) { String CelsiusString = textField1.getText(); double CelsiusDouble; CelsiusDouble = Double.parseDouble(CelsiusString);.... } Programm stürzt ab, wenn Benutzer keine Zahl in Testfeld eingibt! Beispiel für eine Exception (Ausnahme)

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0318 Ausnahmen in Java Eine Ausnahme (engl. Exception) ist ein Ereignis, das während der Ausführung des Programms auftritt, und den normalen Fluss der Befehle unterbricht. Beispiele für Ausnahmesituationen: bei Berechnungen Division durch Null Mangel an Speicherplatz Zugriff auf Array-Elemente über die Obergrenze hinaus Schreib-/Lesefehler bei Ein- und Ausgabeoperationen –Diskette defekt –Netzwerkverbindung zusammengebrochen –Festplatte voll –zu öffnende Datei nicht vorhanden usw.

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0319 Ausnahmebehandlung in Java (I) Java unterstützt explizite Ausnahmebehandlung: –systematische und übersichtliche Trennung von normalem und fehlerbehandelndem Code Methoden können angeben, ob sie bzw. der in ihnen enthaltene Programmcode Ausnahmesituationen feststellen bzw. auslösen können. Im Falle einer Ausnahme wird ein sog. Exception-Objekt erzeugt und an den Aufrufer der Methode übergeben Eine Exception kann als ein durch eine Datenstruktur repräsentiertes Ereignis angesehen werden –Im Falle einer Ausnahmesituation wird diese mit Hilfe der Datenstruktur der Exception gemeldet.

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0320 Hausaufgabe (absturzsicher) private void button1MouseClicked(MouseEvent evt) { try{ String CelsiusString = textField1.getText(); double CelsiusDouble; CelsiusDouble = Double.parseDouble(CelsiusString); } catch(java.lang.Exception e) { textField1.setText(„ERROR“); } Hier steht der Programmcode, in dem Fehler auftreten können Reaktion auf Exception hier geht es sicher weiter

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0321 Motivation: Beispiel try{ String s = textField1.getText(); double i = Double.parseDouble(s); double d = 22/i; } catch(java.lang.Exception e){ textField1.setText(„ERROR“); } 1. Exception 2. Exception Wie kann differenziert auf jede Art von Exception (kein Double/Division durch 0) reagiert werden?

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0322 Lösung: Verschiedene Exception-Klassen try{ String s = textField1.getText(); double i = Double.parseDouble(s); double d = 22/i; } catch(java.lang.NumberFormatException nfe){ textField1.setText(„keine Zahl“); } catch(java.lang.ArithmeticException ae){ textField1.setText(„Division durch 0“); }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0323 Java-Exceptions Exceptions: Unterklasse der Klasse Throwable. Throwable (from lang)

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0324 Ausnahmebehandlung: Syntax Ausnahmebehandlung wird in Java über die try-Anweisung realisiert, die aus einem try-Block, einem oder mehreren catch- Konstrukten und optional einem finally-Konstrukt bestehen muss. Syntax: try {... } catch (Exceptiontyp1 name1) {... } catch (Exceptiontyp2 name2) {... } finally {... } Hier steht der Programmcode, in dem Fehler auftreten können Hier werden Fehler der Art Exceptiontyp1 abgefangen Hier werden Fehler der Art Exceptiontyp2 abgefangen Wird durchlaufen, egal ob ein Fehler auftrat oder nicht.

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0325 Übung im GIS-Labor Machen Sie folgendes Programm mittels try {...} catch (Exception e) {...} absturzsicher! class Ereignis1 { public static void main (String args[]) { int a; int b = 0; a = 10/b; System.out.println("Programmende wurde erreicht!"); }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0326 Ausnahmebehandlung in Java (III) Eine Methode muss Exceptions, die sie auslöst, nicht selber abfangen; dies kann auch in einer sie aufrufenden Methode erfolgen. –Exceptions werden auf diese Weise durch die Methoden-Aufrufkette quasi „nach oben“ propagiert. –Fängt eine Methode Exceptions nicht selbst ab, sondern leitet sie weiter, so muss die Exception bei der Definition der Methode angegeben werden. Anderenfalls resultiert ein Kompilierfehler. –Beispiel: Rückgabetyp Methodenname (Parameter) throws Exceptionklasse {... } –wird eine Exception auf oberster Ebene weitergereicht, bricht das Programm mit einer sog. Runtime-Exception ab

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0327 Vorteile durch Einsatz von Java-Exceptions Trennung des Fehlerbehandlungscodes vom normalen Programm. Höhere Absturzsicherheit von Programmen dadurch, dass Methoden erzwingen können, dass Aufrufer eine Fehlerbehandlung vorsehen müssen auf Grund der Exception-Klassenhierarchie können Fehler entweder gruppiert oder auch differenziert behandelt werden Weiterreichen von Fehlern über verschachtelte Methodenaufrufe hinweg

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0328 Beispiel zur getrennten Fehlerbehandlung ohne Exceptions void dateilesen() { öffnen(); if(öffnenok) { dateiInhaltlesen(); if (ok){ interpretieren;... } else fehler; } mit Exceptions try{ öffnen(); dateiInhaltlesen(); interpretieren(); } catch (Exception e) { fehlerbehandlung; }

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0329 Übungsaufgabe Schreiben Sie ein Programm, das ein Integer-Array mit 500 Elementen erzeugt. Füllen Sie das Array mit Zufallszahlen, die im Bereich von 0 bis 99 liegen sollen. Anschliessend soll eine Schleife mal 1.Eine Integer-Zufallszahl von 0 bis 510 erzeugen, 2. welche als Index in das Array verwendet wird und den an der entsprechenden Stelle befindlichen Wert x=a[zufallsindex] ausliest. 3. Dieser Wert x soll als Divisor für eine beliebige Division verwendet werden, z.B.: b = 10 / x Welche Fehler treten bei der Programmausführung auf? Ergänzen Sie das Programm um eine differenzierte Fehlerbehandlung, so dass es nicht mehr abbricht.

G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0330 Hausaufgabe Schreibt ein Programm, das einen Kreis (mit Radius 50) an jeder Stelle des Frame erzeugt, an die ihr mit der Maus klickt. Hinweise: –nutzt die "interaktive" Methode paint; die zu zeichnenden Objekte werden in einer LinkedList (Attribut Eures Frames) verwaltet –die Klick-Koordinaten stecken in dem ClickEvent –die Methode repaint() von Frame ruft paint() auf. –Kreise sind spezielle Ellipsen