Polymorphie und UML Klassendiagramme
|
|
- Alexander Fischer
- vor 6 Jahren
- Abrufe
Transkript
1 Polymorphie und UML Klassendiagramme Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Vererbung hat einen sehr interessanten und effektiven Effekt: die Polymorphie. Darum geht es in dieser Veranstaltung. 2 Klassendiagramme Erinnern wir uns an das Programm, dass wir implementiert hatten, als wir uns mit Vererbung beschäftigt hatten. Es gab drei Klassen (Parallelogramm, Rechteck und Quadrat), die (in der Reihenfolge) voneinander erbten. Die Klasse Rechteck hatte die Methode geta überschrieben und damit eine effektivere Formel zur Anwendung gebracht. Bevor wir aber in die Diskussion einsteigen, wollen wir uns eine Notationsform anschauen, die uns helfen wird, die Situation übersichtlicher darzustellen. Die Unified Modelling Language (UML) 1 ist eine grafische Notationsform zur Beschreibung objektorientierter Systeme. UML bietet eine Reihe von Diagrammarten. Wir wollen das Klassendiagramm 2 benutzen. Eine Klasse wird in UML als Rechteck dargestellt, siehe Abbildung 1. Oben steht der Klassenname. Es folgt der Abschnitt der Member und danach die Methoden. Member und Methoden werden durch Sichtbarkeiten eingeleitet. Es gibt insgesamt vier Symbole der Sichtbarkeit. UML Symbol Java Bedeutung - private nur für die Klasse sichtbar # protected für die Klasse und Erben sichtbar ~ - sichtbar innerhalb des Packages + public allgemein sichtbar Die Member im Parallelogramm waren protected deklariert, d.h. sie sind für Objekte der Klasse und für Erben der Klasse sichtbar für alle anderen nicht. Daher wurde das Symbol # genutzt. Die Methode geta() wurde ohne explizite Sichtbarkeit implementiert. In Java wird daher die Standardsichtbarkeit genutzt das ist die Sichtbarkeit im Package. 1 Modeling Language 2 1
2 Abbildung 1: Klassendiagramm Das Rechteck leitet vom Parallelogramm ab. Das Symbol (Dreieck mit Linie) symbolisiert eine Spezialisierung bzw. Generalisierung je nach Leserichtung. Das Rechteck ist eine Spezialisierung des Parallelogramms. Dieses ist eine Generalisierung des Rechtecks. Analoges gilt für das Quadrat, siehe Abbildung. Nutzen Sie in Zukunft die UML Notifikation zur Beschreibung ihrer Systeme. 3 Polymorphie Betrachten wir nun folgende Code: Parallelogramm p = new Parallelogramm(2, 3, Math.PI*0,7, Math.PI*0,3); Rechteck r = new Rechteck(3, 4); Quadrat q = new Quadrat(5); double a = p.geta(); a = r.geta(); a = q.geta(); Es werden drei Objekte erzeugt. Die Objektreferenzen sind jeweils vom Typ der erzeugten Klassen. Danach wird jeweils die Methode aufgerufen, die den Flächeninhalt berechnet. Welche Implementierung wird dabei aufgerufen? Im ersten Fall wird die Implementierung der Klasse Parallelogramm aufgerufen. Warum? Weil das Objekt auf das die Objektreferenz p verweist vom Typ Parallelogramm ist. Eine Zeile tiefer wird die Implementierung der Klasse Rechteck aufgerufen. Warum? Weil das Objekt auf das die Objektreferenz r verweist vom Typ Rechteck ist. Außerdem wurde die Methode in der Klasse Rechteck überschrieben. 2
3 Eine weitere Zeile tiefer wird Implementierung der Klasse Rechteck aufgerufen. Warum? Die Methode geta wurde in der Klasse Quadrat nicht überschrieben. Die Klasse nutzt daher die geerbte Implementierung aus der Superklasse (Rechteck). Schauen wir uns den folgende Code an: Parallelogramm p = new Parallelogramm(2, 3, Math.PI*0,7, Math.PI*0,3); Parallelogramm r = new Rechteck(3, 4); Parallelogramm q = new Quadrat(5); double a = p.geta(); a = r.geta(); a = q.geta(); Der Code ist nahezu identisch mit einer Ausnahme: Der Typ der Objektreferenzen wurde für alle drei auf Parallelogramm geändert. Ansonsten werden die gleichen Objekte wie zuvor erzeugt. Welche Implementierungen werden nun aber aufgerufen? Wir testen das in der Veranstaltung und schauen uns das genauer an. Hier die schnelle Antwort: Es passiert genau das Gleiche, was vorher auch passierte. In Java hat die Typ der Objektreferenz keinen Einfluss darauf, welche Implementierung einer Methode aufgerufen wird. An jedem Objekt in Java ist vermerkt von welchem Typ es ist, d.h. von welcher Klasse es instantiiert wurde. Objekte können in Java niemals ihre Klasse ändern. Das Objekt entscheidet, welche Methode aufgerufen wird. Ändern wir den Code nocheinmal etwas. Parallelogramm[] parray = new Parallelogramm[3]; parray[0] = new Parallelogramm(2, 3, Math.PI*0,7, Math.PI*0,3); parray[1] = new Rechteck(3, 4); parray[2] = new Quadrat(5); for(int i = 0; i < 3; i++) { System.out.println(pArray[i].getA()); } Es wird eine eindimensionales Array der Länge 3 vom Typ Parallelogramm angelegt. Das Array kann nun als drei Objektreferenzen vom Typ Parallelogramm speichern. Das Array wird in den folgenden Zeilen auch gefüllt. Es werden wieder drei Objekte der drei Klassen angelegt. Danach wird eine Schliefe durchlaufen und es werden die Flächeninhalte der Objekte ausgegeben. Betrachten wir dieses Statement: parray[i].geta(); 3
4 Abbildung 2: B erbt von A und C von B Es wird eine Methode aufgerufen. Diese Zeile wird dreimal abgearbeitet. Im ersten Fall wird die Implementierung der Klasse Parallelogramm genutzt. Dann zweimal die Implementierung der Klasse Rechteck. Die Erläuterung dazu finden sich oben. Eine identische Programmierzeile erzeugt unterschiedliches Verhalten! In Abhängigkeit vom genutzten Objekt werden unterschiedliche Methodenimplementierung abgearbeitet. Das nennt sich Polymorphie Mehrgestaltigkeit. Hier einige Regeln: Mit der Erzeugung eines Objektes wird dessen Typ festgelegt. Dieser Typ ändert sich zur Laufzeit nicht mehr. Der Typ des Objektes entscheidet, welche Implementierung einer Methode aufgerufen wird. Der Typ der Objektreferenzen muss vom Typ des referenzierten Objektes oder einer Superklasse sein. Der Typ der Objektreferenz hat keine Auswirkung darauf, welche Implementierung einer Methode ausgeführt wird 3. Der Typ der Objektreferenz entscheidet aber darüber, welche Methoden überhaupt bekannt sind, siehe dazu folgende Übung. 4 Übung Das Klassendiagramm in Abbildung 2 stellt eine neue Situation dar. Drei Klassen leiten voneinander ab. Die Root-Klasse A definiert die Methoden f1 und f2, wobei die erste privat und die zweite öffentlich ist. B erbt von A, überschreibt f2 und definiert eine weitere Methode f3. C erbt von B und definiert eine weitere Methode f4. Betrachten wir den folgenden Code. Welche Zeilen erzeugen Fehlermeldungen? (Zur Übersichtlichkeit werden einige Zeilen nummeriert) class X { public static void main(string[] args) { A a = new A(); 3 Das ist ein Unterschied zu C++. Dort gibt es zwei Varianten - virtuelle und nicht-virtuelle Funktionen. Die ersten verhalten sich wie in Java, bei den letzten entscheidet der Typ der Objektreferenz (und nicht der Typ des tatsächlichen Objektes) welche Implementierung einer Methode genutzt wird. Wenn man dabei nicht sehr gut aufpasst, erzeugt man sich einen Sumpf an Problemen. Das braucht man nicht. Wirklich nicht. 4
5 1 a.f1(); 2 a.f2(); 3 B b = a; b = new B(); 4 b.f2(); 5 b.f3(); 6 a = b; 7 a.f2(); 8 a.f3(); C c = new C(); 9 c.f1(); 10 c.f2(); 11 c.f3(); 12 c.f4(); 13 b = c; 14 b.f3(); 15 b.f4(); } 1. Geht nicht: Methode f1 wurde private deklariert. Die Methode main ist aber in der Klasse X implementiert und hat damit keinen Zugriff auf f1. 2. Geht: Die Methode ist in X sichtbar. 3. Geht nicht: Es wird eine Objektreferenz vom Typ B erzeugt. Dieser soll die Referenz auf ein Objekt der Klasse A zugewiesen werden. Das geht nicht. B ist spezieller als A. B implementiert z.b. eine Methode, die es in A nicht gibt (f3). Merke: Objektreferenzen müssen vom gleichen oder einem generalisierten Typ des Objektes sein. B ist aber spezieller als A. 4. Geht: f2 ist in X sichtbar. Es wird die Implementierung von B genutzt, da das Objekt zuvor von der Klasse B erzeugt wurde. 5. Geht: f3 ist in X sichtbar. Es ist auch eindeutig, dass die Implementierung von B genutzt wird es gibt keine andere im gesamten System. 6. Geht: a ist vom Typ A. A ist allgemeiner als B und kann auch spezieller Objekte verweisen. 7. Geht: f2 ist bereits in A deklariert. Es wird die Implementierung von B benutzt, denn das Objekt auf das a verweist wurde aus der Klasse B erzeugt. Das ist Polymorphie. 5
6 8. Geht nicht: In A ist keine Methode f3 deklariert. Deshalb kann sie hier nicht aufgerufen werden, obwohl das Objekt von der Klasse B ist. 9. Geht nicht: f1 ist nicht sichtbar in der Klasse X, sondern nur in A. 10. Geht: f2 wurde bereits in A deklariert und in B überschrieben. Es wird die Implementierung von B genutzt. 11. Geht: f3 wurde in B implementiert und C erbt davon. 12. Geht: f4 wurde in C implementiert. 13. Geht: B ist allgemeiner als C, daher kann die Objektreferenz b ein Objekt der Klasse C referenzieren. 14. Geht: In B ist die Methode f3 bekannt. Das Objekt ist vom Typ C, nutzt aber die geerbte Implementierung von B. 15. Geht nicht: In B ist die Methode f4 nicht bekannt. Das referenzierte Objekt verfügt zwar über die Implementierung von f4, aber die Objektreferenz kennt sie nicht. 5 Cast Das folgende soll nur kurz gezeigt werden von dessen Nutzung ist abzuraten. Man kann die folgende Situation immer umgehen. Und es ist auch sinnvoll, diese zu umgehen. Nur leicht verständlicher Code ist guter Code. class X { public static void main(string[] args) { 1 A a = new B(); 2 B b = a; 3 b = (B)a; 4 a = new A(); 5 b = (B)a; } 1. Es wird eine Objektreferenz vom Typ A angelegt, aber ein spezielleres Objekt vom Typ B erzeugt. Das geht: eine allgemeiner Referenz kann auch ein spezielleres Objekt verweisen. 2. Das geht nicht. B ist spezieller als A. Der Compiler weigert sich, eine Objektreferenz eines allgemeineren Typs in einen spezielleren zu kopieren. Das ist auch gut so. In diesem Fall wissen wir, dass a auf ein Objekt vom Typ B zeigt. Aber das weiß der Compiler nicht. 3. Das geht. Der cast (B) teilt dem Compiler mit, dass wir uns ganz sicher sind, dass zur Laufzeit a wirklich und wahrhaftig auf ein Objekt der Klasse B oder spezieller verweist. Der Compiler wird angewiesen das zu glauben. 6
7 4. Es wird ein Objekt der Klasse A erzeugt und a zugewiesen. Das geht natürlich. 5. Diese Zeile compiliert. Wir haben die Bedenken des Compilers mit dem Cast wieder überschrieben. Der Compiler erzeugt also Code. Leider kracht es zur Laufzeit. Die JVM prüft bei der Übergabe der Objektreferenz ob unsere Behauptung stimmt. Die stimmt aber nicht, denn a verweist auf ein Objekt vom Typ A. A ist aber allgemeiner als B. Wir führen das Programm aus und lernen von der Fehlerausgabe. Der Java-Compiler arbeitet sehr kritisch und dafür sollten wir dankbar sein. C++ oder gar C Compiler arbeiten optimistischer. Die gehen eher davon aus, dass wir Entwickler innen wissen, was wir tun. Die Erfahrung lehrt aber, dass das oftmals nicht stimmt. Merke: Compilerfehler sind zwar nervig, aber in jedem Fall besser als ein Fehler zur Laufzeit. Den einen sehen wir Entwickler innen. Den anderen sehen unsere Kunden. Laufzeitfehler sind auch viel schwerer zu finden. Wir vermeiden daher casts und freuen uns über jeden Fehler, den der Compiler liefert. 7
Sichtbarkeiten, Klassenmember und -methoden
Sichtbarkeiten, Klassenmember und -methoden Prof. Dr.-Ing. Thomas Schwotzer 11. November 2017 1 Einführung Wir haben uns mit Klassen und Objekten beschäftigt. Wir wissen nun, dass Objekte anhand von Klassen
Abstrakte Klassen und Interfaces
Abstrakte Klassen und Interfaces Thomas Schwotzer 1 Einführung Wir haben uns mit Vererbung und Polymorphie beschäftigt. Klassen sind so in der Lage, ableitenden Klassen Zugriff auf Member und Methoden
Vererbung. Prof. Dr.-Ing. Thomas Schwotzer
Vererbung Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Bisher haben wir uns mit Klassen und Objekten beschäftigt. Das Konzept bestand darin, dass Methoden und Membervariable in einer Struktur zusammen
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
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
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
9. Vererbung und Polymorphie. Informatik Vererbung und Polymorphie 1
9. Vererbung und Polymorphie 1 Wiederholung Vererbung bedeutet, dass eine Klasse Attribute und Methoden an eine andere Klasse weitergeben kann. Im Klassendiagramm stellt man dies durch einen durchgezogenen
Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
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
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
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
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
7. Objektorientierung. Informatik II für Verkehrsingenieure
7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete
Eindimensionale Arrays und Heap
Eindimensionale Arrays und Heap Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Wir haben bisher mit einfachen Datentypen gearbeitet, d.h. Datentypen, die in einer Speicherzelle abgelegt werden können. Praktisch
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
Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017
Mapra: C++ Teil 6 Felix Gruber, Sven Groß IGPM, RWTH Aachen 13. Juni 2017 Felix Gruber, Sven Groß (IGPM, RWTH Aachen) Mapra: C++ Teil 6 13. Juni 2017 1 / 22 Was bisher geschah Klassen I Attribute und Methoden
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
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
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
C++ - Objektorientierte Programmierung Vererbung
C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.
2. Vererbung und Kapselung
2. Vererbung und Kapselung Die Objekte der Klasse BALL werden im Gegensatz zu den Objekten von KREIS noch nicht graphisch dargestellt. Um die BALL-Objekte auch graphisch darzustellen zu können, muss BALL
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Objektorientierung in C++ (3) Aspekte der Vererbung (1) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 546 Zuweisung bei Vererbung Dr. Frank Seifert Vorlesung
FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
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
Programmierkurs C++ Abstrakte Klassen und Methoden
Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double
Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.
Mehrfache Vererbung Daniel Beneckenstein 21. August 2006 Mehrfache Vererbung Ableitung einer Klasse von beliebig vielen Basisklassen: class A {... }; class B {... }; class C {... }; class D: public A,
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
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
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
Java I Vorlesung Vererbung und Sichtbarkeit
Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.
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,
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
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,
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
Praxis der Programmierung
Klassenvariablen und -methoden, Vererbung Institut für Informatik und Computational Science Henning Bordihn 1 Klassenvariablen und -methoden 2 Klassenvariablen und -methoden werden mit dem Schlüsselwort
Vererbung und Polymorphie
page1 Vererbung und Polymorphie Florian Adamsky, B Sc florianadamsky@iemthmde http://florianadamskyit/ cbd So wareentwicklung im SS 2014 page2 Outline 1 Ein ührung 2 Vererbung Formen der Vererbung 3 Polymorphie
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
Mehrdimensionale Arrays
Mehrdimensionale Arrays Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Eindimensionale Arrays haben wir bereits kennen gelernt. Es gibt aber auch mehrdimensionale Arrays. Die sind auch sehr notwendig, denken
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
Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt
Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung Prof. Redlich 6. Übungsblatt 21 (+4) Punkte Abgabe bis 31.01.2010 (08:00 Uhr) über GOYA Aufgabe
Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
Programmieren 1 09 Vererbung und Polymorphie
Programmieren 1 09 Vererbung und Polymorphie Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 I. VERERBUNG 2 2 Vererbung Von Interfaces übernehmen
Einführung in die Programmiersprache Java II
Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden
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
Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei
Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der
Implementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
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
Überblick. Überblick zum weiteren Inhalt
Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen
Objektorientierte Programmierung III
Objektorientierte Programmierung III OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen
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
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
Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am
Aufgabe 1 Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am 16.3.2002 Folgende Implementierung löst die gestellte Aufgabe : public interface Figur { public void anzeigen (); public
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
Einführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 10. Vererbung und Polymorphie Vererbung und Polymorphie in C++ Seite 2 Klassen können von anderen Klassen
C++ - Objektorientierte Programmierung Polymorphie
C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie
HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2
HSR Rapperswil 2001 Markus Rigling Programmieren: Vererbung 1 Variante 2 Inhaltsverzeichnis: 1. Was ist Vererbung...3 2. Anwendung...3 3. Realisierung...3 4. Vorgehensweise zur Erstellung einer Kind-Klasse...3
Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3
Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................
Einstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
Objektorientierte Programmierung
Objektorientierte Programmierung Bis jetzt kennen wir (fast) nur primitive Datentypen. Diese entsprechen weitestgehend der Hardware des Rechners (z.b. besitzt ein Rechner Hardware um zwei floats zu addieren).
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
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
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
Informatik II. Woche 13, Giuseppe Accaputo
Informatik II Woche 13, 30.03.2017 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Nachbesprechung Self-Assessment Test Nachbesprechung Übung 5 Java: Objektorientierte Programmierung Klassen und Objekte
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
OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
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/
Vererbung. Oberklassen und Unterklassen
Vererbung Oberklassen und Unterklassen Vererbung ist ein zentrale Bestandteil der Objektorientierung. Man beschreibt damit die Möglichkeit, Eigenschaften und Methoden vorhandener Klassen auf andere (neue)
Kapitel 8 Vererbung. Korbinian Molitorisz. IPD Tichy Lehrstuhl für Programmiersysteme
Kapitel 8 Vererbung Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Vererbung im Fall von Klassen
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);
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); Darf hier nicht stehen! Compiler sagt: Missing return statement
Objektorientierung (OO)
Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members
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
Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
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,
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
Begriffe 1 (Wiederholung)
Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.
Ü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
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
Grundlagen der Programmierung Teil1 Einheit III Okt. 2010
Grundlagen der Programmierung Teil1 Einheit III - 22. Okt. 2010 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Einschub Bevor wir mit den
Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
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
Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 10 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
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:
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
Programmieren in Java
Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von
Tag 8 Repetitorium Informatik (Java)
Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
Von der UML nach C++
22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete
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
Einführung in die Programmierung für NF. Zuweisungen, main- Methode und Kommentare
Einführung in die Programmierung für NF Zuweisungen, main- Methode und Kommentare Wiederholung: Deklara@on lokaler Variablen Eine Deklara'on einer lokalen Variablen (Declara'on) hat die Form Type VarName
Grundlagen der Informatik
Grundlagen der Informatik Polymorphie, Abstrakte Klassen, Mehrfachvererbung Prof. Dr.-Ing. Thomas Wiedemann Prof. Dr. rer.nat. Ralph Großmann Fachgebiet Informatik / Mathematik Überblick zum Inhalt Klassen-3
DAP2-Programmierpraktikum Einführung in C++ (Teil 2)
DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und
Einführung in die Programmierung für NF. Vererbung
Einführung in die Programmierung für NF Vererbung Ziele Vererbungsprinzip der objektorien=erten Programmierung verstehen und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden
Umsetzung einer Klassenkarte in einer Programmiersprache
Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,