Programmieren 2 Java Überblick

Ähnliche Dokumente
7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

2. Schnittstellen Lernziele. 2. Schnittstellen. Das Konzept Schnittstelle in der objektorientierten Programmierung kennen und verstehen,

Java Einführung Abstrakte Klassen und Interfaces

Interfaces und Vererbung

1 Polymorphie (Vielgestaltigkeit)

Java-Schulung Grundlagen

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einstieg in die Informatik mit Java

Theorie zu Übung 8 Implementierung in Java

Einstieg in die Informatik mit Java

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

Programmieren I. Kapitel 8. Vererbung

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

Präsentation Interfaces

Java I Vorlesung 6 Referenz-Datentypen

Algorithmen und Datenstrukturen 07

JAVA - Methoden

Java für Computerlinguisten

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Programmieren in Java

Abschnitt 9: Schnittstellen: Interfaces

Probeklausur: Programmierung WS04/05

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Kapitel 6. Vererbung

Typumwandlungen bei Referenztypen

3 Objektorientierte Konzepte in Java

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

Programmieren in Java

Java - Programmierung - Objektorientierte Programmierung 1

Kapitel 6. Vererbung

3 Objektorientierte Konzepte in Java

JAVA - Methoden - Rekursion

Kapitel 6. Vererbung

Datenbankanwendungsprogrammierung Crashkurs Java

Vererbung. Was versteht man unter dem Begriff Vererbung?

Programmieren in Java

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

Primitive Datentypen

Gebundene Typparameter

Objektorientierte Programmierung

Einführung in die Programmierung

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

Große Übung Praktische Informatik 1

C# im Vergleich zu Java

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Probeklausur: Programmierung WS04/05

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Grundlagen der Objektorientierung

Algorithmen und Programmierung II

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

Vererbung. Martin Wirsing. Ziele. Vererbung

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

5. Tutorium zu Programmieren

Einführung in die Programmierung 1

3. Anweisungen und Kontrollstrukturen

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

II.1.1. Erste Schritte - 1 -

Repetitorium Informatik (Java)

5.6 Vererbung. Vererbung

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

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

Java Vererbung. Inhalt

Welche Informatik-Kenntnisse bringen Sie mit?

Java I Vorlesung Vererbung und Sichtbarkeit

Enum Aufzählungstypen in Java

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

II.3.1 Rekursive Algorithmen - 1 -

5 Grundlagen der Java-Syntax

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Prinzipien Objektorientierter Programmierung

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Ein erstes Java-Programm

