Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene
|
|
- Kurt Burgstaller
- vor 6 Jahren
- Abrufe
Transkript
1 Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1
2 Motivation Aufgabe: Finanzbuchhaltungssystem für internationale Hotelkette Problem: Hotels in verschiedenen Ländern rechnen mit verschiedenen Währungen, die ineinander umgerechnet werden müssen. Annahme: Abrechnungen erfolgen in US-Dollar. Problem: Umtauschkurs ändert sich jeden Tag! Beispiel: Hotel in Tokio hat eine Safe-Einlage im Wert von $ Über Nacht steigt der Kurs des Yen um 10% neuer Wert der Safe-Einlage: $ Der Wert der Safe-Einlage darf nicht in US-$ gespeichert werden, sondern muss dynamisch berechnet werden. Oliver Haase Hochschule Konstanz 2
3 Abstrakte Klassen Idee: Generalisiere von den konkreten Währungen, und führe eine abstrakte Klasse Waehrung ein: public abstract class Waehrung { // gibt den Wert in US-$ aus public abstract double dollarbetrag(); Eine abstrakte Klasse kann abstrakte Methoden enthalten. Eine abstrakte Methode ist eine Methodendeklaration ohne Implementierung. Jede Subklasse muss ihre eigene Implementierung bereitstellen. Eine abstrakte Klasse kann nicht instantiiert werden! Oliver Haase Hochschule Konstanz 3
4 Abstrakte Klassen in UML Waehrung dollarbetrag: double Merke: Die Namen abstrakter Klassen und Methoden werden kursiv geschrieben. Oliver Haase Hochschule Konstanz 4
5 Abstrakte Klassen Zweck Wozu sind abstrakte Klassen gut, wenn sie nicht instantiiert werden können? Vererbung! Subklassen erben alle Eigenschaften der abstrakten Superklasse im Beispiel: alle Subklassen von Waehrung müssen die abstrakte Methode dollarbetrag implementieren. D.h. die abstrakte Klasse Waehrung garantiert, dass alle Subklassen die Methode dollarbetrag besitzen (Schnittstellenvererbung) Oliver Haase Hochschule Konstanz 5
6 Klasse USDollar einfachste Währung ist US-Dollar, da keine Umrechung nötig ist: public class USDollar extends Waehrung { // Instanzvariable: Wert in US-$ private double wert; public USDollar(double wert) { this.wert = wert; public double dollarbetrag() { return wert; Oliver Haase Hochschule Konstanz 6
7 Klasse Yen public class Yen extends Waehrung { private static double kurs; // Instanzvariable: Wert in Yen private double wert; public Yen(double wert) { this.wert = wert; Klassenvariable, da Kurs für alle Yen-Objekte gilt und nur einmal gespeichert werden muss Wert wird in Yen gespeichert public double dollarbetrag() { return wert * kurs; Wert in US-$ wird zurückgegeben. public static void setkurs(double kurs) { Yen.kurs = kurs; Kurs kann klassenweit aktualisiert werden Oliver Haase Hochschule Konstanz 7
8 Verwendung der Klasse Yen Tokioter Hotel hat eine Safe-Einlage von : Yen safeinhalt = new Yen( ); Tauschkurs ändert sich auf 130 pro US-$: Yen.setKurs(1.0 / 130); Aktuellen Wert des Safe-Inhalts in US-$ ausgeben: System.out.println("Wert der Einlage in US-$: " + safeinhalt.dollarbetrag()); Konsole Wert der Einlage in US-$: Oliver Haase Hochschule Konstanz 8
9 Klasse Waehrung Erweiterung Aufgabe: Berechnung der Steuer von 8% (veranlagt in den USA) für das gesamte Barvermögen der Hotelkette. Idee: Implementiere diese Funktionalität als Klassenmethode der abstrakten Klasse Waehrung: public static double berechnesteuer(waehrung[] geld) { double summe = 0.0; for ( int i = 0; i < geld.length; i++ ) { summe += geld[i].dollarbetrag(); return summe * 0.08; Wie kann es ein Feld von Komponenten vom Typ Waehrung geben, wenn Waehrung nicht instanziiert werden kann? Oliver Haase Hochschule Konstanz 9
10 Waehrung Polymorphismus Antwort: Jede Subklasse von Waehrung, d.h. USDollar und Yen, kann an die Stelle der Superklasse treten Polymorphismus! Erklärung: Objekte vom Typ USDollar und Yen besitzen mindestens alle Eigenschaften der Klasse Waehrung. Allgemein: Ein speziellerer Typ kann all das, was ein allgemeinerer Typ kann. Speziellerer Typ wird implizit aufwärtskonvertiert in allgemeineren Typ. Oliver Haase Hochschule Konstanz 10
11 Waehrung Polymorphismus Beispiel: Waehrung[] geld = new Waehrung[3]; geld[0] = new USDollar(2500); geld[1] = new Yen( ); geld[2] = new USDollar(20); double steuer = berechnesteuer(geld); Beachte: Ein Objekt vom Typ USDollar kann an eine Variable vom Typ Waehrung zugewiesen werden US-$ ist eine (is-a) Währung. Oliver Haase Hochschule Konstanz 11
12 Objekttyp-Konversion Allgemeiner: Sei AllgemeineKlasse eine Superklasse von SpezielleKlasse. Dann sind die folgenden Codezeilen zulässig. AllgemeineKlasse a; SpezielleKlasse s; a = s; und auch: AllgemeineKlasse a = new SpezielleKlasse(); Beachte: Java führt eine implizite Aufwärtskonversion für Objekttypen durch, ähnlich der für skalare Typen. Diese kann auch explizit angegeben werden: AllgemeineKlasse a = (AllgemeineKlasse) new SpezielleKlasse(); Oliver Haase Hochschule Konstanz 12
13 Objekttyp-Konversion Auch eine explizite Abwärtstypwandlung ist möglich Vorsicht: kann zu Laufzeitfehler führen! AllgemeineKlasse a = new SpezielleKlasse(); SpezielleKlasse s = (SpezielleKlasse) a; OK AllgemeineKlasse a = new AllgemeineKlasse(); SpezielleKlasse s = (SpezielleKlasse) a; falsch! Oliver Haase Hochschule Konstanz 13
14 Objekttyp-Konversion Der Typ eines Objektes kann zur Laufzeit mit dem instanceof- Operator geprüft werden: Syntaxregel <objectname> instanceof <KlassenName>; Die Operation liefert true, wenn das Objekt eine Instanz der angegeben Klasse oder einer (direkten oder indirekten) Subklasse ist, und false anderenfalls. Beispiel (Sichern einer Abwärtstypwandlung): AllgemeineKlasse a = new SpezielleKlasse(); if ( a instanceof SpezielleKlasse) SpezielleKlasse s = (SpezielleKlasse) a; else System.out.println( "something went terribly wrong!"); Oliver Haase Hochschule Konstanz 14
15 Waehrung Polymorphismus Frage: Was passiert beim Aufruf von dollarbetrag() in der Methode berechnesteuer()? public static double berechnesteuer( Waehrung[] geld) { double summe = 0.0; for ( int i = 0; i < geld.length; i++ ) { summe += geld[i].dollarbetrag(); return summe * 0.08; Antwort: Für Objekte vom Typ USDollar wird die Methode verwendet, die in der Klasse USDollar definiert wurde, und für Objekte vom Typ Yen die Methode, die in der Klasse Yen definiert wurde späte Bindung (late binding). Oliver Haase Hochschule Konstanz 15
16 super Analog zu this gibt es auch ein Schlüsselwort super. Zur Erinnerung: this bezeichnet die aktuelle Instanz, für die gerade eine Instanzmethode ausgeführt wird. Mit this.<komponentenname> kann auf eine Instanzvariable oder eine andere Instanzmethode zugegriffen werden. Als Methode this(<parameterliste>) bezeichnet this einen Konstruktor. Damit kann ein (spezieller) Konstruktor auf einen (allgemeinen) Konstruktor zurückgeführt werden. Sehr ähnliches gilt für die super-referenz und den super- Konstruktor! Oliver Haase Hochschule Konstanz 16
17 super-konstruktor Ein Konstruktor kann und zwar nur in der 1. Zeile einen Aufruf des Konstruktors der Superklasse enthalten. Wenn das nicht der Fall ist, fügt Java automatisch den parameterlosen Konstruktor der Superklasse ein. public class NonsensDollar extends USDollar { public NonsensDollar(double wert) { super(wert); public double dollarbetrag() { return Math.random(); überschreibt gleichnamige Methode der Klasse USDollar. Oliver Haase Hochschule Konstanz 17
18 K tor - Ablaufdiagramm Konstruktor bearbeiten Beginnt K'tor mit this? nein ja Konstruktor der Superklasse bearbeiten entsprechenden Konstruktor bearbeiten Initialisierer anwenden Rumpf ausführen Oliver Haase Hochschule Konstanz 18
19 super-referenz Die super-referenz bezeichnet das aktuelle Objekt, jedoch als Instanz der Superklasse betrachtet! Damit ermöglicht super Zugriff auf Komponenten (Variablen und Methoden), die anderenfalls überdeckt und damit nicht sichtbar wären: public class NonsensDollar extends USDollar { public double jetztmalimernst() { return super.dollarbetrag(); Oliver Haase Hochschule Konstanz 19
20 Die Klasse Object Jede Klasse, die keine explizite Superklasse hat, ist automatisch Subklasse von java.lang.object. Damit ist letztendlich jede Klasse direkt oder indirekt Subklasse von Object, und hat damit auch alle Eigenschaften der Klasse Object. Object definiert eine Reihe von Methoden. Die für uns interessanteste ist public String tostring(). Außerdem wird die gemeinsame Superklasse Object als Elementtyp von Kollektionen verwendet. Oliver Haase Hochschule Konstanz 20
21 Die Methode tostring() Die Methode tostring() wird verwendet, um Objekte in eine menschlich lesbare, textuelle Repräsentation zu bringen. Die Methode System.out.println() wendet auf alle Objektparameter (außer Strings) vor dem Ausdrucken die Methode tostring() an. Der Code Yen betrag = new Yen(200000); System.out.println("Betrag: " + betrag); ist gleichwertig zu: Yen betrag = new Yen(200000); System.out.println( "Betrag: " + betrag.tostring()); Oliver Haase Hochschule Konstanz 21
22 Die Methode tostring() Die Standardimplementierung der Klasse Object führt für zu einem Ausdruck der Form: Betrag: Konsole Deshalb macht es Sinn, tostring() geeignet zu überschreiben: public class Yen extends Waehrung { private double wert; public String tostring() { return wert + " Yen"; Konsole Betrag: Yen Oliver Haase Hochschule Konstanz 22
23 Object für Kollektionen Die Superklasse Object kann verwendet werden, um Objekte beliebigen Typs in Kollektionen (Mengen, Multimengen, Listen) zu verwalten: public class CircularArray { private final static int SIZE = 100; private int index; private Object[] elements; public CircularArray() { elements = new Object[SIZE]; index = 0; Oliver Haase Hochschule Konstanz 23
24 Object für Kollektionen public void add(object element) { elements[index] = element; index = (index + 1) % SIZE ; public Object pop() { index = ( index > 0 )? index-1 : SIZE -1; return elements[index]; Oliver Haase Hochschule Konstanz 24
25 Object für Kollektionen Verwendung für Student Objekte: CircularArray array = new CircularArray(); Student studi1 = new Student(); studi1.setname("karla Karlson"); studi1.setnummer(12345); Student is-a Object array.add(studi1); Student studi2 = (Student) array.pop(); Typwandlung nötig, da pop- Methode Ergebnis vom Typ Object liefert! Oliver Haase Hochschule Konstanz 25
26 Schnittstellen Aufgabe: Hotelkette besitzt neben Barvermögen (Objekte vom Typ Waehrung) auch andere Arten von Vermögen: Grundstücke Aktien Firmenbeteiligungen Wir wollen sicher stellen, dass jeder Wertgegenstand seinen monetären Gegenwert nennen kann. Lösungsmöglichkeit: Definition einer abstrakten Superklasse mit einer abstrakten Methode, die alle Subklassen implementieren müssen. Oliver Haase Hochschule Konstanz 26
27 Schnittstellen alternative Lösung: Java-Schnittstelle (Interface): public interface Wertgegenstand { public Waehrung wert(); Schnittstellen sind Sammlungen von Instanzmethoden. Wie eine äußere Klasse wird auch eine Schnittstelle in einer gleichnamigen.java-datei gespeichert Wertgegenstand.java. Zu Schnittstellen existieren keine Kindklassen, die die Schnittstellen beerben (es gibt nichts zu erben!). Stattdessen kann eine Klasse eine Schnittstellen implementieren. Dazu muss sie alle in der Schnittstelle deklarierten Methoden definieren. Oliver Haase Hochschule Konstanz 27
28 Schnittstellen Beispiel: public class Goldbarren implements Wertgegenstand { public static double grammpreisindollar = 60; private double gewicht; public Goldbarren(double gewicht) { this.gewicht = gewicht; public Waehrung wert() { return new USDollar(gewicht * grammpreisindollar); Beachte: Goldbarren muss die Methode wert() definieren! Oliver Haase Hochschule Konstanz 28
29 Schnittstellen in UML interface Wertgegenstand wert: Waehrung Goldbarren Oliver Haase Hochschule Konstanz 29
30 Schnittstellen Anwendung: public static Waehrung gesamtwert( Wertgegenstand[] objekte) { double summe = 0.0; for ( int i = 0; i < objekte.length; i++ ) { summe += objekte[i].wert().dollarbetrag(); return new USDollar(summe); Schnittstelle Wertgegenstand wird verwendet wie eine Klasse, siehe "Wertgegenstand[]". Das Feld objekte enthält Objekte, die die Schnittstelle Wertgegenstand implementieren. Damit ist sichergestellt, dass diese alle die Methode wert() definieren. Oliver Haase Hochschule Konstanz 30
31 Schnittstellen vs. Klassen Eine Klasse kann nur eine Superklasse haben Einfachvererbung, keine Mehrfachvererbung. Eine Klasse kann beliebig viele Schnittstellen implementieren. Eine Schnittstelle kann keine Methodendefinitionen enthalten. Eine abstrakte Klasse kann abstrakte sowie konkrete Methoden enthalten. Eine Schnittstelle kann außer Konstanten keine Variablen enthalten. Eine Schnittstelle kann keine Klassenmethoden deklarieren. Oliver Haase Hochschule Konstanz 31
32 Time for a hot cup of java! Oliver Haase Hochschule Konstanz 32
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene Motivation Aufgabe: Finanzbuchhaltungssystem für internationale Hotelkette
Programmiertechnik Klassenvariablen & Instantiierung
Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen
Einstieg in die Informatik mit Java
1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren
Vererbung, Polymorphie
Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08
Einstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen
Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1
Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 14.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung 14.1.08 1 / 11 Übersicht 1
Programmiertechnik Objektorientierung
Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was ist Objekt-Orientierung? Objekt-Orientierung (OO) ist nicht völlig scharf definiert, d.h. es gibt unterschiedliche
Java Einführung Vererbung und Polymorphie. Kapitel 13
Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort
Algorithmen und Datenstrukturen 07
(7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik
Einstieg in die Informatik mit Java
1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung
Die Klasse java.lang.object. Thorsten Treffer
Die Klasse java.lang.object Thorsten Treffer 6. Dezember 2003 1 java.lang.object Die Klassenhierarchie von Java kann als Baum aufgezeichnet werden, dessen Wurzel die Klasse Object ist. Mit anderen Worten:
Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält
Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
Tafelübung 07 Algorithmen und Datenstrukturen
Tafelübung 07 Algorithmen und Datenstrukturen Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Vererbung Grundlagen Abstrakte
Vorkurs Informatik WiSe 15/16
Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Objektorientierung Was ist Objektorientierung Es einige Grundprinzipien, die (fast) allen Definitionen des Begriffs Objektorientierung
Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
6. Globalübung (zu Übungsblatt 8)
6. Globalübung (zu Übungsblatt 8) Inhalt: Klassenhierarchien Verdecken von Attributen Überschreiben von Methoden Codeanalyse Analyse von JAVA-Programmen Semestralklausur Klausurtermin: Mittwoch 11.01.2006
Das Interface-Konzept am Beispiel der Sprache Java
Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse
Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1
Vererbung 1 11.1 Motivation und Begriffsdefinitionen 11.2 Vorgehensweise und Implementierung 11.3 Arten von Vererbung 11.4 Konstruktoren 11.5 Abstrakte Klasse 11.6 Verschattung 11.7 Wurzelklasse Object
Einstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4
Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt
Javakurs für Anfänger
Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes
Überschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
Programmierung Nachklausurtutorium
Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel
12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
Javakurs für Anfänger
Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes
Vererbung. Martin Wirsing. Ziele. Vererbung
2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
Informatik II Übung 6
Informatik II Übung 6 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 11.4.2018 Carina Fuss 11.4.2018 1 Übung 6 Nachbesprechung Übung 5 Objektorientierung Vererbung, Polymorphie, abstrakte Klassen, Interfaces,
Erste Java-Programme (Java Wiederholung & Vererbung)
Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Java Wiederholung & ) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/
Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
Programmiertechnik Objektorientierung, Teil 2
Programmiertechnik Objektorientierung, Teil 2 Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Einschub: Pakete Java-Klassen können in Paketen organisiert sein. Ein Paket (package) ist eine Sammlung
Programmiertechnik Noch mehr Übung macht den größeren Meister!
Programmiertechnik Noch mehr Übung macht den größeren Meister Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Übung 1 Welche Ausgabe liefert das folgende Codestück? Object dollar = new USDollar(1);
Vererbung, Polymorphismus
Vererbung, Polymorphismus INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Automobilbau Firma produziert Limousine Kunde möchte Kombi Wielösen? Möglichkeiten Neudesign
II.4.1 Unterklassen und Vererbung - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung
Programmieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object
Einführung in die Programmierung I. 11. Vererbung. Stefan Zimmer
Einführung in die Programmierung I 11. Vererbung Stefan Zimmer 21.1.2008 Programmcode wiederverwenden Wenn wir einige Klassen geschrieben haben, werden wir dabei Teile davon öfters hingeschrieben haben
Einstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen
Einführung in C# Teil 3. Matthias Nübling
Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
Polymorphie. 15. Java Objektorientierung II
432 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 433 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen
Programmieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware
4. Vererbung Die Klasse Object. Die Klasse Object
4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige
Java für Bauingenieure
1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen
Polymorphie. 15. Java Objektorientierung II
446 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 447 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen
Grundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
EINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/
Klassen und Konstruktoren in Java
Klassen und Konstruktoren in Java class Circle { int r; Circle(int r) { this.r = r; // 1 Circle(Circle c) { this.r = c.r; // 2 Circle() { r = 1; // 3...... Circle a = new Circle(2); // Konstruktor 1 Circle
1 Abstrakte Klassen, finale Klassen und Interfaces
1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
Programmieren 2 Java Überblick
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
Programmieren I. Kapitel 8. Vererbung
Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte
Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1
Inhaltsverzeichnis Grundlagen und Einführung (1. Band) 1 1 Einleitung und Vorwort 1 1.1 Vorwort zur 13. Auflage....................... 1 1.2 Vorwort zur 10. Auflage....................... 1 1.3 Voraussetzungen...........................
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:
4. Vererbung Grundlagen der Vererbung 4. Vererbung 4. Vererbung Grundlagen der Vererbung Idee der Vererbung Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3
Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
14. Java Objektorientierung. Klassen, Vererbung, Kapselung
427 14. Java Objektorientierung Klassen, Vererbung, Kapselung Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen
FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
Teil 2: Weitere Aspekte der Objektorientierung
Teil 2: Weitere Aspekte der Objektorientierung Klassenvariablen So wie es Instanzvariablen gibt, die zu einer gewissen Instanz (Objekt) gehören und deren Attribute speichern, so gibt es aus Klassenvariablen:
JAVA 05: Objektorientierte Konzepte
Lernkartenkurs JAVA 05: Objektorientierte Konzepte panitz Zusammenfassung Dieser Kurs beschäftigt sich mit Grundkonzepten der objektorientierten Programmierung. Was sind Klassen und Objekte? Wie sehen
Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object
Smalltalk vs. Objective-C Klassen als Objekte Klassendeklarationen Selektoren als first-class values Objekt-Erzeugung Implementierung: Eigene VM vs. Einbettung in C Smalltalk: Everything is an object Klassen
Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1
Vererbung 1 11.1 Motivation und Begriffsdefinitionen 11.2 Vorgehensweise und Implementierung 11.3 Arten von Vererbung 11.4 Konstruktoren 11.5 Abstrakte Klasse 11.6 Verschattung 11.7 Wurzelklasse Object
Vererbung und Polymorphie
Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter
1. Abstrakte Klassen
1. Abstrakte Klassen Lernziele 1. Abstrakte Klassen Lernziele: Das Konzept abstrakter Klassen und abstrakter Methoden kennen und verstehen, in der Lage sein, abstrakte Klassen und Methoden in Java zu formulieren,
2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article
2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String
Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal
14. Java Objektorientierung
Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen
Wiederholung. Klassenhierarchie:
Wiederholung Klassenhierarchie: class Unter extends Ober {... Die Unterklasse Unter erweitert die Funktionalität ihrer Oberklasse Ober. Objekte der Klasse Unter können anstelle von Objekten der Klasse
Java Einführung Klassendefinitionen
Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse
II.4.1 Unterklassen und Vererbung - 1 -
n 1. Grundelemente der Programmierung n 2. Objekte, Klassen und Methoden n 3. Rekursion und dynamische Datenstrukturen n 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und
EINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -
! 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;
Objektorientierte Programmierung. Kapitel 14: Interfaces
14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/
1 Einleitung Generizität Syntax... 2
Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 1 1.1 Generizität................................ 1 1.2 Syntax.................................. 2 2 Realisierung 2 2.1 Compilierung generischer Klassen...................
Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete
2 Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, und Pakete Martin Wirsing Ziele Den Begriff der einfachen und mehrfachen Vererbung verstehen Verstehen, wann Vererbung eingesetzt wird deklarationen
Klassen und ihre Beziehungen II: Einfache Vererbung und Abhängigkeit
Klassen und ihre Beziehungen II: Einfache Vererbung und Abhängigkeit Martin Wirsing Ziele en Begriff der einfachen und mehrfachen Vererbung verstehen Vererbung und Redefinition von Oberklassenmethoden
Die abstrakte Klasse Expression:
Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die
IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1
IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft
Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.
Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe http://www.zitate-online.de/autor/goethe-johann-wolfgang-von/ http://www.weimar-lese.de/files_weimar_lese/johann_wolfgang_von_goethe_bearbeitet_von_andreas_werner.jpg
14 Abstrakte Klassen, finale Klassen, Interfaces
Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse
3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen
Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.
Ersetzbarkeit und Verhalten
Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void
7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
Client-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax
Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface
14 Abstrakte Klassen, finale Klassen, Interfaces
Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse
II.4.1 Unterklassen und Vererbung - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung
Info B VL 8: Abstrakte Klassen & Interfaces
Info B VL 8: Abstrakte Klassen & Interfaces Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 8: Abstrakte
Programmierkurs Java
Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie
Klassenvariablen, Klassenmethoden
Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden
Einstieg in die Informatik mit Java
1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick: