38
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörs Einführung in die Programmierung mit Java 10. Vorlesung WS-03/04

Einführung in die Programmierung mit Java

  • Upload
    kosey

  • View
    25

  • Download
    1

Embed Size (px)

DESCRIPTION

Einführung in die Programmierung mit Java. 10. Vorlesung WS-03/04. Formatieren des Quellcodes. Regeln: Klassennamen fangen mit GROßEN Buchstaben an. Attributs-, Variablen- und Methodenname fangen mit kleinen Buchstaben an. - PowerPoint PPT Presentation

Citation preview

Page 1: Einführung in die Programmierung mit Java

Institut für Kartographie und GeoinformationProf.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk DörschlagInstitut für Kartographie und GeoinformationProf.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag

Einführung in dieProgrammierung mit Java

10. Vorlesung WS-03/04

Page 2: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Formatieren des Quellcodes

Regeln:Regeln:

1. Klassennamen fangen mit GROßEN Buchstaben an.2. Attributs-, Variablen- und Methodenname fangen mit

kleinen Buchstaben an.3. Nach jedem Semikolon ; (außer in for-Schleifen) und

nach jeder geschweiften Klammer auf { und zu } folgt ein Zeilenumbruch !

Page 3: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Formatieren des Quellcodes- und warum ?? -

1. Bessere Lesbarkeit2. Einfacheres Finden von Fehlern !

class Punkt {public double x,y,z;public Punkt(double x, double y, double z){this.x=x;this.y=y;this.z=z;}public distanz_zu(Punkt anderer){double delta_x=this.x-anderer.x,double delta_y=this.y-anderer.y;return(Math.sqrt(delta_x*delta_x+delta_y*delta_y));}

}

Page 4: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Formatieren des Quellcodes- und warum ?? -

1. Bessere Lesbarkeit2. Einfacheres Finden von Fehlern !

class Punkt {public double x,y,z;public Punkt(double x, double y, double z){

this.x = x;this.y = y;this.z = z;

}public distanz_zu(Punkt anderer){

double delta_x = this.x-anderer.x,double delta_y = this.y-anderer.y;return(Math.sqrt(delta_x*delta_x+delta_y*delta_y));

}}

Page 5: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Formatieren des Quellcodes- und warum ?? -

1. Bessere Lesbarkeit2. Einfacheres Finden von Fehlern !3. Die Fehlermeldungen des Compilers sind ZEILEN

spezifisch

class Punkt {public double x,y,z;public Punkt(double x, double y, double z){this.x=x;this.y=y;this.z=z;}public distanz_zu(Punkt anderer){double delta_x=this.x-anderer.x,double delta_y=this.y-anderer.y;return(Math.sqrt(delta_x*delta_x+delta_y*delta_y));}

}

Page 6: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Formatieren des Quellcodes- und warum ?? -

1. Bessere Lesbarkeit2. Einfacheres Finden von Fehlern !3. Die Fehlermeldungen des Compilers sind ZEILEN

spezifisch

class Punkt {public double x,y,z;

...

public distanz_zu(Punkt anderer){double delta_x=this.x-anderer.x,double delta_y=this.y-anderer.y;return(Math.sqrt(delta_x*delta_x+delta_y*delta_y));

}}

Page 7: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Fehler während des Ablaufs- Beispiel -

public class Polygon {private Punkt[] eckpunkt;

public Polygon(){super();

}

public void leeres_Polygon( int anzahl_eckpunkte){eckpunkt = new Punkt[ anzahl_eckpunkte];

}

public void punkt_einfuegen( int position, Punkt punkt){eckpunkt[ position] = punkt;

}}

mögliche Fehler

negative Anzahl

Position außerhalb des

Arrays

Array noch nicht angelegt

Page 8: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Fehlertypen- z.B. NullPointerException, ClassCastException -

Exception Der universelle Vater aller Fehlermeldungen. Von dieser Klasse sind alle anderen abgeleitet.

NullPointerException ( extends Exception)Tritt auf, wenn ein Objekt benutzt werden soll, obwohl esnoch nicht angelegt wurde.

Student student;student.drucke_ausweis();

