Teil 2-4. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II

Teil 2 4. Vorlesung Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken und Informationssysteme Dr. Karsten Tolle t...
Author: Timo Maus
1 downloads 1 Views 749KB Size
Teil 2 4. Vorlesung Modul: Programmierung B-PRG Grundlagen der Programmierung II Professur für Datenbanken und Informationssysteme Dr. Karsten Tolle [email protected] 1

public ArrayList methode(ArrayList al) { al.add("Hallo Welt!"); return al; }

Aufruf mit methode(null) führt zu einer: java.lang.NullPointerException

2

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions (API)

Throwable

Exception

IOException

3

Error

RuntimeException

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - Grundlagen Es gibt außergewöhnliche Bedingungen, die es nicht gestatten im Code normal fortzufahren, z.B. wenn man auf eine Datei zugreifen möchte, die nicht existiert. Ausnahmen (Exceptions) unter Java bieten einen Mechanismus zur strukturierten, flexiblen Behandlung von Fehlern, die während der Laufzeit eines Programmes auftreten können.

4

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - Fehlerarten mögliche Fehlerarten zur Laufzeit:

• Eingabefehler (durch Benutzer) • Gerätefehler • physikalische Grenzen • Codefehler (z.B. ArrayIndex)

5

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - Ablauf Eine Exception wurde erzeugt (vom System oder vom Entwickler) . Entweder Behandlung durch den Programmteil, in dem sie erzeugt wurde oder weitergeben. Beim Weitergeben hat nun der Empfänger die Möglichkeit sie zu behandeln oder ebenfalls weiterzugeben. Wird die Exception von keinem Programmteil behandelt, führt dies zum Abbruch des Programms (mit entsprechender Fehlermeldung)!

6

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - throwing In manchen Fällen sind die Ausnahmen bereits vorgesehen. Die entsprechenden Methoden enthalten dann eine throws-Klausel. throwing = Auslösen der Ausnahme (werfen, schmeißen). Beispiel: void read() throws IOException { … throw new IOException(“Datei nicht gefunden!”);

… } 7

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - catching Will man solche Methoden (die Exceptions werfen) verwenden, muss die eventuelle Ausnahme abgefangen und die Behandlung implementiert werden. Alternativ kann die Exception einfach weiter gereicht werden mit throws. catching = Behandeln der Ausnahme (Abfangen und Reaktion). Beispiel: ... try { read(); } catch (IOException e) { … // im Falle einer Ausnahme } ...

8

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - catching In Java übernimmt der try-catch-Block die Fehlerbehandlung. Er umgibt den Bereich, in dem der Fehler auftreten könnte. Tritt im try-Block ein Fehler auf, wird dieser sofort verlassen (alle weiteren Anweisung werden nicht ausgeführt!) und es wird in den ersten catch-Block gesprungen. Falls dieser die Exception nicht abfängt, wird weiter in den nächsten catch-Block gesprungen, usw...

9

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - catching Beispiel: Mehrere catch-Blöcke (Reihenfolge beachten) try { Anweisung1; } catch (Ausnahmetyp1 ex1) { Anweisung2; } catch (Ausnahmetyp2 ex2) { Anweisung3;

Ausnahmetyp1 darf nicht Oberklasse von Ausnahemtyp2 sein!

}

10

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - catching der finally-Block ist optional, folgt nach dem letzten catch-Block und wird immer ausgeführt !!! Insbesondere: • wenn das normale Ende des try-Blocks erreicht wurde (ohne Fehler), • wenn eine Exception aufgetreten ist, egal ob sie durch einen catch-Block behandelt wurde oder nicht, • wenn der try-Block durch break, continue oder return verlassen wurde.

11

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - catching Beispiel: try-catch mit finally-Block try { … } catch (Ausnahmetyp ex) { … } finally { … }

12

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions - catching Der finally-Block kann verwendet werden, um Aufräumarbeiten durchzuführen! Zum Beispiel um Dateien zu schließen oder andere Ressourcen freizugeben.

13

Grundlagen der Programmierung II

DBIS - SS2010

Exception Weitergabe Statt eine Exception zu behandeln, kann man sie an die aufrufende Methode weitergeben: • einfach die try-catch-Klausel weggelassen und • an den Methodenkopf die Exceptions mit throws anhängen (durch Komma getrennt), die weitergegeben werden können.

14

Grundlagen der Programmierung II

DBIS - SS2010

Exception Weitergabe Beispiel: ... public void dbAusgabe() throws SQLException { ... ResultSet ergebnis = stat.executeQuery("SELECT * FROM kunden WHERE nachname='Schmidt'"); ... } 15

Grundlagen der Programmierung II

DBIS - SS2010

Exception Behandlung … und dann kann die aufrufende Methode die Exception z.B. behandeln. Beispiel von vorheriger Folie: ... try { dbAusgabe();

// Ausführung von SELECT

} catch (SQLException ex) { System.out.println("DB-Fehler beim Lesen!"); } ... 16

Grundlagen der Programmierung II

DBIS - SS2010

Exception Klassen (API) einige wichtige Ausnahmetypen RuntimeException: • ArithmeticException (Division durch 0) • ArrayIndexOutOfBoundsException • NullPointerException IOException: • FileNotFoundException Error: • VirtualMachineError Exception: • ClassNotFoundException 17

Grundlagen der Programmierung II

DBIS - SS2010

Exception Klassen (API) Für die Standard-Java-Klassen kann man in der API nachlesen, ob für eine bestimmte Methode eine Exception behandelt werden muss. Der Compiler gibt eine Fehlermeldung aus, falls eine Exception nicht behandelt wird (catch-or-throw).

18

Grundlagen der Programmierung II

DBIS - SS2010

Exception Klassen (API) Ausnahmen von der catch-or-throw-Regel sind alle Klassen, die von RuntimeException erben bzw. RuntimeException selbst. Beispiel: • Gleitkommadivision durch Null • Überlauf • Mathematische Fehler

Diese Exceptions können, müssen aber nicht behandelt werden! Fehler-Handling würde sonst zu umfangreich werden. 19

Grundlagen der Programmierung II

DBIS - SS2010

Exception Beispiel Beispiel: Diese Methode testet, ob ein String in einen Integer umwandelbar ist.

public boolean isInteger(String s){ if ( (s == null) || (s.equals("")) ) { return false; } else { try { Integer test = new Integer(s); } catch (NumberFormatException ex) { return false;} return true; } } 20

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions Besonderheiten Mathematische Fehler Exceptions werden nur bei ganzzahligen Typen geworfen. System.out.println("Erg: " + 2.0 / 0); // Ergebnis: Infinity // vergleiche java.lang.Float.POSITIVE_INFINITY System.out.println("Erg: " + 2 / 0); // Laufzeitfehler: ArithmeticException: by zero

21

Grundlagen der Programmierung II

DBIS - SS2010

Eigene Exceptions Es ist möglich, eigene Fehlerklassen aus den vorhandenen abzuleiten. public class MyException extends IllegalArgumentException {

public MyException() { super(); }

public MyException(String s) { super(s); }

public String getMessage() { return "Meine feste Fehlermeldung!";} } 22

Grundlagen der Programmierung II

DBIS - SS2010

Exceptions– Ablauf (noch mal) Wenn eine Exception auftritt, sucht das Laufzeitsystem erst in der unmittelbaren trycatch-Anweisung, die diesen Fehler behandelt. Wird diese nicht gefunden, wird die Suche in den weiteren umgebenden Blöcken fortgesetzt. Wird auch hier nichts gefunden, wird die Exception an den Aufrufer weitergereicht falls keine Behandlung der Exception erfolgt, bricht das Programm ab.

23

Grundlagen der Programmierung II

DBIS - SS2010

24

Grundlagen der Programmierung II

DBIS - SS2010

Serialisieren von Objekten in Java Objekte werden von Java in einer Datei gespeichert und können wieder geladen werden. Alle relevanten Objekte müssen das Interface “java.io.Serializable” implementieren.

25

Grundlagen der Programmierung II

DBIS - SS2010

Serialize - Deserialize Referenzierende Objekte werden automatisch mit gespeichert (serialize) und auch mit geleaden (deserialize).

A

B

class A implements Serializable { private B b; public A() { b = new B(); } } 26

Grundlagen der Programmierung II

DBIS - SS2010

Beispiel: Java Serialize public class Person implements Serializable { String name; ArrayList nummern = new ArrayList(); … }

class PersTest { public static void main(String[] args) { … Person a = new Person(“Fred”); ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(“filename”); os.writeObject(a); os.close; … ObjectInputStream is = new ObjectInputStream(new FileInputStream(“filename”); Person b = (Person)is.readObject(); is.close(); … } } 27

Grundlagen der Programmierung II

DBIS - SS2010

CSV – Comma-Separated Values Stunde;Montag;Dienstag;Mittwoch;Donnerstag;Freitag 1;Mathe;Deutsch;Englisch;Mathe;Kunst 2;Sport;Französisch;Geschichte;Sport;Geschichte 3;Sport;"Religion ev;kath";Kunst;Deutsch;Kunst

28

Grundlagen der Programmierung II

DBIS - SS2010

Strings Zeichenketten (String) • Folgen von Zeichen String s = "Hallo"; // char

'J' , String "J"

String b = "Du"; System.out.println(s + b + "!!!"); // Ausgabe c:\>HalloDu!!!

29

Grundlagen der Programmierung II

DBIS - SS2010

String Vergleich int a=1, b=1; String x=“abc“, y=“abc“; if(a==b) … if(x==y) … if(x.equals(y)) …

30

Sollte false sein, ist aber nicht immer sicher!

Grundlagen der Programmierung II

DBIS - SS2010

Strings - StringTokenizer Um eine Zeichenkette zu analysieren kann die Klasse StringTokenizer verwendet werden. Constructor Summary StringTokenizer(String str) Constructs a string tokenizer for the specified string. StringTokenizer(String str, String delim) Constructs a string tokenizer for the specified string. StringTokenizer(String str, String delim, boolean returnDelims) Constructs a string tokenizer for the specified string. 31

Grundlagen der Programmierung II

DBIS - SS2010

Strings - StringTokenizer Beispiel String str ="Dies ist; ein String!"; StringTokenizer stkn; stkn = new StringTokenizer(str, ";“); while (stkn.hasMoreTokens()) { System.out.println(stkn.nextToken()); }

32

Grundlagen der Programmierung II

DBIS - SS2010

Streams und Dateien Um Daten zwischen zwei oder mehreren Rechnern auszutauschen bedient man sich der Streams. Streams (Ströme) sind vergleichbar mit einem Datentunnel zwischen zwei Rechnern. „Wenn man an einem Ende etwas eingießt, kommt es am anderem Ende wieder raus (Gartenschlauch nur in eine Richtung benutzbar).“

33

Grundlagen der Programmierung II

DBIS - SS2010

Streams und Dateien

Rechner A

34

Rechner B

Eingang

Eingang

Ausgang

Ausgang

Grundlagen der Programmierung II

DBIS - SS2010

Streams und Dateien Die obersten Streamklassen sind die abstrakten Klassen InputStream und OutputStream. Diese Klassen bieten Methoden zum Lesen bzw. Schreiben von einzelnen Bytes oder Byte Feldern. Um die Funktionalität zu erweitern, müssen die oberen Klassen erweitern werden.

35

Grundlagen der Programmierung II

DBIS - SS2010

Streams und Dateien Auch Klassen zum Zugriff auf Dateien sind vorhanden: Beispiel: DataInputStream / DataOutputStream FileInputStream / FileOutputStream FileWriter / FileReader zum Lesen oder Schreiben von Textdateien 36

Grundlagen der Programmierung II

DBIS - SS2010

Streams und Dateien – Bsp. …

File file = new File("test.txt"); try { FileWriter fw = new FileWriter(file); fw.write("Hallo Welt"); fw.flush(); } catch (Exception ex) { ex.printStackTrace(); } … 37

Grundlagen der Programmierung II

DBIS - SS2010

Kompaktes Lesen (seit Java 5) java.util.Scanner public void readFile(String filename) { try { Scanner scanner = new Scanner(new File(filename)); while (scanner.hasNextLine()){ String str = scanner.nextLine(); .. } } catch (Exception e) { e.printStackTrace(); } }

38

Grundlagen der Programmierung II

DBIS - SS2010

Tabellenkalkulationsprogramme • einfache Datenlisten (Tabellen) • man kann einfach Diagramme erstellen, • zum Austausch von Daten (CSV), • um automatische Kalkulationen durchzuführen, • …

DBIS - SS2010

DBS / DBMS / DB Was ist das? Wann braucht man so etwas?

40

Grundlagen der Programmierung II

DBIS - SS2010

41

Grundlagen der Programmierung II

DBIS - SS2010

Vorteile DBS Redundanz und Inkonsistenz Werden durch die zentrale Datenverwaltung und Datenhaltung vermieden. Beschränkung der Zugriffsmöglichkeiten Durch verschiedene Konzepte können Informationen miteinander verknüpft werden (z.B. relationales Modell). Eingeschränkter Mehrbenutzerbetrieb Durch die zentrale Benutzerverwaltung einfach zu realisieren. Integritätsverletzungen Durch Constraints in der zentralen Datenverwaltung gut umzusetzen. Sicherheitsprobleme Durch die zentrale Benutzerverwaltung können Zugriffsrechte gut kontrolliert werden. 42

Grundlagen der Programmierung II

DBIS - SS2010

weitere Vorteile von DBS Physische Datenunabhängigkeit: Anwendungen von Modifikationen an der physischen Speicherstruktur nicht betroffen. Logische Datenunabhängigkeit: Änderungen an der logischen Datenstruktur beeinflussen Anwendungen nicht umbedingt. Dauerhafte Speicherung von großen Datenbeständen. Bereitstellung einer Anfragesprache zum einfachen Umgang mit der Datenbank. Sicherheit gegenüber Hard- und Softwareausfällen (Recovery). Effizient, möglichst schnell unter Benutzung weniger Ressourcen.

43

Grundlagen der Programmierung II

DBIS - SS2010

Fragen um herauszufinden, ob man ein DBMS benötigt: 1. Liegt eine große Datenmenge vor, die schwer zu managen ist? • •

Braucht es lange das Dokument zu öffnen? Ist das Betrachten der Daten ist schwierig, muss man viel scrollen und ist es scher die gesuchten Daten zu finden?

2. Arbeiten verschiedene Personen/Anwendungen mit den Daten? 3. Gibt es weitere Daten, die mit den gegebenen Daten in Relation stehen und ebenfalls gespeichert werden? •

Ziehen Änderungen an einer Stellen Änderungen an anderen Stellen nach sich?

4. Werden die gleichen Daten an unterschiedlichen Orten verwendet?

DBIS - SS2010

Wichtige Datenbanken • Oracle • IBM DB2 • SQL Server

Company

Revenue 2007

Market share 2007

Oracle

8,343 Mrd. Dollar

37,6%

IBM

4,879 Mrd. Dollar

22,0%

Microsoft

4,670 Mrd. Dollar

21,0%

• … • MySQL • PostgreSQL

aus Computerwoche Nr. 3 vom 16. Januar 2009

• Caché … 45

Grundlagen der Programmierung II

DBIS - SS2010

Arten von DBMS - Datenbankmodelle hierarchisch: Die Datenobjekte stehen in verdrahteten Eltern-Kind Beziehungen zueinander. netzwerkartig: Die Datenobjekte werden miteinander in Netzen verdrahtet. Werden hier nicht behandelt!

DBIS - SS2010

Arten von DBMS - Datenbankmodelle relational: Die Datenobjekte stehen in flachen Tabellen, Beziehungen ergeben sich aus Werten der Tabellenspalten  RDBMS. objektorientiert: Die Datenobjekte werden miteinander verdrahtet, sind gegebenenfalls miteinander verwandt und können vom System immer eindeutig identifiziert werden  OODBMS. Es existiert eine Vielzahl von Misch- und Nebenformen, wie zum Beispiel das objektrelationale Modell  ORDBMS. DBIS - SS2010

Besondere DBS XML Datenbanken (Tamino, eXist, …) Geoinformationssysteme ≡ Geographic Information System (GIS) / Spatial Databases NoSQL (Not Only SQL Datenbanken) … momentan heiß diskutiert.

48

Grundlagen der Programmierung II

DBIS - SS2010

Erste Schritte … Was sind die Anforderungen? Was sind die Ziele? Ist bekannt was gespeichert werden soll?  Design des Datenmodels

DBIS - SS2010

Design Im Englischen und Französischen bedeutet design „Gestaltung“ oder „Entwurf“, … deutschen Sprachgebrauch, der eher auf formal/künstlerische Aspekte abzielt und den Designbegriff weitgehend verdinglicht, umfasst der angelsächsische Begriff design auch technisch-konstruktive Anteile der „Gestaltung“. aus Wikipedia: Design

applied arts and engineering DBIS - SS2010

Entity-Relationship-Modell Zur Beschreibung der realen Welt!

DBIS - SS2010

(E)ER Modell Siehe auch: C. Maria Keet: A formal comparison of conceptual datamodeling languages (http://ftp.informatik.rwth-aachen.de/Publications/CEURWS/Vol-337/paper3.pdf)

Picture by: Frank Roeing DBIS - SS2010

Suggest Documents