Übungsstunde 9. Einführung in die Programmierung I

Ähnliche Dokumente
Übungsstunde 10. Einführung in die Programmierung I

Übungsstunde 10. Einführung in die Programmierung

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

EINFÜHRUNG IN DIE PROGRAMMIERUNG

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

Java - Programmierung - Prozedurale Programmierung 1

Exceptions - Klausuraufgaben

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

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

Übungsstunde 8. Einführung in die Programmierung

Praktische Softwaretechnologie Vorlesung 4

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

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

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

Liste Programmieren Java Überblick

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Java Einführung Abstrakte Klassen und Interfaces

Einstieg in die Informatik mit Java

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

Javakurs zu Informatik I. Henning Heitkötter

Java - Programmierung - Objektorientierte Programmierung 1

Übungsstunde 3. Einführung in die Programmierung

1 Fehler-Objekte: Werfen, Fangen, Behandeln

Programmieren in Java

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Vorlesung 10. Sitzung Grundlegende Programmiertechniken

15 Fehlerobjekte: Werfen, Fangen, Behandeln

15 Fehlerobjekte: Werfen, Fangen, Behandeln

15 Fehlerobjekte: Werfen, Fangen, Behandeln. Idee. Fehlerklassen. Fehlerklassen

Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling)

15 Fehlerobjekte: Werfen, Fangen, Behandeln

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Soll die Programm-Ausführung nicht beendet werden, muss der Fehler abgefangen werden. NumberFormatException

Algorithmen und Datenstrukturen

Software Entwicklung 1

Java-Schulung Grundlagen

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

Übungslösungen. 1. Übung

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

Java Einführung Exception Handling. Kapitel 17

12 Abstrakte Klassen, finale Klassen und Interfaces

Grundlagen der Fehlerbehandlung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 06: Ausnahme- und Fehlerbehandlung in Java.

Programmieren 2 Übung Semesterwoche 6

4. Vererbung Die Klasse Object. Die Klasse Object

Programmieren 2 Java Überblick

Interfaces und Generics

Ausnahmebehandlung in Java

Java : Fehlerbehandlung.

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

Matrikelnummer:

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

1.7 Fehler- und Ausnahmebehandlung

Programmieren in Java -Eingangstest-

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

Große Übung Praktische Informatik 1

Klausur: Java (Liste P)

Algorithmen und Programmierung III

Interface. So werden Interfaces gemacht

Wiederholung zur Vorlesung Programmieren

Exceptions. Prof. Dr. Margarita Esponda SS M. Esponda-Argüero

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

Die Klasse java.lang.object. Thorsten Treffer

Ausnahmenbehandlung in Java. Dr. Horst Treiblmaier Abteilung für Wirtschaftsinformatik WU Wien

: Einführung in die Programmierung Übungsblatt 10

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

Info B VL 8: Abstrakte Klassen & Interfaces

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

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

Javakurs für Anfänger

II.4.1 Unterklassen und Vererbung - 1 -

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

Kapitel 5: Interfaces