Beispiel :Beispiel :

Page 9: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Fehlertypen- z.B. NullPointerException, ClassCastException -

ArrayIndexOutOfBoundsException ( extends Exception)Tritt auf, wenn auf ein Arrayelement zugegriffen wird, das nicht existiert.

Student student = new Student[2]Student student[3] = new Student(“Dirk“,“Dörschlag“);

Beispiel :Beispiel :

ClassCastException ( extends Exception)Tritt auf, wenn ein Objekt mittels expliziter Typenkonvertierung in eine Typ umgewandelt wird, welcher nicht zu seinen Ahnen gehört

Student student = new Student(“Dirk“,“Dörschlag“); Dozent dozent = (Dozent) student;

Beispiel :Beispiel :

Page 10: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Fang den Fehler und handle- try{ anweisung } catch ( fehler ) { warnung } -

try{anweisung(en);

}catch( Fehlertyp e){

anweisung(en);}

Syntax :Syntax : Anweisungen, bei denen ein Fehler auftreten kann.

Anweisungen, die ausgeführt werden, sobald ein Fehler

aufgetreten ist

Page 11: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

public class Polygon {private Punkt[] eckpunkt;

...

public void punkt_einfuegen( int position, Punkt punkt){try{

eckpunkt[ position] = punkt;}catch( Exception e){

System.out.println(“Polygon.punkt_einfuegen()“+ “::Ein Fehler wurde erkannt!“);

}}...

}

Fang den Fehler und handle- try{ anweisung } catch ( fehler ) { warnung } -

Fehlertyp =irgend ein Fehler

Page 12: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Fang den Fehler und handle- Differenzierung nach Fehlertyp -

try{anweisung(en);

}catch( Fehlertyp_1 f1){

anweisung(en);}catch( Fehlertyp_2 f2){

anweisung(en);}

Syntax :Syntax : Anweisungen, bei denen ein Fehler auftreten kann.

Anweisungen, die ausgeführt werden,

sobald ein Fehlertyp_2 aufgetreten ist

Anweisungen, die ausgeführt werden,

sobald ein Fehlertyp_1 aufgetreten ist

Page 13: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

public class Polygon {

public void punkt_einfuegen( int position, Punkt punkt){try{

eckpunkt[ position] = punkt;} catch( NullPointerException npe){

System.out.println(“Polygon.punkt_einfuegen()“+ “::Eckpunkte nicht angelegt!“);

}catch( Exception e){

System.out.println(“Polygon.punkt_einfuegen()“+ “::Ein Fehler wurde erkannt!“);

}}

}

Fang den Fehler und handle- try{ anweisung } catch ( fehler ) { warnung } -

Page 14: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

public class Polygon {

public void punkt_einfuegen( int position, Punkt punkt){try{

eckpunkt[ position] = punkt;} catch( Exception e){

System.out.println(“Polygon.punkt_einfuegen()“+ “::Ein Fehler wurde erkannt!“);

}catch( NullPointerException npe){

System.out.println(“Polygon.punkt_einfuegen()“+ “::Eckpunkte nicht angelegt!“);

}}

}

Fang den Fehler und handle- try{ anweisung } catch ( fehler ) { warnung } -

DieReihenfolge

istwichtig !

immer erst den spezielleren Fehler fangen !

da spezieller !

Page 15: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Fehlermeldungen weiterwerfen- throws Fehlertyp -

modifier class Klassenname {...

modifier rueckgabetyp methodenname( parameter)throws Fehlertyp_1(, Fehlertyp_2, ...) {

anweisung(en);}...

}

Syntax :Syntax :

die Methode wird an der Stelle abgebrochen, an der der Fehler auftritt !

Page 16: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Fehlermeldungen weiterwerfen- throws fehler -

public class Polygon {private Punkt[] eckpunkt;

...

public void leeres_Polygon( int anzahl_eckpunkte)throws Exception{

eckpunkt = new Punkt[ anzahl_eckpunkte];}...

}

Page 17: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Selbst Fehler werfen- throw( fehler); -

Syntax :Syntax :

throw new Fehlertyp(Parameter_des_Konstruktors);

mit Aufruf einer throw-Anweisung wird die Methode an dieser Stelle abgebrochen !

Eine Methode, in der eine throw-Anweisung enthalten ist, muss diese Fehler weiterwerfen (throws) oder behandeln (try{}catch(){}) !

Page 18: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Selbst Fehler werfen- throw( fehler); -

public class Polygon {private Punkt[] eckpunkt;...

public void leeres_Polygon( int anzahl_eckpunkte)throws Exception{

if( anzahl_eckpunkte < 1){throw( new Exception(

“Polygon.leeres_Polygon(#)::“+“zu wenig Eckpunkte“));

}eckpunkt = new Punkt[ anzahl_eckpunkte];

}...

}

Page 19: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Java und ASCII-Dateien

Mein Programm

MesswerteMesswerte

ErgebnisseErgebnisse

PNR X Y Z

Page 20: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Datei zum lesen öffnen

Syntax :Syntax :FileReader fr = new FileReader(“Dateiname“);

FileReader ermöglicht das zeichenweise lesen von Dateiinhalten.

unpraktisch für ASCII-Dateien mit Messwerten oder Texten

Java und ASCII-Dateien- öffnen und (ein-)lesen -

Page 21: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Besser :

Syntax :Syntax : BufferedReader br = new BufferedReader(new FileReader(“Dateiname“));

BufferedReader fasst die Zeichen aus dem FileReader zu Zeichenketten zusammen und puffert die Leseoperationen.

Der BufferedReader verfügt u.a. über die Methoden:br.readLine() :: auslesen der nächsten Zeile (bis zum nächsten

Zeilenumbruch) in einen Stringbr.close() :: schließen der Datei

alle Methoden und der Konstruktor werfen Fehler vom Typ IOException im Falle eines Fehlers. Weitere Methoden können der JavaDoc entnommen werden.

Java und ASCII-Dateien- öffnen und (ein-)lesen -

Page 22: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Java und ASCII-Dateien- öffnen und (ein-)lesen -

Beispiel :Beispiel :import java.io.*;

class Polygon(){private Punkt[] punkt;...public void load(String filename){

BufferedReader br;String line;int i = 0;try{

br = new BufferedReader(new FileReader( filename)); while( (line = br.readLine()) != null){

punkt[i++] = new Punkt( line);}br.close();

}catch( FileNotFoundException fnfe){

System.out.println(“The file :‘“+ filename +“‘ does not exist“);}catch( IOException ioe){

ioe.printStackTrace();}}}

Page 23: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Java und ASCII-Dateien- öffnen und (ein-)lesen -

Beispiel :Beispiel :import java.io.*;

class Polygon(){private Punkt[] punkt;...public void load(String filename)throws IOException{

BufferedReader br = new BufferedReader( new FileReader( filename));String line;int i = 0;

while( (line = br.readLine()) != null){punkt[i++] = new Punkt( line);

}br.close();

}}

Page 24: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Exkurs- Strings in Double-Werte wandeln -

Beispiel :Beispiel :import java.io.*;

class Distanz_Tabelle(){private double[] distanz;...public void load(String filename)throws IOException{

BufferedReader br = new BufferedReader( new FileReader( filename));String line;int i = 0;

while( (line = br.readLine()) != null){distanz[i++] = Double.parseDouble( line);

}br.close();

}}

Page 25: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++;i++;first = last + 1;first = last + 1;

}}

Page 26: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++;i++;first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = null= nullparts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 0= 0

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = null= nullparts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 0= 0

Page 27: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++; i++; first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 0= 0

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 0= 0

Page 28: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++; i++; first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 1= 1

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 0= 0i i = 1= 1

Page 29: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++; i++; first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 5= 5i i = 1= 1

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 4= 4first first = 5= 5i i = 1= 1

Page 30: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Exkurs- Strings zerlegen -

Beispiel :Beispiel :

String line = “10.0;20.0;30.0;“;String line = “10.0;20.0;30.0;“;String[] parts = String[] parts = newnew String[3]; String[3];

intint first = 0, last, i = 0; first = 0, last, i = 0;

whilewhile(((last = line.indexOf(“;“, first)) != -1(last = line.indexOf(“;“, first)) != -1){){parts[i] = line.substring( first, last);parts[i] = line.substring( first, last);i++; i++; first = last + 1;first = last + 1;

}}

DEBUGGING ...

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 9= 9first first = 5= 5i i = 1= 1

line line = “10.0;20.0;30.0;“= “10.0;20.0;30.0;“parts[0] parts[0] = “10.0“= “10.0“parts[1] parts[1] = null= nullparts[2] parts[2] = null= nulllast last = 9= 9first first = 5= 5i i = 1= 1und so weiter ...

Page 31: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Java und ASCII-Dateien- öffnen und schreiben -

Datei zum Schreiben öffnen

Syntax :Syntax :FileWriter fr = new FileWriter(“Dateiname“);

FileWriter ermöglicht das Schreiben von Dateiinhalten.

Page 32: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Java und ASCII-Dateien- öffnen und schreiben -

Datei zum schreiben öffnen

Syntax :Syntax :BufferedWriter bw = new BufferedWriter (new FileWriter(“Dateiname“));

• FileWriter ermöglicht das Schreiben von Dateiinhalten.• BufferedWriter puffert das Schreiben. Es wird nur noch in die Datei

geschrieben, wenn die Methode flush() oder close() aufgerufen wird. bessere Performance !

Page 33: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Java und ASCII-Dateien- öffnen und schreiben -

Datei zum schreiben öffnen

Syntax :Syntax :PrintWriter pw = new PrintWriter(

new BufferedWriter ( new FileWriter(“Dateiname“)

) );

• FileWriter ermöglicht das schreiben von Dateiinhalten.• BufferedWriter puffert das Schreiben. Es wird nur noch in die Datei

geschrieben, wenn die Methode flush() oder close() aufgerufen wird.

• PrintWriter ermöglicht die Ausgabe aller primitiven Datentypen als Strings.

Page 34: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Java und ASCII-Dateien- öffnen und schreiben -

Beispiel :Beispiel :class Polygon{

private Punkt[] punkt;...public void write(String filename)throws IOException{

PrintWriter pw = new PrintWriter( new BufferedWriter(

new FileWriter( filename)));for( int i = 0; i < punkt.length; i++){

pw.write( punkt[i].gibID());pw.write( “;“);pw.write( punkt[i]. gibX());pw.write( “;“);pw.write( punkt[i]. gibY());pw.writeln( “;“);

}pw.close();

}}

Page 35: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

ENDE

NOCH FRAGEN ???

Page 36: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Übungsaufgabe

Schreibt eine Klasse Punkt mit den Attributen pnr, x und y, die die Methoden distanz_zu( Punkt other) und ausgabe() haben soll. Fange in der Methode distanz_zu(Punkt other) NullPointerExceptions ab.

Schreibt eine Klasse Polygon, die unter Verwendung eines Arrays Punkte [punkt_hinzu(Punkt punkt)] aufnehmen und mittels der Methode umfang() ihren aktuellen Umfang berechen kann und zudem eine Methode ausgabe() besitzt. Eventuell mögliche Exceptions sind zu fangen !

Teste die Funktionen in einer Klasse Test_Main.

Page 37: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Hausaufgabe(1/2)

Ergänze die Klasse Punkt aus der Übung um den Konstruktor Punkt( String line), wobei gilt: line=“pnr;x-wert;y-wert;“.(siehe auch eine Zeile der polygon.txt !!)

Ergänze die Klasse Polygon aus der Übung um eine Methode lade(String dateiname) zum Einlesen eines Polygons aus einer Datei und um eine Methode datei_ausgabe(String dateiname) zum Ausgeben der Punktnummern der Punkte im Polygon, sowie des Polygonumfangs in eine Datei.

Teste die Funktionen in einer Klasse Test_Main.

Page 38: Einführung in die Programmierung mit Java

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Hausaufgabe(1/2)

polygon.txtpolygon.txt

1;2.0;3.0;2;4.0;3.0;3;8.0;9.0;4;7.0;10.0;5;1.0;6.0;