Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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.

Ähnliche Präsentationen


Präsentation zum Thema: "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."—  Präsentation transkript:

1 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

2 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/032 Übersicht Besprechung der Hausaufgabe Allgemeine Listen/Suchstrukturen (Fortsetzung) Benutzeroberflächen (Fenster, Menüs, Buttons, Texteingabefenster,...)

3 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/033 Hausaufgabe Schreibt eine Methode der Klasse Polygon, die den Flächeninhalt eines Polygons berechnet. Hinweise: Orientiert euch an der Methode "Umfang" Formel zur Berechnung des Flächeninhalts (Gaussche Flächenformel) in Diskreter Mathe, Vorlesung 2: k = 1 5 (x k - x k+1 )(y k + y k+1 ) F = 1 2 

4 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/034 Wh.: Klasse "Polygon": Methode Umfang public class Polygon{ protected LinkedList punktliste; public double umfang() { double umfang = 0; Iterator ersterIt = punktliste.iterator(); Iterator zweiterIt = punktliste.iterator(); zweiterIt.next(); Punkt ersterPt, zweiterPt; while(zweiterIt.hasNext()) { ersterPt = (Punkt) ersterIt.next(); zweiterPt = (Punkt) zweiterIt.next(); umfang = umfang + ersterPt.abstand(zweiterPt); } ersterPt = (Punkt) punktliste.getLast(); zweiterPt = (Punkt) punktliste.getFirst(); umfang = umfang + ersterPt.abstand(zweiterPt); return umfang;} }

5 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/035 Klasse "Polygon": Methode Flächeninhalt public class Polygon{ protected LinkedList punktliste; public double flaecheninhalt() { double f = 0; Iterator ersterIt = punktliste.iterator(); Iterator zweiterIt = punktliste.iterator(); zweiterIt.next(); Punkt ersterPt, zweiterPt; while(zweiterIt.hasNext()) { ersterPt = (Punkt) ersterIt.next(); zweiterPt = (Punkt) zweiterIt.next(); f = f + (ersterPt.x() - zweiterPt.x()) * (ersterPt.y() + zweiterPt.y()); } ersterPt = (Punkt) punktliste.getLast(); zweiterPt = (Punkt) punktliste.getFirst(); f = f + (ersterPt.x() - zweiterPt.x()) * (ersterPt.y() + zweiterPt.y()); return Math.abs(f * 0.5);} }

6 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/036 Wh.: Listen und Mengen: vordefinierte Klassen AbstractCollection Set TreeSetHashSetLinkedListArrayList sortiert keine Duplikate AbstractMap Map TreeMapHashMap sortiert Einfache Container-DatenstrukturenAssoziative Datenstrukturen

7 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/037 Wh.: Laufzeiten / Komplexität const.(mittel)const.HashMap O(log n) TreeMap const. (mittel)const.HashSet O(log n) TreeSet O(n)const.LinkedList/ ArrayList Suchen mit KeySuchenEinfügen/ Löschen Klasse

8 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/038 HashMaps Speichern Objekte (Klasse Object) in Struktur Zuordnung eines (Such-)Schlüssel zu Objekt (Key-Value-Pair) effizientes Suchen über Schlüssel (Key) Key muss eindeutig sein (sonst wird letzter Eintrag mit identischem Key überschrieben) Methoden: –void put(Object Key, Object Value) //Einfügen –Object get(Object Key) //Suchen –void clear() –int size() Weitere Methoden: JavaDoc

9 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/039 Beispiel zu HashMap //Speicherung von Studenten in einer Struktur, in der //Studenten effizient nach Namen gesucht werden können import java.util.*;..... HashMap h = new HashMap(); //Erzeugen von Schlüsseln und Einfügen h.put("Schmitz",new Student("Schmitz","Peter")); h.put("Meyer",new Student("Meyer","Thomas")); h.put("Schulz",new Student("Schulz","Bernd")); h.put("Bauer",new Student("Bauer","Bettina"));..... Student s = (Student) h.get("Schulz");

10 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0310 Wrapper-Klassen Keys einer HashMap: Unterklasse von Object Problem: einfache Datentypen (int, long, double,...) sind keine Unterklassen von Object Lösung: Wrapper-Klassen: "Verpacken" eines einfachen Datentyps in Klasse Welche gibt es? –Klasse Integer: Bsp.: Integer i = new Integer(1234); –Klasse Double: Bsp.: Double d = new Double(1234.565); –ebenso für andere einfache Datentypen (char, boolean,...) Methoden der Wrapper-Klassen: JavaDoc