int x = 3; int y = 11; public A () { this.x = z; y *= z;

Listing 1: Cowboy. Listing 2: Woody

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Softwaretechnik WS 16/17. Übungsblatt 01

Klausur zur Informatik A WS 2001/2002 Name: Korrektor: Punkte: a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme.

II.3.1 Rekursive Algorithmen - 1 -

Kapitel 9: Klassen und höhere Datentypen. Selektoren

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

Vererbung. Martin Wirsing. Ziele. Vererbung

Programmieren in Java

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 16/ / 854

System.out.println("TEXT");

Programmieren in Java

Programmieren 2 Java Überblick

Ausnahmen. Exceptions. Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten. Dr. Beatrice Amrhein

Mobile und Verteilte Datenbanken

Einführung in die Programmierung

Graphalgorithmen. Graphen

Lösungen zum Übungsblatt 10: Entwicklung von Softwaresystemen I (WS 2003/04)

1 Polymorphie (Vielgestaltigkeit)

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

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

Einführung in die Informatik 1

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

14 Abstrakte Klassen, finale Klassen, Interfaces

Einführung in die Informatik 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 12. Fehler und Ausnahmen

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

Transkript:

Übungsstunde 9 Einführung in die Programmierung I

Probleme bei Übung 8 [TODO Assistent]

Nachbesprechung Übung 9

Aufgabe 1 Spieler Spieler[] spieler = { new ZufallsWortSpieler(), new ZufallsWortSpielerMitGedaechtnis(), new BuchstabenSpieler(), new HaeufigeBuchstabenSpieler(), new SimulierenderBuchstabenSpieler(), new SimulierenderNGrammSpieler() ; KonsolenSpieler ZufallsWortSpieler TippsSpieler Nicht Prüfungsstoff ZufallsWortSpielerMit Gedaechtnis BuchstabenSpieler SimulierenderTipps Spieler HaeufigeBuchstaben Spieler Simulierender Buchstaben Spieler SimulierenderNGramm Spieler

Beispiel BuchstabenSpieler public class BuchstabenSpieler extends Spieler { String[] buchstaben = { "a",..., "z" ; String[] woerter; boolean[] aussortiert; boolean[] tippverwendet; public String gibtipp() { int uebrigew = zaehlefalse(aussortiert); int uebriget = zaehlefalse(tippverwendet); if (uebrigew > 2 && uebriget > 0) { // verwende einen Tipp, den wir noch nicht probiert haben else { // probiere eins der noch übriggebliebenen Wörter public void bekommehinweis( String tipp, String hinweis) { // setze aussortiert[i] auf 'true', falls das i-te Wort gemäss // erhaltenem Hinweis nicht mehr möglich ist.

Beispiel BuchstabenSpieler public class BuchstabenSpieler extends TippsSpieler { protected String[] buchstaben = {"a",..., "z"; protected String[] tipps(string[] woerter) { return buchstaben; protected int tippindex() { for(int i = 0; i < tipps.length; i++) if(!tippverwendet[i]) return i; Die Musterlösung extrahiert einen Teil der Funktionalität in eine Superklasse TippsSpieler, die auch von anderen Spielern verwendet wird

Vorbesprechung Übung 10

Aufgabe 1 Ziel: Schreiben von Methoden, die für alle Instanzen von Klassen funktionieren, die Comparable implementieren. <<I>> Comparable Interface! boolean lessthan(comparable other) implements public static void sort( Comparable[] array, boolean ascending) { // Bubble-Sort public static Comparable max( Comparable[] array) { //... public static Comparable[] ngreatest( Comparable[] array, int n) { //... Canton lessthan() tostring() City lessthan() tostring() Lake lessthan() tostring() Stehen in keiner Beziehung zueinander (keine Subtype-Relation) Mountain lessthan() tostring()

Vergleiche equals Methode aus der Vorlesung: // Returns whether o refers to a Point object with // the same (x, y) coordinates as this Point. public boolean equals(object o) { if (o instanceof Point) { // o is a Point; cast and compare it Point other = ( Point) o; return x == other.x && y == other.y; else { // o is not a Point; cannot be equal return false;

Aufgabe 2 Ziel: Fehlerbehandlung mit Exceptions Was, wenn datarow sinnlose Werte enthält? Person() soll eine checked-exception IllegalPersonFormatException werfen public class Person { public int age; // years public int weight; // kg public int height; // cm public boolean ismale; public Person( String datarow) { Scanner scanner = new Scanner(dataRow); age = scanner.nextint(); weight = scanner.nextint(); height = scanner.nextint(); String gender = scanner.next(); ismale = gender.equals( "m"); public double bodymassindex() { return 10000 * weight / (height * height); public class IllegalPersonFormatException extends Exception { public IllegalPersonFormatException( String message) { super(message);

Zusatzübungen

Exceptions public class TryCatch { public static void main(string[] args) { System.out.println( "main()"); int ireturned = new TryCatch().m(); System.out.println( "m returned " + ireturned); Was wird ausgegeben? public int m() { int i = 0; try { System.out.println( "m(): try" ); i = 100 / 0; catch (Exception e) { System.out.println( "m(): catch" ); i = 200; return i;

Exceptions 2 public class TryCatch { public static void main(string[] args) { System.out.println( "main()"); new TryCatch().m(); Was wird ausgegeben? public void m() { try { System.out.println( "m(): try" ); int i = 1 / 0; catch (NullPointerException e) { System.out.println( "m(): catch NullPE" ); catch (ArithmeticException e) { // Div-by-0 System.out.println( "m(): catch DivBy0" ); catch (Exception e) { System.out.println( "m(): catch Exc" ); Exception RuntimeException NullPointerException ArithmeticException

Exceptions 2 public class TryCatch { public static void main(string[] args) { System.out.println( "main()"); new TryCatch().m(); public void m() { try { System.out.println( "m(): try" ); int i = 1 / 0; catch (NullPointerException e) { System.out.println( "m(): catch NullPE" ); catch (Exception e) { System.out.println( "m(): catch Exc" ); catch (ArithmeticException e) { // Div-by-0 System.out.println( "m(): catch DivBy0" ); Fängt nie etwas Fehler

Exceptions 3 public class TryCatch { public static void main(string[] args) { System.out.println( "main()"); try { new TryCatch().m(); catch (RuntimeException e) { System.out.println( "main(): catch Exc" ); Was wird ausgegeben? public void m() { try { System.out.println( "m(): try" ); int i = 1 / 0; catch (RuntimeException e) { System.out.println( "m(): catch Exc" ); throw e;

Exceptions 4 public class TryCatch { public static void main(string[] args) { System.out.println( "main()"); try { new TryCatch().m(); catch (Exception e) { System.out.println( "caught exception" ); public void m() throws FileNotFoundException { try { throw new FileNotFoundException(); catch (RuntimeException e) { System.out.println( "unchecked exception" ); Fängt checked und unchecked Exceptions Wenn checked Exception in der Methode nicht abgefangen wird, throws. RuntimeException checked Exceptions Exception IOException unchecked Exceptions FileNotFoundException

Diamanten class Vehicle { public void start() {System.out.println("start");; public void stop() {System.out.println("stop");; class Car extends Vehicle { public void honk() {System.out.println("*toot*");; class Boat extends Vehicle { public void swim() {System.out.println("swim..."); public void start() {System.out.println("depart");; class AmphiCar extends Car, Boat { Nicht möglich in Java!

Diamanten Vehicle start() stop() Car honk() Boat swim() start() AmphiCar Nicht möglich in Java!

Interfaces! interface Vehicle { public void start(); public void stop(); interface Car extends Vehicle { public void honk(); interface Boat extends Vehicle { public void swim(); interface AmphiCar extends Car, Boat { <<I>> Car honk() <<I>> Vehicle start() stop() <<I>> Boat swim() Möglich mit Interfaces! <<I>> AmphiCar

Interfaces! interface Vehicle { public void start(); public void stop(); interface Car extends Vehicle { public void honk(); interface Boat extends Vehicle { public void swim(); interface AmphiCar extends Car, Boat { class AbstractVehicle implements Vehicle { public void start() { System.out.println( "start");; public void stop() { System.out.println( "stop");; class BMWCar extends AbstractVehicle implements Car { public void honk() {System.out.println( "*honk*");; class SpeedBoat extends AbstractVehicle implements Boat { public void swim() { System.out.println( "swim..."); public void start() { System.out.println( "depart"); class AmphiCarM770 extends AbstractVehicle implements AmphiCar { public void honk() {System.out.println( "*toot*");; public void swim() {System.out.println( "swim...");

<<I>> Vehicle start() stop() AbstractVehicle start() stop() <<I>> Car honk() <<I>> Boat swim() <<I>> AmphiCar BMWCar honk() SpeedBoat swim() AmphiCarM770

class Wal { void a() { System.out.print( "Wal a "); b(); void b() { System.out.print( "Wal b "); String tostring() { return "Wal"; class Zahnwal extends Wal { void b() { System.out.print( "Zahnwal b " ); Was wird von a() ausgegeben, wenn a() auf einem Zahnwal-Objekt aufgerufen wird?

class Wal { void a() { System.out.print( "Wal a "); b(); void b() {System.out.print( "Wal b "); String tostring() { return "Wal"; class Zahnwal extends Wal { void b() { System.out.print( "Zahnwal b " ); class Schweinswal extends Delfinartig { void b() { System.out.print( "Schweinswal b " ); class Delfinartig extends Zahnwal { void a() { System.out.print( "Delfinartig a " ); super.a(); String tostring() { return "Delfinartig" ; Wal [] intheocean = { new Zahnwal(), new Wal(), new Schweinswal(), new Delfinartig(); for (int i = 0; i < intheocean.length; i++) { System.out.println( intheocean [i]); intheocean [i].a(); System.out.println(); intheocean [i].b(); System.out.println(); System.out.println(); Was wird ausgegeben? (für den Zahnwal, Wal, Schweinswal und Delfinartig)

Wal Klassendiagramm class Wal { void a() { void b() { String tostring() { class Zahnwal extends Wal { void b() { class Delfinartig extends Zahnwal { void a() { String tostring() { class Schweinswal extends Delfinartig { void b() { a() b() tostring() Zahnwal a() b() tostring() Delfinartig a() b() tostring() Schweinswal a() b() tostring()

Subtype-Relation method Wal Zahnwal Delfinartig Schweinswal a Wal a b() Wal a b() Delfinartig a Wal a b() Delfinartig a Wal a b() b Wal b Zahnwal b Zahnwal b Schweinswal b tostring Wal Wal Delfinartig Delfinartig

Rekursion und einfache Liste Visualisierung (Link)