Heute • Organisatorisches • Nachbetrachtung Zwischentest • Restlicher Stoff (soweit ich komme) 14.1.2016 IT I - VO 11 1 Restlicher Stoff • • • • • • • • 14.1.2016 TreeMap Exceptions und Errors Input/Output in Files etc. main / ausführbare jar-Files Grafische Benutzeroberflächen Innere Klassen Anonyme innere Klassen Einfache Simulationen IT I - VO 11 2 Organisatorisches • Nächste Woche letzte UE und letzte Wissensüberprüfung. • Letztes ÜBlatt • VO am 21.1.: restlicher Stoff und Fragestunde • Abschlusstest am 27.1. (16 Uhr) im Raiffeisen-HS oder Zeichensaal. • Anmeldung zur VO-Prüfung! 14.1.2016 IT I - VO 11 3 Organisatorisches • VO und UE werden evaluiert (Evaluierung bis 5. Februar möglich) • Mündliche Kommentare und Verbesserungsvorschläge sind für mich am nützlichsten! 14.1.2016 IT I - VO 11 4 Nachbesprechung Zwischentest • Hilfsmethoden in statischer Methode • Integer.MAX_VALUE • Sonderfall leere Liste • Wie initialisieren? • Wo initialisieren? • List vs. ArrayList • Mehrfachaufruf der Methode aus Oberklasse • contains vs. equals 14.1.2016 IT I - VO 11 5 TreeMap • implementiert Interface Map • Das keySet ist aufsteigend sortiert. • Dazu muss die Klasse der keySet-Elemente natürlich das Interface Comparable implementieren. 14.1.2016 IT I - VO 11 6 Exceptions und Errors • Exceptions erlauben eine einheitliche Behandlung von Sonderfällen. • Exceptions (und Errors) sind in einer Vererbungshierarchie organisiert. • Errors: – Wesentliche Fehler des Laufzeitsystems, die vom Anwendungsprogramm in der Regel nicht behoben werden können. 14.1.2016 IT I - VO 11 7 Exceptions und Errors 14.1.2016 IT I - VO 11 8 Exceptions • Geprüfte (checked) Exceptions: – Besondere Bedingungen insbesondere der Systemumgebung, z.B. IOException. – Für diese Exceptions muss eine Fehlerbehandlung vorgesehen werden. • Ungeprüfte (unchecked) Exceptions (=RuntimeExceptions): – Weisen in der Regel auf Programmfehler hin. – Für RuntimeExceptions muss keine Fehlerbehandlung vorgesehen sein. 14.1.2016 IT I - VO 11 9 Fehlerbehandlung • Methoden (und Konstruktoren), bei denen eine checked Exception auftreten kann, müssen diese im Methodenkopf angeben: void writeObject(Object obj) throws IOException • Wenn eine aufgerufene Methode eine Exception wirft, kann die aufrufende Methode – diese weitergeben, – oder in einem try-Block abfangen. • Beim Weitergeben muss die Exception im Methodenkopf der aufrufenden Methode angegeben werden. 14.1.2016 IT I - VO 11 10 try-Block try{ Anweisungsblock; } catch(IOException e) { Fehlerbehandlung1; } catch(ClassNotFoundException e) { Fehlerbehandlung2; } Tritt im Anweisungsblock eine Exception auf, wird der Anweisungsblock abgebrochen und die entsprechende Fehlerbehandlung durchgeführt: Es wird die Fehlerbehandlung der ersten passenden catch-Anweisung durchgeführt. 14.1.2016 IT I - VO 11 11 java.io.* • Wichtige Klassen: – – – • Interface Serializable – – • FileWriter, FileReader, Buffered Reader FileOutputStream, FileInputStream ObjectOutputStream, ObjectInputStream Nur Klassen die Serializable implementieren, können auf Streams geschrieben werden. Serializable erfordert keine Implementierung von Methoden (Marker-Interface). Nur ein sehr kleiner Ausschnitt der Möglichkeiten von Ein-/Ausgabe auf externe Geräte (Files, Netzwerk, …) mit Java. 14.1.2016 IT I - VO 11 12 Serializable • Files sind eine sequentielle Anordnung von Daten. • Objekte mit ihren Objekt-Referenzen können eine komplizierte Struktur haben. • Um Objekte in ein File zu schreiben, müssen die Daten sequentiell angeordnet werden. • Java erledigt das automatisch für alle Klassen, die Serializable implementieren. • Nur Objekte von Klassen die Serializable implementieren, können auf einen Stream geschrieben werden. • Dabei werden auch (rekursiv) alle Objekte, auf die es vom geschriebenen Objekt aus Referenzen gibt, auf den Stream geschrieben. • Serializable erfordert keine Implementierung von Methoden, es ist ein „Marker-Interface“. 14.1.2016 IT I - VO 11 13 IO-Klassen • FileOutputStream, FileInputStream – Stellt die Verbindung zu einem File für das Schreiben oder Lesen her. • ObjectOutputStream, ObjectInputStream – Ermöglicht das Schreiben von Objekten und primitiven Datentypen auf einen OutputStream (bzw. das Lesen von einem InputStream). – Die relevanten Methoden sind • writeObject(), readObject() • writeInt(), readInt(), … 14.1.2016 IT I - VO 11 14 public static void main(String[] args) • Definiert die „Hauptmethode“ einer Klasse. • Diese Methode wird ausgeführt, wenn das Java-Laufzeitsystem mit dieser Klasse als Input gestartet wird. • Z.B. java TestKlasse • Dazu muss TestKlasse.class im entsprechenden Verzeichnis vorhanden sein, und in Testklasse eine main-Methode definiert sein. • Alle weiteren benötigten Klassen müssen ebenfalls als class-Files vorhanden sein. • Im String-Array args werden die beim Aufruf eingegebenen Argumente zur Verfügung gestellt. 14.1.2016 IT I - VO 11 15 Ausführbares jar-File • In BlueJ kann ausführbares jar-File erstellt werden. • Dazu muss Klasse angegeben werden, die main-Methode enthält. • jar-File kann durch Doppelklick ausgeführt werden, wenn JDK und JRE auf Rechner installiert und mit jar-Files verknüpft. 14.1.2016 IT I - VO 11 16