II.4.2 Abstrakte Klassen und Interfaces - 1 -

Ähnliche Dokumente
1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Java-Schulung Grundlagen

Einstieg in die Informatik mit Java

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Objektorientierte Programmierung

Theorie zu Übung 8 Implementierung in Java

1 Polymorphie (Vielgestaltigkeit)

Algorithmen und Datenstrukturen

Java für Computerlinguisten

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

Java Einführung Abstrakte Klassen und Interfaces

OOP. Tagesprogramm. Dynamische Typinformation. Homogene Übersetzung der Generizität. Generizität und Typumwandlungen

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

Java - Programmierung - Objektorientierte Programmierung 1

Objektorientierte Programmierung

5 Grundlagen der Java-Syntax

Datenbankanwendungsprogrammierung Crashkurs Java

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Interfaces und Vererbung

Programmieren in Java

Probeklausur: Programmierung WS04/05

Kapitel 6. Vererbung

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Gebundene Typparameter

Probeklausur: Programmierung WS04/05

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

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

Kapitel 6. Vererbung

Programmieren in Java

Kapitel 6. Vererbung

3 Objektorientierte Konzepte in Java

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

3 Objektorientierte Konzepte in Java

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Große Übung Praktische Informatik 1

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

Programmieren I + II Regeln der Code-Formatierung

