Top Banner
Java-Intensivkurs WS07/08 Folie 1 Ashraf Abu Baker [email protected] nn Wolfgang Goethe-Universität essur für Graphische Datenverarbeitung bereich Informatik und Mathematik . Dr. Detlef Krömker
50

Ashraf Abu Baker [email protected]

Mar 16, 2016

Download

Documents

ellery

Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker. Einführung in die OOP in Java. WS 07/08. Ashraf Abu Baker [email protected]. Interfaces. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 1

Ashraf Abu [email protected]

Johann Wolfgang Goethe-UniversitätProfessur für Graphische DatenverarbeitungFachbereich Informatik und MathematikProf. Dr. Detlef Krömker

Page 2: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 2

Interfaces

Ein Interface (Schnittstelle) besteht aus einer Sammlung von statischen Konstanten und abstrakten Methoden, die als public deklariert sind

Ein Interface kann als abstrakte Klasse aufgefasst werden, die nur abstrakte Methodendeklarationen und statische Kostanten umfasst

Interfaces werden mit dem Schlüsselwort interface deklariert, dürfen keine Konstruktoren definieren und können daher nicht instanziiert werden

Page 3: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 3

Interfaces

Alle in einem Interface definierten Attribute sind automatisch statische Konstanten, die initialisiert werden müssen

public interface GeometricObjectInterface {//Interface declaration

public static final int CIRCLE=0;public static final int RECTANGLE=1;public static final int SQUARE=2;

public int getType();

public abstract float getCircumference();//Berechnet den Umfang eines geometrischen Objektes}

Page 4: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 4

Interfaces

Interfaces werden erstellt, um von Klassen implementiert zu werden

Eine Klasse, die ein Interface implementiert, muss alle Methoden des Interfaces überschreiben:public class Circle implements GeometricObjectInterface{

public float radius;

public Circle(float radius){this.radius=radius;}

public int getType(){return GeometricObjectInterface.CIRCLE;}

public float getCircumference(){return (float)(2*Math.PI*radius);}}

Page 5: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 5

Interfaces

public class Square implements GeometricObjectInterface{

public float side;

public Square(float side){this.side=side;}

public float getCircumference(){ return 4*side;}

public int getType(){return GeometricObjectInterface.SQUARE;

}}

Page 6: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 6

Interfaces

Eine Klasse, die nicht alle Methoden eines Interfaces implementiert, muss als abstract deklariert werden

Interfaces können wie Klassen voneinander abgeleitet werden

Interfaces können als ein restriktiver Mechanismus für Mehrfachvererbung verwendet werden

So kann eine Klasse mehrere Interfaces implementieren. Sie muss dann zu jedem Interface alle darin definierten Methoden implementieren:

Page 7: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 7

Das Interface Comparable

Eine Klasse, die dieses Interface implementiert, definiert eine Ordnung auf ihre Objekte und macht sie paarweise vergleichbar

Ihre Objekte können z.B. von Sortiermethoden sortiert werden

public interface Comparable<T>{public int compareTo(T o);}

Page 8: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 8

Comparable

public class ComparablePoint extends Point implements Comparable{

public float x1;public float y1;

@Overridepublic int compareTo(ComprablePoint p) {

if(x1<p.x1 || this.y1<p.y1) return -1;if(x1==p.x1 || this.y1==p.y1) return 0;return 1;

}}

Page 9: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 9

Comparable

Alle Wrapper-Klassen und viele andere Klassen wie String, Date, File… implementieren das Comparable Interface

Page 10: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 10

Namenskonventionen

Ein Namenskonvention ist eine Empfehlung wie Pakete, Klassen, Variablen, Methoden, Interfaces… etc. sinnvoll bezeichnet werden sollen

Paketnamenskonvention:

Paketnamen sollten aus Kleinbuchstaben bestehenSollten kurze Nomen (Substantive) seinSie dürfen auch Ziffern enthaltenBeispiel:

de.frankfurt.cs.gdv.visian3d

Page 11: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 11

Namenskonventionen

Klassennamen:Beginnen mit einem Großbuchstaben und sollten Nomen (Substantive) sein

Besteht ein Klassenname aus mehreren Silben wie z.B. BinaryNode, RedBlackTree so beginnt jeder Silbe beginntebenfalls mit einem Buchstaben

Beispiele:

Point, ComplexNumber, VisualBinarySearchTree…

Page 12: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 12

Namenskonventionen

Methodennamen:Beginnen mit KleinbuchstabenSollten Verbe get(), run(), save()… sein

Besteht ein Methodenname aus mehreren Silben wie z.B. getUserName() so beginnt jeder Silbe beginntmit einem Buchstaben

Boolesche Funktionen sollten mit „is“, „has“, „can“, etc. anfangen

run(), getLeftChild(),setName(), isReady(), shouldWait()..

Page 13: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 13

Namenskonventionen

Variablennamen:

Beginnen mit Kleinbuchstaben

Darauffolgende Silben fangen mit einem Großbuchstaben an

Sie sollten kurz und ausdrucksstark sein

Boolesche Variablen sollten mit „is“, „has“, „can“ etc. anfangen

age, userName, isVisible, hasTicket, canStart, shouldRestarted….

Page 14: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 14

Namenskonventionen

Konstantennamen:

Bestehen aus GroßbuchstabenSilben werden durch einen Unterstrich getrennt

SIZE, MAX_VALUE, EDGE_COLOR

Page 15: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 15

Namenskonventionen

Interfaces :Beginnen mit einem Großbuchstaben und sollten Nomen (Substantive) sein

Silben beginnen ebenfalls mit einem Buchstaben

GeometricObjectInterface

Page 16: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 16

Object, Math und String

Object ist die Oberklasse aller Java-Klassen Jede Klasse, die nicht explizit von einer anderen Klasse abgeleitet wird, wird implizit von Object abgeleitet

Klasse Object verfügt über zahlreiche Methoden:

class A { }//ist äquivalent zu class A extends Object { }

Page 17: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 17

Object

public String toString():Liefert eine String-Darstellung eines Objektes zurück Wird z.B. von der Methode System.out.println() aufgerufen

Standardimplementierung der Methode liefert den Klassennamen und den HashCode des Objektes im Hexdezimal-Format als String zurück:

//Standardimplementierung von toString() in der Klasse Objectpublic String toString(){

return getClass().getName()+"@"+Integer.toHexString(hashCode());}

