Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Ähnliche Dokumente
Eingabe und Ausgabe in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

java.io Ziel Ressourcen Page 1 Verstehen der unterschiedlichen I / O Möglichkeiten Anwenden der Java I/ O Klassen Java Tutorial Java API Dokumentation

Java Einführung Abstrakte Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

boolean ispalindrome = word.equalsignorecase(reverse.tostring());

Java Einführung Exception Handling. Kapitel 17

Programmieren 2 Java Überblick

Algorithmen und Datenstrukturen

Problemstellung. Object1:Klasse1. Object2:Klasse2 att1: Klasse1 att2: 9. att1: att2: 17. Klasse1 att1 att2 Klasse2 att1 att2

Programmiermethodik 1. Klausur

System.out.println("TEXT");

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Informatik 1 - Translation Studies in Information Technology. Musterlösung zum Aufgabenblatt der ersten Pflichtübung im Wintersemester 16/17

Java - Programmierung - Objektorientierte Programmierung 1

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -


Programmieren in Java

Java-Schulung Grundlagen

Dateien. DVG Dateien 1

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Distributed Computing Group

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Fragenkatalog ESOP WS 16/17

Übungsstunde 10. Einführung in die Programmierung I

Einstieg in die Informatik mit Java

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Ausdrucksbäume in verschiedenen Darstellungen

String vs. StringBuffer. Class String

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

4. Vererbung Die Klasse Object. Die Klasse Object