11 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0311 Beispiel 1 zu HashMaps mit Wrapper-Klassen import java.util.*;..... HashMap h = new HashMap(); //Erzeugen von Schlüsseln und Einfügen h.put(new Integer(45678),new Student("Schmitz","Peter")); h.put(new Integer(76453),new Student("Meyer","Thomas")); h.put(new Integer(43234),new Student("Schulz","Bernd")); h.put(new Integer(56784),new Student("Bauer","Bettina"));..... Student s = (Student) h.get(new Integer(76453));

12 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0312 Beispiel 2 zu HashMaps mit Wrapper-Klassen import java.util.*;..... HashMap h = new HashMap(); //Erzeugen von Schlüsseln und Einfügen for(int matNr = 1 ; matNr < 100000 ; matNr = matNr + 1) { Student s = new Student("Schmitz","Peter",matNr); Integer key = new Integer(matNr); h.put(key, s); } //Suche: Student s = (Student) h.get(new Integer(76453));

13 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0313 Benutzeroberflächen: Bibliotheken Java-Klassenbibliotheken: AWT (Abstract Window Toolkit) –historisch erste Java-Klassenbibliothek für Oberflächen –Aussehen abhängig vom Betriebssystem –Paket java.awt.* Swing –Erweiterung des AWT –Aussehen unabhängig vom Betriebssystem –Paket javax.swing.* Weitere –Java 2D /3D –Drag and Drop –....

14 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0314 Erzeugen einer Anwendung ("Frame")

15 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0315 Ergebnis: Unterklasse von "Frame" Form

16 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0316 Einfügen eines "Button" 1. Klick 2. Klick

17 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0317 Einfügen eines Menüs 1. Klick 2. Klick

18 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0318 Ergänzen des Menüs um "MenueItems"

19 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0319 Ausführen des Programms

20 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0320 Verknüpfen von MenueItem mit Methode

21 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0321 Ergebnis: Methode zu MenueItem

22 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0322 Verknüpfen von Button mit Methode

23 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0323 Ergebnis: Methode zu Button (bei Mausklick)

24 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0324 Übungsaufgabe Programmiert eine Anwendung mit einem Button. Bei Klick auf diesen Button soll der Text "Hallo" ausgegeben werden.

25 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0325 Ändern des Layouts 1. Klick 2. Klick

26 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0326 Ausführen des Programms

27 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0327 Einfügen eines Textfeldes

28 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0328 Ausführen des Programms

29 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0329 Erzeugte Attribute

30 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0330 Literatur zu Forte Forte QuickStart Guide (PDF) Forte User Guide (PDF) Forte Tutorials Guide (PDF) zu finden auf der WWW-Seite dieser Veranstaltung

31 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0331 Anmerkung bisher (ohne Frames): –Erzeugen einer Klasse mit Methode "main" –eigener Programmcode in "main" (oder in Methoden, die von "main" aus aufgerufen werden) mit Frames: –Erzeugen einer Unterklasse von Frame (JFrame) –eigener Programmcode in Methode, die auf Button- Klick/Menuewahl/sonst. Ereignis reagiert –eine "main" gibt es hier auch, ist aber für uns nicht relevant –zusätzlich wird eine Frame-Datei erzeugt

32 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0332 Eigenschaften: der Component Inspector

33 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0333 Methoden für Textfelder Methoden der Klasse java.awt.TextField: String getText() void setText(String) weitere Methoden: Javadoc Beispiel: java.awt.TextField t;.................... String st = t.getText(); t.setText(st+st);

34 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0334 Übungsaufgabe Schreibt eine Anwendung mit einem Button und zwei Textfeldern, so dass beim Klicken des Buttons der Text des einen Textfeldes im anderen Textfeld in Grossbuchstaben erscheint: Hinweis: –die Methode toUpperCase() wandelt einen String in Grossbuchstaben um –Das Klicken auf einen Button löst den Event Events - Mouse - MouseClicked aus

35 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0335 Weitere Methoden Methode der Klasse java.awt.Frame: void setSize(int, int ) –z.B. setSize(500,500); void setBackground(Color) –z.B. setBackground(java.awt.Color.magenta); Methoden der Klasse java.awt.Button: void setLabel(String) void setForeground(Color) void setBackground(Color) weitere Methoden: Javadoc

36 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0336 Umwandeln von String in Zahl typische Anwendung: mit Eingabe in Textfeld soll gerechnet werden. Methode: static int parseInt(String) der Klasse Integer Beispiel: java.awt.TextField tf;........ String s = tf.getText(); int i = Integer.parseInt(s); int j = 3*i + 8; Vorsicht: Wenn im String keine "Zahl" steht, stürzt das Programm ab (Lösung: Ausnahmebehandlung, Exceptions)

37 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0337 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).


Herunterladen ppt "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."

Ähnliche Präsentationen


Google-Anzeigen