Page 18: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 18

Object

Will man eine sinnvolle String-Darstellung des Objektes haben, dann muss die Methode überschrieben werden:

Bankkonto alexKonto=new Bankkonto(35870,"Alex M.",2103);System.out.println(alexKonto);

Ausgabe: Bankkonto@3e25a5

Page 19: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 19

Object

Überschreibung der toString-Methode in Bankkonto

//Überschreibung von toString() in Bankkontopublic String toString(){

return "Kontoinformation:\r\n"+ "Kontonummer: "+kontoNummer+"\r\n"+ "Kontoinhaber(in): "+inhaber+"\r\n"+ "Kontostand: "+kontoStand+" €\r\n";

}Bankkonto alexKonto=new Bankkonto(35870,"Alex M.",2103);System.out.println(alexKonto);Ausgabe:Kontoinformation:Kontonummer: 2150Kontoinhaber(in): Alex M.Kontostand: 12350.0

Page 20: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 20

Objektvergleiche

Zwei Möglichkeiten, Objekte zu vergleichen Mit "==" boolean equals(Object o)

Für primitive Variablen überprüft „==„ , ob die beiden Variablen den gleichen Wert haben Für Referenzen überprüft „==„ , ob zwei Referenzen auf dasselbe Objekt verweisen

- Es werden die Referenzwerte (Speicheradressen) verglichen

Page 21: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 21

Objektvergleiche

boolean equals(Object o)Überprüft zwei verschiedene Objekte auf inhaltliche Gleichheit(Vergleicht die Objekte nicht die Referenzen)

Die standardmäßige Implementierung von boolean equals(Object o) führ lediglich einen Referenzvergleich durchund ist somit äquivalent zu „==„ boolean equals(Object o) sollte in der eigenen Klasse überschrieben werden

//Standardimplementierung von equals(Object o) in der Klasse Objectpublic boolean equals(Object o){

return this==o;}

Page 22: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 22

HashCode

Ein HashCode ist:

