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

Ähnliche Dokumente
Grundlagen der Objektorientierung

Java Einführung Abstrakte Klassen und Interfaces

Java - Programmierung - Objektorientierte Programmierung 1

class BahnTest2 { public static void main(string[] args) { Zug myice = new Zug("ICE Duisburg", 1200, 0, 50); BahnCardFahrer kunde2 = new BahnCardFahre

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

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Einstieg in die Informatik mit Java

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Theorie zu Übung 8 Implementierung in Java

Javakurs für Anfänger

JAVA für Nichtinformatiker - Probeklausur -

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

JAVA - Methoden

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

II.3.1 Rekursive Algorithmen - 1 -

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

Java-Schulung Grundlagen

Programmieren in Java

Probeklausur: Programmierung WS04/05

II.4.1 Unterklassen und Vererbung - 1 -

1 Polymorphie (Vielgestaltigkeit)

Programmieren in Java

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Einstieg in die Informatik mit Java

Programmieren in Java

3. Konzepte der objektorientierten Programmierung

Einführung in die Programmierung

JAVA - Methoden - Rekursion

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Informatik II (D-ITET) Übungsstunde 6

Musterlösungen zur Klausur Informatik 3

Objektorientierte Programmierung

Teil 2: OOP und JAVA (Vorlesung 11)

public class SternchenRechteckGefuellt {

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

5. Abstrakte Klassen

Handbuch für die Erweiterbarkeit

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

Kapitel 6. Vererbung

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Drucken in JAVA. 12-Drucken

Probeklausur: Programmierung WS04/05

1. Der Einstieg in Java. Was heißt Programmieren?

Klassen und Objekte. Objekte einer Klasse bilden

Kapitel 6. Vererbung

Algorithmen und Programmierung II

Primitive Datentypen

Kapitel 6. Vererbung

Java I Vorlesung Vererbung und Sichtbarkeit

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Programmiervorkurs WS 2013/2014. Instanzmethoden. Termin 6

Programmierkurs Java

3 Objektorientierte Konzepte in Java

Themen. Web Service - Clients. Kommunikation zw. Web Services

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

3 Objektorientierte Konzepte in Java

Grafik-Programmierung

Java-Implementierung der Priority-Queue und des Huffman-Algorithmus Effiziente Algorithmen SS12 Übung 4 Aufgabe 5 Johannes Hein

Inhalt. Informatik B Objektorientierte Programmierung in Java. Vorlesung 04: Objektorientierte Programmierung (Teil 4) Inhalt.

Erreichbarkeit von Klassenelementen. Daten verstecken und kapseln

Datenbankanwendungsprogrammierung Crashkurs Java

Arbeiten mit JavaKara

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Algorithmen und Datenstrukturen 07

Thread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen

Programmieren in Java

Programmieren in Java

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

Teil 1: Grundeigenschaften von Rechnern und Software

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert

Liebe Leserin, lieber Leser, in der ersten Auflage von Programmieren lernen mit Java von Hans- Peter Habelitz sind einige Fehler zu korrigieren.

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Kurs Einführung in die objektorientierte Programmierung (Kursdurchführung des Sommersemester 2016) Klausur am

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Selbsteinstufungstest Vorkurs Programmieren

Der EMF-generierte Code. 7. November 2012

Was passiert, wenn Button "Ok?" mit Maus angeklickt?

Institut fu r Informatik

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Praktische Softwaretechnologie Vorlesung 3

Objektorientierte Softwareentwicklung

3. Anweisungen und Kontrollstrukturen

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

Propädeutikum zur Programmierung

Java-Programmierung. Remote Method Invocation - RMI

Gebundene Typparameter

Objektorientierte Programmierung OOP Programmieren mit Java

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Objektorientierte Programmierung

Transkript:

Typecast class Pilz void suchen() void sammeln() class EßbarerPilz extends Pilz Suppe kochen() Suppe einesuppe = new Suppe(); return einesuppe; class GiftPilz extends Pilz void entsorgen() class Suppe public class ProgrammPilz public static void main(string[] args) Suppe einesuppe; Pilz einpilz = new EßbarerPilz(); // compiliert nicht: // einesuppe = einpilz.kochen(); // richtig: einesuppe = ((EßbarerPilz)einPilz).kochen(); einpilz = new GiftPilz(); // compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen(); 5 1 generische Programmierung

abstrakte Klassen und Schnittstellen import java.security.invalidparameterexception; public class InterfaceBeispiel public static void main(string argv[]) Figure[] figurenfeld = new Figure[3]; figurenfeld[0] = new OnScreenCircle(4); figurenfeld[1] = new OnScreenRectangle(6, 9); figurenfeld[2] = new OnScreenCircle(3); for (int i = 0; i < figurenfeld.length; i++) ((Movable)figurenfeld[i]).move(5*i, 10*i); System.out.println( "Figurenfeld:" ); for (int i = 0; i < figurenfeld.length; i++) System.out.println( figurenfeld[i] ); System.out.println(); System.out.println( "Minimum: " + minimum(figurenfeld) ); System.out.println( "Maximum: " + maximum(figurenfeld) ); // Benutzung eines abstrakten Elementtyps static Comparable minimum(comparable[] feld) Comparable min = feld[0]; for (int i = 1; i < feld.length; i++) if ( min.compareto(feld[i]) > 0 ) min = feld[i]; return min; static Comparable maximum(comparable[] feld) Comparable max = feld[0]; for (int i = 1; i < feld.length; i++) if ( max.compareto(feld[i]) < 0 ) max = feld[i]; return max; 5 2 generische Programmierung

// abstrakte Klasse Figur // Benutzung einer Schnittstelle aus Paket java.lang abstract class Figure implements Comparable private static int counter = 0; private int idnumber; Figure() counter++; idnumber = counter; // zählt Anzahl der Figuren // eindeutig für jede Figur public int getidnumber() return idnumber; abstract double flächeninhalt(); // mit Implementierung // ohne Implementierung // Implementierung der Methode compareto aus Comparable public int compareto(object o) double a = flächeninhalt(), b = ((Figure)o).flächeninhalt(); if ( a < b ) return -1; if ( a > b ) return 1; return 0; // konkrete Klasse Rechteck class Rectangle extends Figure int länge, breite; Rectangle(int l, int b) if ( l < 0 b < 0 ) throw new InvalidParameterException(); länge = l; breite = b; // Implementierung der Methode flächeninhalt aus Figure double flächeninhalt() return länge * breite; return "Rechteck: Laenge " + länge + ", Breite " + breite; 5 3 generische Programmierung

// konkrete Klasse Kreis class Circle extends Figure int radius; Circle(int r) if ( r < 0 ) throw new InvalidParameterException(); radius = r; // Implementierung der Methode flächeninhalt aus Figure double flächeninhalt() return radius * radius * Math.PI; return "Kreis: Radius " + radius; // Definition einer eigenen Schnittstelle // bewegliche Objekte brauchen die Operation move interface Movable // Bildschirmauflösung 640 x 480 int MAX_X = 480, // Zeilen 0...479 MAX_Y = 640; // Spalten 0...639 boolean move(int dx, int dy); 5 4 generische Programmierung

class OnScreenRectangle extends Rectangle implements Movable int base_x, base_y; // Koordinaten der linken oberen Ecke //Rechteck sichtbar, wenn vollständig auf Bildschirm darstellbar boolean visible; OnScreenRectangle(int l, int b) super(l, b); visible = move(0, 0); // Implementierung der Methode move aus Movable public boolean move(int dx, int dy) base_x += dx; base_y += dy; if ( base_x < 0 base_y < 0 base_x + länge >= MAX_X base_y + breite >= MAX_Y ) return false; return true; return super.tostring() + ", x: " + base_x + ", y: " + base_y; class OnScreenCircle extends Circle implements Movable int base_x, base_y; // Koordinaten des Mittelpunktes //Kreis sichtbar, wenn vollständig auf Bildschirm darstellbar boolean visible; OnScreenCircle(int r) super(r); visible = move(0, 0); // Implementierung der Methode move aus Movable public boolean move(int dx, int dy) base_x += dx; base_y += dy; if ( base_x - radius < 0 base_y - radius < 0 base_x + radius >= MAX_X base_y + radius >= MAX_Y ) return false; return true; return super.tostring() + ", x: " + base_x + ", y: " + base_y; 5 5 generische Programmierung