public class SternchenRechteckGefuellt {

Faustregeln zu Zusicherungen

Handbuch für die Erweiterbarkeit

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Typumwandlungen bei Referenztypen

Einführung in die Programmierung

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Javakurs für Anfänger

JAVA - Methoden - Rekursion

Client-Server-Beziehungen

Übersicht. Vorstellung des OO-Paradigmas

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

4. AuD Tafelübung T-C3

Binärbäume. Prof. Dr. E. Ehses,

Ich liebe Java && Ich liebe C# Rolf Borst

SWE1 / Übung 9 ( )

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

5.6 Vererbung. Vererbung

Einführung in die Programmierung

Programmieren I. Kapitel 8. Vererbung

Einführung in die Programmierung für Wirtschaftsinformatik

Javakurs für Anfänger

Algorithmen und Datenstrukturen 07

Java: Vererbung. Teil 3: super()

II.3.1 Rekursive Algorithmen - 1 -

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

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

Prinzipien Objektorientierter Programmierung

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

Der EMF-generierte Code. 7. November 2012

Beispiel für überladene Methode

Welche Informatik-Kenntnisse bringen Sie mit?

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java Einführung Collections

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

10. Berechtigungsverwaltung Grundlagen der Programmierung II (Java)

Factory Method (Virtual Constructor)

Kapitel 1: Anforderungen an moderne Software und ihre Umsetzung in Java

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

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

Einstieg in die Informatik mit Java

Höhere Programmierkonzepte Testklausur

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

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

Tutorium zur Vorlesung Programmieren

Primitive Datentypen

Javakurs zu Informatik I. Henning Heitkötter

1. Der Einstieg in Java

JAVA - Methoden

Klausur zur Einführung in die objektorientierte Programmierung mit Java

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

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

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

Generische Typen in Java 1.5. Die Erweiterung der Java Language Specification

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Repetitorium Informatik (Java)

1. Grundlegende Konzepte in Java (6 Punkte)

Grundlagen der Objektorientierung

Institut fu r Informatik

JAVA 5 Generics. Proseminar Programmiersprachen Thema Java 5 Generics 1

Transkript:

1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.2 Abstrakte Klassen und Interfaces - 1 -

Ähnliche Programmteile public class Bruchelement { Bruch wert; Bruchelement next;... public class Wortelement { Wort wert; Wortelement next;... public class Bruchliste { Bruchelement kopf; public class Wortliste { Wortelement kopf; void fuegevorneein (Bruch wert){... void fuegevorneein (Wort wert){... Bruchelement suche (Bruch wert){... Wortelement suche (Wort wert){... II.4.2 Abstrakte Klassen und Interfaces - 2 -

Allgemeine Liste public class Bruchelement { public class Element { Bruch wert; Bruchelement next;... Object wert; Element next;... public class Bruchliste { Bruchelement kopf; public class Liste { Element kopf; void fuegevorneein (Bruch wert){... void fuegevorneein (Object wert) {... Bruchelement suche (Bruch wert){... Element suche (Object wert) {... II.4.2 Abstrakte Klassen und Interfaces - 3 -

Verwendung der allgemeinen Liste Bruch b1 = new Bruch (1,2), b2 = new Bruch (5,4); Element e; public class Element { Object wert; Element next;... Liste l = new Liste (); public class Liste { l.fuegevorneein (b1); l.fuegevorneein (b2); e = l.suche (b1); l.fuegevorneein ("hallo"); e = l.suche ("hallo"); Listen mit beliebigen Objekten durcheinander Element kopf; void fuegevorneein (Object wert) {... Element suche (Object wert) {... II.4.2 Abstrakte Klassen und Interfaces - 4 -

Gleichheit in der Klasse Liste public class Element { Object wert; Element next;... public class Liste { Element kopf; Element suche (Object wert) { return suche (wert, kopf); Vergleicht Objekte nicht inhaltlich static Element suche (Object wert, Element kopf) { if (kopf = = null) return null; else if (wert = = kopf.wert) return kopf; else return suche (wert, kopf.next); II.4.2 Abstrakte Klassen und Interfaces - 5 -

public abstract class Vergleichbar { public abstract boolean gleich (Vergleichbar zuvergleichen);... public class Bruch extends Vergleichbar { private int zaehler, nenner; public boolean gleich (Vergleichbar zuvergleichen) {... Bruch b; Abstrakte Klasse if (zuvergleichen instanceof Bruch) { b = (Bruch) zuvergleichen; return (zaehler * b.nenner = = b.zaehler * nenner); else {System.out.println("Kein Bruchvergleich"); return false; II.4.2 Abstrakte Klassen und Interfaces - 6 -

public abstract class Vergleichbar { public abstract boolean gleich (Vergleichbar zuvergleichen);... public class Bruch extends Vergleichbar { private int zaehler, nenner; public boolean gleich (Vergleichbar zuvergleichen) {... Bruch b; Abstrakte Klasse Objekt Bruch Methode gleich Attribute int zaehler int nenner if (zuvergleichen instanceof Bruch) { b = (Bruch) zuvergleichen; Objekt Vergleichbar return (zaehler * b.nenner Methoden = = b.zaehler Attribute* nenner); gleich else {System.out.println("Kein Bruchvergleich"); return false; II.4.2 Abstrakte Klassen und Interfaces - 7 -

Liste mit abstrakter Klasse public abstract class Vergleichbar { public abstract boolean gleich (Vergleichbar zuvergleichen);... public class Bruch extends Vergleichbar {... public class Wort extends Vergleichbar {... public class Element { Vergleichbar wert; Element next;... public class Liste { Element kopf; Element suche (Vergleichbar wert) {return suche (wert, kopf); static Element suche (Vergleichbar wert, Element kopf) { if (kopf = = null) return null; else if (wert.gleich(kopf.wert)) return kopf; else return suche (wert, kopf.next); II.4.2 Abstrakte Klassen und Interfaces - 8 -

Mehrere Anforderungen an Klassen public abstract class Vergleichbar { public abstract boolean gleich (Vergleichbar zuvergleichen);... public abstract class Aenderbar { public abstract void aenderung ();... Geht nicht, Java hat nur Einfachvererbung public class Bruch extends Vergleichbar, Aenderbar { public boolean gleich (Vergleichbar zuvergleichen) {... public void aenderung () {...... public class Wort extends Vergleichbar { public boolean gleich (Vergleichbar zuvergleichen) {... II.4.2 Abstrakte Klassen und Interfaces - 9 -

Mehrere Anforderungen an Klassen public interface Vergleichbar { boolean gleich (Vergleichbar zuvergleichen); public interface Aenderbar { void aenderung (); public class Bruch implements Vergleichbar, Aenderbar { public boolean gleich (Vergleichbar zuvergleichen) {... public void aenderung () {...... public class Wort implements Vergleichbar { public boolean gleich (Vergleichbar zuvergleichen) {... II.4.2 Abstrakte Klassen und Interfaces - 10 -

Interfaces und abstrakte Klassen public interface Vergleichbar { boolean gleich (Vergleichbar zuvergleichen); public interface Aenderbar { void aenderung (); public abstract class Zahl implements Vergleichbar { protected abstract int runde (); public String rundungsinfo () { return "in etwa " + runde (); public class Bruch extends Zahl implements Aenderbar { public boolean gleich (Vergleichbar zuvergleichen) {... protected int runde () {... public void aenderung () {...... public class Int extends Zahl { public boolean gleich (Vergleichbar zuvergleichen) {... public int runde () {...... public class Wort implements Vergleichbar { public boolean gleich (Vergleichbar zuvergleichen) {... II.4.2 Abstrakte Klassen und Interfaces - 11 -

public interface Vergleichbar { boolean gleich (Vergleichbar zuvergleichen); public abstract class Zahl implements Vergleichbar {... public class Bruch extends Zahl implements Aenderbar {... public class Int extends Zahl {... public class Wort implements Vergleichbar {... public class Element { Vergleichbar wert; Element next;... public class Liste { Element kopf; Liste mit Interfaces Element suche (Vergleichbar wert) {return suche (wert, kopf); static Element suche (Vergleichbar wert, Element kopf) { if (kopf = = null) return null; else if (wert.gleich(kopf.wert)) return kopf; else return suche (wert, kopf.next); II.4.2 Abstrakte Klassen und Interfaces - 12 -

Datenzugriff mit Interfaces public interface I { int x = 4, y = 6; void b (int i); void q (int n); public interface I_and_J extends I, J {... public interface J { int x = 3; void b (double d); void q (int n); I_and_J public class C implements I, J { public void b (int i) {... public void b (double d) {... public void q (int n) {... C z = new C (); nicht erlaubt, stattdessen J j = (C) i; I i = z; J j = i; nicht erlaubt, da nicht eindeutig i.b (5); j.b (5); i.q (5); j.q (5); System.out.println(I.x + "," + J.x + "," + C.x + "," + C.y); II.4.2 Abstrakte Klassen und Interfaces - 13 -

Interfaces mit Default-Methoden public interface H { default int v () { return 2; public interface I extends H { default int u () { return 0; int v (); static int w () { return 4; public interface J { default int u () { return 2; public class C implements I, J { public int u () { return I.super.u() 1; + 1; public int v () { return 3; C z = new C (); System.out.println(z.u ()); System.out.println(z.v I.w ()); II.4.2 Abstrakte Klassen und Interfaces - 14 -