Ein Integerwert

Repräsentiert die Eindeutigkeit eines Objektes Zwei Objekte, die gemäß der equals()-Methoden gleich sind, müssen den gleichen HashCode haben

Wird verwendet in den Collections (Datenstruktren), die hashbasiert sind

Page 23: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 23

Math

Enthält eine Sammlung von mathematischen Methoden und Kostanten Ist als final deklariert darf nicht abgeleitet werden

Enthält nur einen privaten Konstruktor kann nicht instanziiert werden

//Kompilierfehler: The constructor Math() is not visibleMath math=new Math();

Page 24: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 24

Math

Methode Rückgabeabs(int i) Absolutbetrag von i

ceil(double d) Nächste Ganzzahl größer gleich i

exp(double a) ea

floor(double d) Nächste Ganzzahl kleiner gleich i

log(double a) ln(a)

max(int i1, i2) Maximum der Zahlen i1 und i2

min(int i1, i2) Minimum der Zahlen i1 und i2

pow(double a, double b) ab

random() Eine Zahl aus dem Intervall[0.0,1.0]

sin(double d) Sinus-Funktion

cos(double d) Kosinus-Funktion

tan(double d) Tangens-Funktion

round(double d) Rundet d zur nächsten Ganzzahl

Page 25: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 25

String

Eine Zeichenkette (String) in Java ist eine indizierte geordnete Folge von Unicode-Zeichen Indexierung beginnt bei 0

Strings sind unveränderbar (immutable)

Strings ist final

Ein String-Objekt kann entweder mit einem Konstruktor der Klasse String oder als String-Literal erstellt werden

Page 26: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 26

String

public static void stringCompare(){String s1=new String("use the equals()-method to compare strings");String s2=new String("use the equals()-method to compare strings");

String s3="use the equals()-method to compare strings";//String-LiteralString s4="use the equals()-method to compare strings";//String-Literal

boolean s1_s2= false , s3_s4=false s2_s3=false;if(s1==s2) s1_s2=true; if(s3==s4) s3_s4=true; if(s2==s3) s2_s3=true; System.out.println(s1_s2+" "+s3_s4+" "+s2_s3);s2=s3;if(s2==s3) s2_s3=true;System.out.println(s2_s3);

Ausgabe: false true false true

Page 27: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 27

String

int length(): Liefert die Länge der Zeichenkette zurück

charAt(int index): Liefert das Zeichen an Position index zurück

- index muss zwischen 0 und length()-1 liegen,sonst wird eine java.lang.StringIndexOutOfBoundsException geworfen

substring(int begin, int end): Liefert den Teilstring zurück, der am Index begin beginnt und am Index end-1 einschließlich endet

substring(int begin): Liefert den Teilstring von der angegebenen Position bis zum Ende des Strings zurück

Page 28: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 28

String

trim(): Liefert den String zurück, der entsteht, wenn alle Leerzeichen am Anfang und am Ende des Strings entfernt werden

equalsIgnoreCase(): Vergleicht String miteinander ohne Groß-/Kleinschreibung zu beachten

toLowerCase() Wandelt den String in Kleinbuchstaben um, liefert ihn zurück

toUpperCase(): Wandelt den String in Großbuchstaben um, liefert ihn zurück

Page 29: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 29

String

replace(char oldChar, char newChar): Ersetzt alle vorkommen des Zeichens oldChar durch das Zeichen newChar:

Page 30: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 30

Exceptions

Ausnahmen (Exceptions) sind Java-Klassen zur Erkennung und Behandlung von Laufzeitfehlern

Ein Laufzeitfehler ist ein Fehler, der während der Ausführung eines Programms auftritt und während des Kompiliervorganges nicht erkannt werden kann

Ein Exception-Objekt repräsentiert einen Laufzeitfehler, der den normalen Ablauf des Programms stört oder gar beendet

Page 31: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 31

Exceptions

Drei Arten von Fehlern

Vermeidbare Fehler (Bugs):

Das sind Fehler, die durch den Programmierer verursacht werden und praktisch vermieden werden können

- Division durch 0 - Zugriff auf einen ungültigen Arrayindex - Zugriff auf eine null-Referenz

Page 32: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 32

Fehlerarten in Java

Unvermeidbare Fehler:

Ein Programm versucht auf einen Server zuzugreifen, der gerade ausgeschaltet ist

Ein Programm versucht eine Datei zu öffnen, die beschädigt ist bzw. gelöscht wurde

Ein Programm fordert den Benutzer auf eine Zahl einzugeben. Stattdessen gibt der Benutzer ein String ein

Page 33: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 33

Fehlerarten in Java

Systemfehler (System Errors):

Das sind schwerwiegende nicht behebbare Fehler, nach deren Auftreten die Fortsetzung des Programms nicht sinnvoll bzw. gar nicht möglich ist

Führen zu einem Programmabbruch und zur Beendigung des Interpreters

- Beispiele: Speicherüberlauffehler (Memory Overflow), Fehler in der JVM

Page 34: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 34

Fehlerbehandlung

Zur Behandlung von Laufzeitfehlern stellt Java das Exception-Konzept zur Verfügung

Wenn ein Programmteil (eine Methode oder Anweisung) einen Fehler verursacht, löst die JVM eine Ausnahme (throwing exception), die vom Programm abgefangen (catching exception) und behandelt (handling exception) werden kann

Zur Behandlung einer Ausnahme übergibt die JVM an das Programm ein Exception-Objekt, das Informationen über den Fehler enthält wie z.B. Fehlerart, Fehlerbezeichnung Programmzustand zum Zeitpunkt des Auftreten des Fehlers …etc

Page 35: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 35

Fehlerbehandlung

//try to convert a string to a numberconvertStringToNubmer(String numberString){ try{

float number = Float.parseFloat(numberString);System.out.println("Converting "+numberString+

" to a number succeeded: "+number);}//Catching the exceptioncatch (NumberFormatException exceptionObject){