public class SternchenRechteckGefuellt {

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

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

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

Institut fu r Informatik

Objekte. Polymorphismus. Klassen und Objekte. Kapselung

4. AuD Tafelübung T-C3

Mobile und Verteilte Datenbanken

Javakurs für Anfänger

Einführung in die Programmierung

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Vererbung & Schnittstellen in C#

Programmieren I + II Regeln der Code-Formatierung

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

Die Programmiersprache C Eine Einführung

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

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

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

Remote Method Invocation

> Vererbung, Die Austauschbarkeit

Transkript:

Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10 Applets 11 Internet-Anwendungen Prof. Dr. Björn Dreher Programmieren 2 - Java 121 Programmieren 2 Java Überblick: 3. Schnittstellen 3.5 Vererbung von s Prof. Dr. Björn Dreher Programmieren 2 - Java 122

Englisch: Im Prinzip eine völlig abstrakte Klasse Methoden Keine Implementierung Nur Methodensignatur Methode ist immer öffentlich (public) Klasse, die diese Schnittstelle implementiert, muss alle Methoden der Schnittstelle öffentlich implementieren Keine Attribute, nur... Klassenkonstanten static final Eine Klasse implementiert eine Schnittstelle Syntax public class KonkreteKlasse implements Schnittstelle1, Schnittstelle2 {... Prof. Dr. Björn Dreher Programmieren 2 - Java 123 Eine Klasse kann mehrere Schnittstellen implementieren Ersatz für Mehrfachvererbung Aber keine deren Probleme, da keine Attribute und keine Methodenimplementierung Substitutionsprinzip: ist ein Referenztyp wie eine Klasse Kann alle Objekte der implementierenden Klassen aufnehmen Schnittstelle definiert bestimmte Sicht auf das konkrete Objekt Objekte von Klassen, die mehrere Schnittstellen implementieren, können in verschiedenen Rollen auftreten Prof. Dr. Björn Dreher Programmieren 2 - Java 124

Beispiel public interface Materialeigenschaft { public static final int HART = 0, WEICH = HART+1, FLAUSCHIG = WEICH+1; public int berechnegewicht(); public class Wolle implements Materialeigenschaft { public int berechnegewicht() { return 234; public class Synthetik implements Materialeigenschaft { public int berechnegewicht() { return 452; public abstract class Stahl implements Materialeigenschaft { boolean glänzend; Sprechweise Klassen werden vererbt, Schnittstellen implementiert Alle Methoden einer Schnittstelle sind automatisch abstrakt Prof. Dr. Björn Dreher Programmieren 2 - Java 125 Verwendung public class Materialien { public static void main(string [] args) { Materialeigenschaft [] me = new Materialeigenschaft [2]; me[0] = new Wolle(); me[1] = new Synthetik(); for (int i = 0; i < me.length; i++) System.out.println(i + " hat das Gewicht " + me[i].berechnegewicht()); Schnittstellen zur Definition gemeinsam genutzter Konstanten Schnittstelle ohne Methoden Jede Klasse, die diese Schnittstelle implementiert, besitzt auch die Konstanten Prof. Dr. Björn Dreher Programmieren 2 - Java 126

Programmieren 2 Java Überblick: 3. Schnittstellen 3.5 Vererbung von s Prof. Dr. Björn Dreher Programmieren 2 - Java 127 Definition einer gemeinsamen Methodenbasis Unterschiedliche Klassen, die dieselbe Schnittstelle implementieren, implementieren die Schnittstellenmethode unterschiedlich Alle Nachfahrenklassen verstehen den Methodenaufruf, implementieren die Methode aber verschieden Polymorphes Verhalten Atom + protonen(): int Sauerstoff Lithium Helium Wasserstoff + protonen(): int + protonen(): int + protonen(): int + protonen(): int Prof. Dr. Björn Dreher Programmieren 2 - Java 128

Atom public interface Atom { int protonen(); public class Wasserstoff implements Atom { public int protonen() { return 1; public class Helium implements Atom { public int protonen() { return 2; public class Lithium implements Atom { public int protonen() { return 3; public class Sauerstoff implements Atom { public int protonen() { return 8; Prof. Dr. Björn Dreher Programmieren 2 - Java 129 Hauptprogramm public class Atom { public static void main( String[] args ) { char atomkürzel = 'h'; // setze Kürzel mit irgendeinem Wert Atom atom = kürzelzuatom( atomkürzel ); System.out.println( atom.protonen() ); static Atom kürzelzuatom( char kürzel ) { switch ( kürzel ) { case 'h': return new Helium(); case 'o': return new Sauerstoff(); case 'l': return new Lithium(); return new Wasserstoff(); Dynamisches Binden pur! Prof. Dr. Björn Dreher Programmieren 2 - Java 130

Programmieren 2 Java Überblick: 3. Schnittstellen 3.5 Vererbung von s Prof. Dr. Björn Dreher Programmieren 2 - Java 131 Unsere Atome sollen auch das java.lang.comparable implementieren Methode public int compareto(object o) Ergebnis je nach Ergebnis des Vergleichs <, = oder > 0 Wasserstoff: public class Wasserstoff implements Atom, Comparable { public int protonen() { return 1; // Aus Atom public int compareto( Object o ) {/*...*/ // Aus Comparable Prof. Dr. Björn Dreher Programmieren 2 - Java 132

Dadurch erhält Wasserstoff zwei Obertypen: Atom und Comparable Die folgenden Zuweisungen sind möglich: Atom w2 = new Wasserstoff(); // kennt protonen() Comparable w3 = new Wasserstoff(); // kennt compareto() Wasserstoff w4 = new Wasserstoff(); // kennt beide Object w1 = new Wasserstoff(); // kennt keine Ggf. muss ein Typecast eingesetzt werden: if (w1 instanceof Wasserstoff) { Wasserstoff w = (Wasserstoff) w1; int i = w.protonen(); int j = w.compareto(w4); Prof. Dr. Björn Dreher Programmieren 2 - Java 133 Programmieren 2 Java Überblick: 3. Schnittstellen 3.5 Vererbung von s Prof. Dr. Björn Dreher Programmieren 2 - Java 134

Schnittstelle Vorteil Jede Klasse kann sie implementieren, unabhängig von eigener Erbhierarchie Nachteile Reine API Spezifikation, keine Implementierung mit vielen Methoden: Mühsam, diese in jeder Klasse zu implementieren Eventuell Duplizierung ähnlichen Codes Hinzufügen einer neue Methode hat Konsequenzen für alle Klassen, die diese Schnittstelle bereits implementieren Prof. Dr. Björn Dreher Programmieren 2 - Java 135 Abstrakte Klasse Vorteil Muss nicht vollständig abstrakt sein Nachteil Bestimmtes Verhalten kann hier schon implementiert werden und kann an viele Nachfahrenklassen vererbt werden Nachfahrenklasse kann von keiner anderen Klasse erben Kompromiss Stelle Schnittstelle zur Verfügung Stelle zusätzlich eine (abstrakte) Klasse mit nützlichen Default- Implementierungen zur Verfügung Nachfahrenklassen können davon Gebrauch machen Prof. Dr. Björn Dreher Programmieren 2 - Java 136

Marker s Leere Schnittstelle ohne Methoden und Attribute Klasse implementiert diese Schnittstelle nur, um zu zeigen, dass sie bestimmtes Verhalten besitzt Klasse muss dazu aus Sicht der Schnittstelle nichts implementieren Jede Instanz der Klasse ist auch Instanz der Schnittstelle Kann mit instanceof Operator geprüft werden Beispiel: java.lang.cloneable Kennzeichnet Klasse, dass sie cloneable ist Object o; // Woanders initialisiert Object copy; if (o instanceof Cloneable) copy = o.clone(); else copy = null; Prof. Dr. Björn Dreher Programmieren 2 - Java 137 Programmieren 2 Java Überblick: 3. Schnittstellen 3.5 Vererbung von s Prof. Dr. Björn Dreher Programmieren 2 - Java 138

3.5 Vererbung von s Schnittstellen können erweitert werden Analog zur Vererbung von Klassen public interface SchweresAtom extends Atom { double atomgewicht(); Klasse, die SchweresAtom implementiert, muss beide Methoden, atomgewicht() und protonen(), implementieren Schnittstellen können von mehreren anderen Schnittstellen erben! Prof. Dr. Björn Dreher Programmieren 2 - Java 139 3.5 Vererbung von s Vererbung von Konstanten einer Schnittstelle public interface Grundfarben { int ROT = 1; int GRÜN = 2; int BLAU = 3; public interface Sockenfarben extends Grundfarben { int SCHWARZ = 10; int LILA = 11; public interface Hosenfarben extends Grundfarben { int LILA = 11; int SCHWARZ = 20; int BRAUN = 21; public interface Allefarben extends Sockenfarben, Hosenfarben { int BRAUN = 30; Sockenfarben + SCHWARZ: int = 10 + LILA: int = 11 Grundfarben + ROT: int = 1 + GRÜN: int = 2 + BLAU: int = 3 Allefarben + BRAUN: int = 30 Hosenfarben + LILA: int = 11 + SCHWARZ: int = 20 + BRAUN: int = 21 Prof. Dr. Björn Dreher Programmieren 2 - Java 140

3.5 Vererbung von s Vererbung von Konstanten einer Schnittstelle public class VererbteSchnittstellen { public static void main( String args[] ) { System.out.println( Sockenfarben.ROT ); // 1 System.out.println( Allefarben.ROT ); // 1 System.out.println( Hosenfarben.SCHWARZ ); // 20 // System.out.println( Allefarben.SCHWARZ ); // The field name "SCHWARZ" is an ambiguous name // found in the types "Sockenfarben" and // "Hosenfarben". // System.out.println( Allefarben.LILA ); Sockenfarben + SCHWARZ: int = 10 + LILA: int = 11 Grundfarben + ROT: int = 1 + GRÜN: int = 2 + BLAU: int = 3 Hosenfarben + LILA: int = 11 + SCHWARZ: int = 20 + BRAUN: int = 21 Allefarben + BRAUN: int = 30 Prof. Dr. Björn Dreher Programmieren 2 - Java 141 Programmieren 2 Java Überblick: 3. Schnittstellen 3.5 Vererbung von s Prof. Dr. Björn Dreher Programmieren 2 - Java 142

CharSequence der JDK 1.4 Liefert unveränderliche, nur lesbare Teilzeichenkette von String oder StringBuffer Objekten Implementiert von String und StringBuffer Objekte beider Klassen lassen sich als CharSequence Objekte ansehen CharSequence Serializable + length(): int + charat(index: int): char + subsequence(start: int, end: int): CharSequence + tostring(): String Comparable + compareto(o: Object): int StringBuffer String Prof. Dr. Björn Dreher Programmieren 2 - Java 143