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

Ähnliche Dokumente
II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.4.5 Generische Datentypen - 1 -

II.4.4 Exceptions - 1 -

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

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

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 -

Vorkurs Informatik WiSe 15/16

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

12 Abstrakte Klassen, finale Klassen und Interfaces

Informatik II Übung 06. Benjamin Hepp 5 April 2017

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

Kapitel 5: Interfaces

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

14 Abstrakte Klassen, finale Klassen, Interfaces

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

14 Abstrakte Klassen, finale Klassen, Interfaces

Objektorientierte Programmierung

Interfaces und Generics

4. Vererbung Die Klasse Object. Die Klasse Object

Die abstrakte Klasse Expression:

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

Programmieren 2 Java Überblick

Abstrakte Basisklassen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Programmierkurs Java

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

Abstrakte Basisklassen

14. Java Objektorientierung

Programmierung Nachklausurtutorium

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Tafelübung 07 Algorithmen und Datenstrukturen

Java-Schulung Grundlagen

Programmieren in Java

Objektorientierte Programmierung

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

Tag 8 Repetitorium Informatik (Java)

Objektorientierung (OO)

Programmieren in Java -Eingangstest-

Software Entwicklung 1

6. Globalübung (zu Übungsblatt 8)

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

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

Java Grundlagen 2 - OOP

HERZLICH WILLKOMMEN PROGRAMMIERKURS (JAVA) ZUM. Dr. Vera Weil Institut für Informatik Universität zu Köln. 9. Vorlesung (05.

14. Java Objektorientierung

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Client-Server-Beziehungen

Übungsstunde 9. Einführung in die Programmierung I

Wiederholung. Klassenhierarchie:

Musterlösung Stand: 5. Februar 2009

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

Ersetzbarkeit und Verhalten

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

3. Übungsbesprechung Programmkonstruktion

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

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

1 Abstrakte Klassen, finale Klassen und Interfaces

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

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

II.4.6 Collections - 1 -

Klausur: Java (Liste P)

Instrumentierung und Dekodierung

Modularisierung in Java: Pakete Software Entwicklung 1

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Objektorientierte Programmierung

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Objektorientierte Programmierung Studiengang Medieninformatik

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

Objektorientierte Programmierung

Fakultät IV Elektrotechnik/Informatik

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Pakete Software Entwicklung 1

Universität Karlsruhe (TH)

Algorithmen und Datenstrukturen 07

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Objektorientierte Programmierung Studiengang Medieninformatik

Richard Bubel & Martin Hentschel

Java Einführung Abstrakte Klassen und Interfaces

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

Listing 1: Cowboy. Listing 2: Woody

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Dynamische Typinformation A01 OOP. Dynamische Typinformation

Transkript:

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete 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 -

Erweiterung durch Delegation public class Bruchliste { public class Element { Liste dieliste; Object wert; Element next;... void fuegevorneein (Bruch wert) { dieliste.fuegevorneein (wert); public class Liste { Element kopf; Element suche (Bruch wert) { dieliste.suche (wert); void fuegevorneein (Object wert) {... Element suche (Object wert) {... II.4.2 Abstrakte Klassen und Interfaces - 5 -

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 - 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 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 - 7 -

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

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 - 9 -

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 - 10 -

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 - 11 -

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 - 12 -

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 - 13 -

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); public class C implements I, I_and_J 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 - 14 -