//handling the exceptionSystem.out.println("Exception: Unable to convert "

+numberString+" to a number!");System.out.println(exceptionObject.getMessage());

System.out.println("Printing the stack trace...");exceptionObject.printStackTrace();}}

Die Behandlung von Ausnahmen erfolgt mittels der try-catch-Anweisung:

Page 36: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 36

Fehlerbehandlung

convertStringToNubmer("549.34");

Ausgabe: Converting 549.34 to a number succeeded: 549.34

convertStringToNubmer("549,34");Ausgabe: Exception: Unable to convert 549,34 to a number! For input string: "549,34" Printing the stack trace... java.lang.NumberFormatException: For input string: "549,34"

at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)

at java.lang.Float.parseFloat(Unknown Source)at

exceptions.SimpleException.convertStringToNubmer(SimpleException.java:25)

at exceptions.SimpleException.main(SimpleException.java:39)

Page 37: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 37

Throwable

Die Vaterklasse aller Exceptions ist die Klasse java.lang.ThrowableZwei wichtige Methoden:

getMessage() Wenn ein Laufzeitfehler auftritt, generiert die JVM ein

Ausnahme-Objekt und speichert in ihm eine Textnachricht getMessage() gibt diese Nachricht zurück

printStackTrace() liefert eine Art Momentaufnahme des Programmstacks (stack trace) zum Zeitpunkt des Auftretens des Fehlers in Form einer Textnachricht zurück

Page 38: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 38

Ausnahmetypen

Zwei Arten von AusnahmenGeprüfte Ausnahmen (checked exceptions) Laufzeitausnahmen (runtime exceptions)

Laufzeitausnahmen repräsentieren vermeidbare Fehler

Beispiele: ArrayIndexOutOfBoundsException, NegativeArraySizeException, NullPointerException und StringIndexOutOfBoundsException

int x=1/3;int y=2/x;//Division durch null --> // Laufzeitausnahme: ArithmeticException:/by zero

Page 39: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 39

Ausnahmetypen

Die geprüften Ausnahmen dagegen repräsentieren unvermeidbare Fehler und Systemfehler