Vorlesung Programmieren

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Klausurdauer: 3 Stunden. Lesen Sie zuerst die Hinweise auf der Rückseite!

ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) {

Die Klasse java.lang.object. Thorsten Treffer

II.1.1. Erste Schritte - 1 -

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

7. Java Fehler und Ausnahmen

Programmiermethodik 1. Klausur Lösung

Grundlagen der Objektorientierung

1 Polymorphie (Vielgestaltigkeit)

Programmieren in Java

3. Grundlegende Sprachkonstruktionen imperativer Programme

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Kapitel 5: Interfaces

Info B VL 8: Abstrakte Klassen & Interfaces

Java - Programmierung - Prozedurale Programmierung 1

Große Übung Praktische Informatik 1

14 Abstrakte Klassen, finale Klassen, Interfaces

Praktische Softwaretechnologie Vorlesung 4

Programmieren I. Dateien: Allgemeines. Vorlesung 10. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

JAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme

Instrumentierung und Dekodierung

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1

3. Übungsbesprechung Programmkonstruktion

12. Advanced Features, Abschluss

Software Entwicklung 1

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Interface. So werden Interfaces gemacht

Autoboxing - Nachtrag

Übungslösungen. 1. Übung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Softwaretechnik WS 16/17. Übungsblatt 01

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Java I Vorlesung Exceptions

Prozeduren, Funktionen, Datenströme, JavaDoc

1 Fehler-Objekte: Werfen, Fangen, Behandeln

Interfaces und Generics

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Kapitel 15: Ausnahmen und

Musterlösung zum 8. Aufgabenblatt vom Dienstag, den 02. Juni 2009 zur Vorlesung. Informatik B. von Jacob Krause

JAVA - Methoden

Klausur: Java (Liste P)

FAKULTÄT FÜR INFORMATIK

ihrer Klasse benötigt die Funktion einfuegenan:

Java Schulung (Java 2 Java Development Kit 5 / 6)

Selbststudium OOP6 & ALG Programmieren 1 - H1103 Felix Rohrer

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Gebundene Typparameter

Primitive Datentypen

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

II.3.1 Rekursive Algorithmen - 1 -

Programmieren in Java

Java Fehlerbehandlung

Musterlösungen zur Klausur Informatik 3

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Programmieren I. Fehlerbehandlung Exceptions. Heusch 2. Bd, 3 Ratz 10. Institut für Angewandte Informatik

9. Fehler und Ausnahmen Grundlagen der Programmierung 1 (Java)

II.4.1 Unterklassen und Vererbung - 1 -

5. Java Arrays und Strings

Objektorientierte Programmierung

JAVA für Nichtinformatiker - Probeklausur -

Transkript:

Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer

Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe; int gewicht; String geerntetin; void essen() { gewicht = 0; void essen() { gewicht = 0; void schaelen() { gewicht = gewicht - 10; void entfernestiel() { gewicht = gewicht - 1; LE4-2

Vererbung - Inheritance class Obst { String farbe; int gewicht; String geerntetin; void essen() { gewicht = 0; class Apfel extends Obst { class Erdbeere extends Obst { void schaelen() { gewicht = gewicht - 10; void entfernestiel() { gewicht = gewicht - 1; LE4-3

Geerbtes benutzen class Obst { String farbe; int gewicht; String geerntetin; void essen() { gewicht = 0; class Apfel extends Obst { void schaelen() { gewicht = gewicht - 10; public static void main ( String[] arguments ) { Apfel boskop = new Apfel(); boskop.farbe = "rot"; boskop.gewicht = 200; boskop.essen(); LE4-4

Ableitungsbaum Obst Apfel Erdbeere LE4-5

Alles ist ein Object Object Obst... Apfel Erdbeere LE4-6

Folgen Jede Klasse erbt einige Standard-Methoden: String tostring() boolean equals(object o)... public static void main ( String[] arguments ) { Apfel boskop = new Apfel(); String beschreibung = boskop.tostring(); System.out.println( beschreibung ); Ausgabe: Apfel@765291 Methoden können überschrieben werden LE4-7

Was heißt überschreiben? class Obst { int gewicht;... void essen() { gewicht = 0; class Apfel extends Obst { void essen() { gewicht = 10;... public static void main ( String[] arguments ) { Apfel boskop = new Apfel(); boskop.gewicht = 200; boskop.essen(); System.out.println(boskop.gewicht); Ausgabe: 10 LE4-8

String tostring() class Obst { String farbe;... public String tostring() { return "Farbe: " + farbe; public static void main ( String[] arguments ) { Apfel boskop = new Apfel(); boskop.farbe = "rot"; System.out.println( boskop ); Ausgabe: Farbe: rot LE4-9

Was vergleicht "=="? Apfel boskop1 = new Apfel(); boskop1.farbe = "rot"; boskop1.gewicht = 200; Apfel boskop2 = new Apfel(); boskop2.farbe = "rot"; boskop2.gewicht = 200; Apfel boskop3 = boskop1; System.out.println( boskop1 == boskop2 ); System.out.println( boskop1 == boskop3 ); Ausgabe: false true LE4-10

Ein Beispiel für "equals()" class Apfel {... public boolean equals ( Object o ) { Apfel parameter = (Apfel)o; boolean gleichefarbe = this.farbe.equals(paramter.farbe); boolean gleichesgewicht = (this.gewicht == paramter.gewicht); return gleichefarbe && gleichesgewicht; LE4-11

"equals()" ist nicht immer "==" class Apfel {... public boolean equals ( Object o ) {... Apfel boskop1 = new Apfel(); boskop1.farbe = "rot"; boskop1.gewicht = 200; Apfel boskop2 = new Apfel(); boskop2.farbe = "rot"; boskop2.gewicht = 200; System.out.println( boskop1 == boskop2 ); System.out.println( boskop1.equals( boskop2 ) ); Ausgabe: false true LE4-12

LE4-13

Gleichheit LE4-14

Ordnung LE4-15

Interface Comparable public interface Comparable { public int compareto(object arg); Ergebnis von compareto(): kleiner 0 this kleiner als arg größer 0 this größer als arg gleich 0 this gleich arg class Apfel implements Comparable {... public int compareto ( Object o ) { Apfel parameter = (Apfel)o; return (this.gewicht - parameter.gewicht); LE4-16

Interface Comparable public int compareto ( Object o ) { Apfel parameter = (Apfel)o; return (this.gewicht - parameter.gewicht); Apfel boskop1 = new Apfel(); boskop1.gewicht = 200; Apfel boskop2 = new Apfel(); boskop2.gewicht = 190; System.out.println( boskop1.compareto( boskop2 ) ); System.out.println( boskop2.compareto( boskop1 ) ); Ausgabe: 10-10 LE4-17

So it's true? We don't have to build it ourselves? LE4-18

Java API Java bietet unglaublich viele Klassen an: Mathematische Funktionen Ein- / Ausgabe Standard-Datenstrukturen... Wie die richtige finden? Google Java Doc (http://java.sun.com/j2se/1.4.2/docs/api/) LE4-19

Die liebe Mathematik PI public static final double PI The double value that is closer than any other to pi, the ratio of the circumference of a circle to its diameter. System.out.println ( Math.PI ); Ausgabe: 3.141592653589793 LE4-20

Zufallszahlen random public static double random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Returned values are chosen pseudorandomly with (approximately) uniform distribution from that range.... Returns: a pseudorandom double greater than or equal to 0.0 and less than 1.0. double zufallszahl1 = Math.random(); double zufallszahl2 = Math.random() * 100.0; int wurf = (int)( Math.random() * 6.0 + 1.0 ); LE4-21

Von Strömen stream 13 111 108 108 101 72 LE4-22

Erweiterbarkeit von Strömen stream Kryptographie Kompression LE4-23

Ströme und Text stream 10 13 144 145 Wor Reader + Buffered Reader Hello LE4-24

Zeilenweise lesen von der Tastatur import java.io.* public static void main ( String [] args ) { InputStreamReader reader = new InputStreamReader(System.in); BufferedReader linereader = new BufferedReader(reader); String line = linereader.readline(); System.out.println(line); LE4-25

Exkurs: Wenn mal was schief geht 1. Lösung: Rückgabewert // Näherung der Wurzelfunktion für positive Zahlen // für negative Zahlen wird -1 zurückgegeben static int wurzel ( int radikant ) { if (radikant < 0) { return -1; int zahl = 1; while (zahl*zahl <= radikant) { zahl = zahl + 1; return zahl-1; LE4-26

Exkurs: Wenn mal was schief geht Funktioniert nicht immer! static int teilen ( int divident, int divisor ) { if (divisor == 0) { // Fehler!! Durch 0 kann nicht geteilt werden! else { return divident / divisor; LE4-27

Javas Konstrukt: Exceptions Beispiel: readline() des BufferedReader kann eine IOException werfen static String getinput(string prompt) { System.out.print(prompt); BufferedReader linereader = new BufferedReader( new InputStreamReader(System.in) ); try { return linereader.readline(); catch (IOException e) { // Fehler "behandeln" return null; LE4-28

Da kann ich nichts tun static String getinput(string prompt) throws IOException { System.out.print(prompt); BufferedReader linereader = new BufferedReader( new InputStreamReader( System.in) ); return linereader.readline(); LE4-29

try-catch in Aktion static FileInputStream openfile() throws IOException { FileInputStream result = null; String filename = getinput("please enter filename"); while (result == null) { try { result = new FileInputStream(fileName); catch (FileNotFoundException e) { filename = getinput( file not found - please try again"); return result; LE4-30

Jetzt viel Spaß bei der Übung! LE4-31