Beispiele FileNotFoundException und IOException public void printFile(String fileName){//try to read and print the given fileBufferedReader input = null;

try { input = new BufferedReader( new

FileReader(fileName) ); String line = null; while (( line = input.readLine()) != null){ System.out.println(line); } } catch (IOException ex){ ex.printStackTrace();}

Page 40: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 40

Ausnahmetypen

Alle aus der Klasse java.lang.RunTimeException abgeleiteten Exceptions sind Laufzeitausnahmen

Laufzeitausnahmen können, jedoch müssen nicht abgefangen und behandelt werden

try{ int x=1/3; int y=2/x }catch(ArithmeticException exceptionObject){//Catching the exception

//handling the exceptionSystem.out.println("x ist 0. Division wurde nicht ausgeführt!");}

Page 41: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 41

Ausnahmetypen

Alle aus der Klasse java.lang.Exception abgeleiteten Exceptions sind geprüfte Exceptions

Geprüfte Ausnahmen dagegen müssen vom Programmierer mittels einer try-catch-Anweisung immer abgefangen und behandelt werden

Page 42: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 42

Auslösen einer Exception

Der Programmierer kann Methoden definieren, die selbst Ausnahmen auslösen:

Eine Methode kann eine oder mehrere Ausnahmen werfenDies erfolgt mithilfe der throws Anweisung

public long factorial(int n) throws NegativeValueException {//if n<0 then throw an exception

if(n<0) throw new NegativeValueException ("invalid parameter: "+n);

//else return factorial(n) }

Page 43: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 43

Behandeln einer Exception

Da factorial() eine geprüfte Ausnahme wirft (siehe API-Dokumentation), muss jede andere Methode, die factorial() aufrufen will, dies innerhalb einer try-catch-Anweisung tun

public long calculator(int n) {// the calculator method calls the factorial method try{ return factorial(n); } catch (Exception exceptionObject){

System.out.println("The input parameter of factorial "+ +"must be a positive number!");}

Page 44: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 44

Weitergabe von Exceptions

Es ist auch möglich das Abfangen und die Behandlung einer Ausnahme an die aufrufende Methode weiterzugeben, wie das folgende Beispiel zeigt:

public long calculator(int n) throws Exception { int x= n/2; return factorial(x); }

Page 45: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 45

Behandlung von mehreren Ausnahmen

public void printFile(String fileName){//try to read and print the given fileBufferedReader input = null;

try { input = new BufferedReader( new FileReader(fileName) ); String line = null; while (( line = input.readLine()) != null){ System.out.println(line); } } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex){ ex.printStackTrace(); }}

Page 46: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 46

finally

Am Ende einer try-catch-Anweisung kann ein finally-Block stehen

Der fianlly-Block wird immer ausgeführt, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht

Page 47: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 47

finally

public void finalyMethod(){try{ Random rand=new Random();

int x=rand.nextInt(6); System.out.println("x="+x);int y=2/x;//Division durch null -->ArithmeticException:/by 0

}

catch (ArithmeticException arithmeticExceptionObject){

System.out.println("ArithmeticException...");}

finally{System.out.println("Finally-Block");

}}

Page 48: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 48

Erstellung eigener Exception-Klassen

Zur Erstellung einer eigenen Exception-Klasse, muss entschieden werden, ob die neue Ausnahme eine geprüfte

oder eine Laufzeitausnahme sein soll Eine Laufzeitausnahme muss von der Klasse java.lang.RuntimeException oder von einer ihrer Unterklassen abgeleitet werden

Eine geprüfte Ausnahme muss von der Klasse java.lang.Exception oder von einer ihrer Unterklassen abgeleitet werden

Die Klasse soll zwei Konstruktoren deklarieren, einen parameterlosen Konstruktor und einen Konstruktor, der als Parameter eine Textnachricht (message) übergeben bekommt

Page 49: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 49

Erstellung einer geprüften Exception

/** * Checked exception used in the method factorial of the class * SimpleException * */ public class NegativeValueException extends Exception{

public NegativeValueException(){

}public NegativeValueException(String message){

super(message);}

}

Page 50: Ashraf Abu Baker baker@gdv.cs.uni-frankfurt.de

Java-Intensivkurs WS07/08Folie 50

Erstellung einer Laufzeit-Exception

/** * Runtime exception used in the method auszahlen() of the class * exceptions.Bankkonto */public class KreditLimitUeberschrittenException extends RuntimeException{

public KreditLimitUeberschrittenException(){

}

public KreditLimitUeberschrittenException(String message){super(message);

}}