Kurs OPR. Objektorientierte Programmierung

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Kurs OPR. Objektorientierte Programmierung"

Transkript

1 Kurs OPR Objektorientierte Programmierung Lektion: 005-Vererbung, Polymorphismus Zürcher Hochschule für Angewandte Wissenschaften Mitglied der Fachhochschule Zürich Version 1.4

2 Inhaltsverzeichnis 1 Vererbung Ziele Einführung Beispiel Ballon Sichtbarkeitsbereiche Klassendiagramm (class diagram) Überschriebene Methoden Überschriebene Attribute Konstruktoren Schlüsselwort final Erlaubte Operationen auf Objekte Erweitern von Bibliotheksklassen Polymorphismus Wiederverwendung von Software Professionelles Programmieren 19 Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 2

3 1 Vererbung 1.1 Ziele Sie können das Prinzip der Vererbung in eigenen Worten erklären. Sie können ein bestehendes Klassendiagramm interpretieren. Sie können selbständig ein einfaches Klassendiagramm aufstellen. Sie können die Sichtbarkeitsregeln anhand eines solchen Diagramms erklären. Sie können bestehende Klassen durch Vererbung erweitern. Sie können die Grundidee des Polymorphismus anhand eines Beispiels erklären. 1.2 Einführung Beispiel Auto: Eine Firma stellt einen PW her, 4-türig, mit Stufenheck Ein Kunde möchte einen solchen PW, aber als Caravan Was macht Entwicklungs-Ing.? Er hat folgende Alternativen: Er entwickelt ein neues Auto von Grund auf Unsinn!! Er übernimmt möglichst viel vom bestehendem PW. Noch besser ist er dran, wenn er bereits das erste Auto so modular entwickelt hat, dass die Umwandlung in einen Caravan einfach möglich ist. Dasselbe gilt für Softwareentwicklung: Nicht bei jedem neuen Programm soll das Rad wieder neu erfunden werden. Ein neues Programm soll möglichst aus bestehenden Softwarebausteinen aufgebaut werden: Die Bausteine bestehen bereits, sind getestet, haben sich bewährt. Alles andere ist häufig zu aufwändig, dauert zu lange und ist zu teuer! Ziele bei der Softwareentwicklung: Software möglichst aus bestehenden Komponenten aufbauen. Die wiederverwendeten Bausteine müssen dabei meistens an die neuen Anforderungen angepasst werden. Möglichst wiederverwendbare Softwarebausteine entwickeln. Objektorientierte Programmierung Die wiederverwendbaren Softwarebausteine sind die Klassen Ein Mechanismus für die Wiederverwendung ist die sogenannte Vererbung. 1.3 Beispiel Ballon Es seien zwei Klassen gegeben: Klasse Kugel Klasse Ballon, die von der Klasse Kugel abgeleitet ist. Die Klasse Ballon heisst Subklasse (Unterklasse) von der Klasse Kugel. Die Klasse Kugel heisst entsprechend Superklasse (Oberklasse) von der Klasse Ballon. Vererbungsmechanismus: Klasse Ballon erbt alle Attribute (Instanzvariablen) und Operationen (Methoden) von Klasse Kugel. Attribute und Operationen werden nicht einfach in die Subklasse kopiert, sondern alle Attribute Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 3

4 und Operationen der Klasse Kugel sind auch in der Klasse Ballon verfügbar. Abbildung 1: Graphische Darstellung der Klassenbehiehung zwischen Klasse Kugel und Klasse Ballon in UML (Unfied Modeling Language) Die Klasse Ballon erweitert die Klasse Kugel. Sie deklariert dazu zusätzliche Attribute: Color farbe zusätzliche Operationen: up(), down(), setfarbe(color col) Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 4

5 Die Klasse Ballon kann auch Operationen (und Attribute) der Klasse Kugel sogenannt überschreiben (override). Dazu wird in der Subklasse einfach nochmals eine Methode mit dem gleichen Methodenkopf wie die geerbte Methode geschrieben. Beispiel: Die Methode display(graphics g), die die Klasse Ballon von der Klasse Kugel erbt wird in der Klasse Ballon überschrieben. Achtung: Verwechseln Sie das Überschreiben einer Methode nicht mit dem Überladen (overloading) der Methode! Beachten Sie: Die Klasse Kugel wird durch die Vererbung nicht verändert! Objekte der Klasse Ballon haben somit folgende Attribute und Methoden: Abbildung 2: Ballon-Objekt Die Objekte besitzen alle Attribute und Operationen der Klasse Ballon und zudem die der Klasse Kugel. Zwischen der Klasse Ballon und der Klasse Kugel besteht eine sogenannte ist-ein - Beziehung: Jedes Ballon-Objekt ist gleichzeitig auch eine Kugel-Objekt, denn es besitzt alle Attribute und Methoden eines Kugel-Objekts. Objekte der Klasse Ballon können überall dort eingesetzt werden, wo ein Objekt der Klasse Kugel(Superklasse) erwartet wird, da sie dieselbe Schnittstelle (public-methoden und Variablen) nach aussen besitzt. Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 5

6 4.4 Vererbung in Java Das Erweitern einer Klasse ist in Java denkbar einfach: Bei der Deklaration der Subklasse muss nach dem Schlüsselwort extends die Superklasse angegeben werden, die erweitert werden soll. Die Subklasse erbt alle Instanzvariablen und Methoden der Superklasse. Allerdings kann die Subklasse nur auf Methoden und Attribute direkt zugreifen, die nicht private deklariert sind. Die Subklasse erhält keine Kopien der Variablen und Methoden, sondern den Zugriff auf die Instanzvariablen und Methoden der Superklasse. Die Subklasse kann sodann beliebig zusätzliche Methoden und Instanzvariablen deklarieren (wie bei einer normalen Klasse) Methoden überschreiben (overriding): Falls eine Methode in der Subklasse genau den gleichen Methodenkopf (Signatur) aufweist, wie eine Methode in der Superklasse, so wird die Methode der Superklasse überschrieben. Der Methodenkopf in der Subklasse muss genau mit demjenigen in der Superklasse übereinstimmen (gleicher Methodenname, gleiche Anzahl und gleicher Typ der Parameter, gleicher Rückgabetyp, gleiche Sichtbarkeit, static, falls überschriebene Methode auch static). Falls die Deklaration nicht genau mit der in der Superklasse übereinstimmt, wird die Methode überladen statt überschrieben! D.h. beide Methoden würden dann in der Subklasse nebeneinander existieren, die geerbte und die neu geschriebene. Einfachvererbung (single inheritence): Eine Subklasse kann in Java nur von einer direkten Superklasse erben, nicht von mehreren wie z.b. in C++. In Java gibt es dafür das Konzept der Interfaces. Deklaration einer Subklasse allgemein: class Subklassenname extends Superklassenname { Instanzvariablendeklarationen Methodendeklarationen Konstruktorendeklarationen EBNF 1: Deklaration einer Subklasse Beispiel: Die Klasse Ballon soll gemäss Abbildung 1von der Klasse Kugel abgeleitet werden: Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 6

7 Klasse Kugel: class Kugel { protected int x = 100, y = 100, radius = 40; public void setpos(int newx, int newy){ x = newx; y = newy; public void display(graphics g){ g.drawoval(x,y,radius,radius); Klasse Ballon: class Ballon extends Kugel { protected Color farbe = Color.green; public void setfarbe(color col){ farbe = col; public void up(){ y = y - 10; public void down(){ y = y + 10; public void display(graphics b){ Color fg = null; fg = b.getcolor(); b.setcolor(farbe); super.display(b); b.setcolor(fg); Programm 1: Klasse Ballon von Kugel abgeleitet 1.4 Sichtbarkeitsbereiche Im Zusammenhang mit Subklassen wird ein zusätzlicher Zugriffsmodifikator protected definiert. Ein Überblick über die bisher behandelten Zugriffsmodifikatoren zusammen mit den entsprechenden Sichtbarkeitsbereichen sind in folgender Tabelle zusammengefasst. Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 7

8 Sichtbarkeit Zugriffsmodifikator gleiche Klasse Subklasse andere Klasse private ja nein nein protected ja ja nein public ja ja ja Tabelle 1: Sichtbarkeitsbereiche Der Sichtbarkeitsbereich gilt jeweils für die Klasse selbst und alle Objekte der Klasse. D.h.eine private-instanzvariable ist nur innerhalb desselben Objekts sichtbar, eine private static Variable ist innerhalb der gleichen Klasse und allen Objekten davon sichtbar. public: public-methoden sind überall sichtbar, d.h. können von überall aus aufgerufen werden. public-instanzvariablen sind überall sichtbar, d.h. sie können von überall her gelesen und verändert werden. private: private-methoden/instanzvariablen sind nur innerhalb derselben Klasse sichtbar. abgeleitete und andere Klassen können auf diese Variablen nur indirekt via Methoden zugreifen. protected: protected-methoden/instanzvariablen sind sichtbar in allen Subklassen der Klasse, in der die Variable/Methode deklariert ist. Zur Erinnerung: lokale Variablen sind nur innerhalb derselben Methode sichtbar. Regeln für die Verwendung der Zugriffmodifikatoren: Nur Methoden, die einen Service für Benützer der Klasse bieten, als public deklarieren. Alle Instanzvariablen als private deklarieren. Zugriff nur via Methoden ermöglichen. Ausnahme: Private Instanzvariablen/Methoden, die aber auch in abgeleiteten Klassen gebraucht werden, müssen protected anstatt private deklariert werden. 1.5 Klassendiagramm (class diagram) Ganz allgemein zeigt ein Klassendiagramm die Beziehungen von Klassen untereinander. Sie stellt somit eine statische Sicht eines Systems dar. Vererbungs-Hierarchie Eine Klasse ohne explizite Superklasse ist in Java Subklasse von der Klasse Object. Jede Subklasse kann seinerseits von weiteren Subklassen erweitert werden. Dadurch entseht eine baumartige Hierarchie von Subklassen. Diese Vererbungs-Hierarchie von Klassen wird typischerweise in einem Klassendiagramm dargestellt. Beispiel: Abbildung 3 zeigt die Vererbungshierarchie der Klassen Kugel, Ball, Ballon, Billardkugel und Fussball als Klassendiagramm. Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 8

9 Die Subklassen erben alle Attribute (Instanzvariablen) und Operationen (Methoden) aller ihrer Superklassen. So erbt beispielsweise die Klasse Fussball die Methoden kick, updatepos und setradius von der Klasse Ball, die Methoden setpos und display von Kugel und die Methode equals von der Klasse Object. Die Klasse Fussball überschreibt die Methode display der Klasse Kugel und die Methode updatepos der Klasse Ball. Zudem wir die geerbte Methode kick überladen. Die Klasse Fussball erbt zudem die Attribute x, y und radius von der Klasse Kugel und vx und vy von der Klasse Ball. Die Klasse Fussball deklariert zusätzlich die Attribute z und vz. Ablauf der Suche einer Methode (oder Variablen) beim Aufruf: Falls eine Operation (oder Attribut) eines bestimmten Objekts aufgerufen wird, so wird diese in folgender Reihenfolge in den verschiedenen Klassen gesucht: zuerst in der Klasse des aktuellen Objekts. Falls sie nicht gefunden wird, in der direkten Superklasse in der nächst höheren Superklasse usw. schliesslich in der Klasse Object. Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 9

10 Object equals() Kugel int x, y, radius setpos(int x, int y) display(graphics g) int vx, vy Ball kick(int vx, int vy) updatepos(int dt) setradius(int r) Ballon Color farbe setfarbe(color col) up() down() display(graphics b) Billardkugel Color farbe int zahl display(graphics k) Fussball int z, vz kick(int vx, int vy, int vz) updatepos(int dt) display(graphics g) Abbildung 3: Klassendiagramm (Vererbungshierarche) der Klasse Kugel Aufgaben Lösen Sie anhand des Klassendiagramms in Abbildung 3 folgende Aufgaben: Welche Attribute und Operationen weist ein Objekt der Klasse Billardkugel auf? Schreiben Sie die Klasse Billardkugel. Sie soll einen Konstruktor enthalten, mit dem eine Billardkugel mit einer bestimmten Zahl an der gewünschten Stelle und in der gewünschten Farbe erzeugt werden kann. Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 10

11 Lösung: Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 11

12 1.6 Überschriebene Methoden Eine Methode einer Superklasse ist überschrieben, wenn in einer ihrer Subklassen eine Methode mit demselben Methodenkopf (Signatur) steht. Beim Überschreiben einer Methode ist die ursprüngliche Methode in der Superklasse von der Subklasse aus nicht mehr direkt aufrufbar. super.methodenname([argumentliste]); EBNF 2: Aufruf einer Methode in der Superklasse Falls die ursprüngliche Methode in der Superklasse von der Subklasse aus aufgerufen werden soll, so muss der Objektname super verwendet werden: super bezeichnet das aktuelle Objekt, das aber als Objekt der Superklasse interpretiert wird Dementsprechend wird die Methode der Superklasse aufgerufen. Beispiel: Methode display in Klasse Ballon public void display(graphics b){ Color fg; fg = b.getcolor(); b.setcolor(farbe); super.display(b); // ruft display in der Klasse Kugel auf b.setcolor(fg); super.super.methodenname(...) ist nicht erlaubt. Aufgabe Stellen Sie anhand des Klassendiagramms von Abbildung 3 fest, aus welcher Klasse die aufgerufene Methode stammt, falls Sie: die Methode up() eines Ballon-Objekts aufrufen die Methode display(graphics g) eines Ball-Objekts aufrufen. die Methode display(graphics g) eines Fussball-Objekts aufrufen. die Methode kick(int vx, int vy) eines Fussball-Objekts aufrufen. die Methode super.display(graphics g) eines Fussball-Objekts aufrufen. Lösung up() // Ballon-Obj. : display(graphics g) // Ball-Obj. : display(graphics g) // Fussball-Obb. : kick(int xv, int vy) // Fussball-Obj. : super.display(graphics g) // Fussball-Obj.: Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 12

13 1.7 Überschriebene Attribute Falls in der Subklasse eine Instanzvariable mit gleichem Namen wie in der Superklasse deklariert wird, ist die Instanzvariable der Superklasse in der Subklasse nicht mehr sichtbar (Shadowing). Die beiden Instanzvariablen haben ansonsten nichts miteinander zu tun. Das Überschreiben von Attributen sollte man möglichst vermeiden. 1.8 Konstruktoren Beim Erzeugen eines Objekts wird bekanntlich der entsprechende Kontstruktor ausgeführt. Dort werden normalerweise die Instanzvariablen des erzeugten Objekts initialisiert. Beim Erzeugen eines Objekts einer Subklasse, wird ebenfalls der entsprechende Kontstruktor ausgeführt, um dessen Instanzvariablen zu initialisieren. Damit nun aber auch die Instanzvariablen aller Superklassen der Klasse richtig initialisiert werden, läuft folgender Vorgang ab: Vor dem Ausführen der ersten Anweisung im Konstruktor der Subklasse wird der Standard- Konstruktor der Superklasse, Superklassenname(), ausgeführt. Konkret wird von Java automatisch die Anweisung super(); vor die erste Anweisung im Konstruktor der Subklasse eingefügt, was den Aufruf des Superkonstruktors bewirkt. Falls ein anderer als der Standard-Konstruktor in der Superklasse ausgeführt werden soll, so muss der Programmierer selbst diesen Superkonstruktor aufrufen, und zwar als erste Anweisung im Konstruktor der Subklasse. Diese Anweisung muss sogar vor allfälligen Variablendeklara-tionen stehen. Dies macht der Programmierer, indem er als erste Anweisung den Befehl super([parameterliste]); EBNF 3: Aufruf des Superkonstruktors im Konstruktor der Subklasse schreibt. Falls Java keine solche erste Anweisung findet, ruft es automatisch den Standard-Konstruktor der Superklasse auf, d.h. super(). Falls die Su perklasse keinen solchen Konstruktor besitzt, tritt ein Compilierungsfehler auf. Falls eine Klasse überhaupt keinen Konstruktor aufweist, wird von Java automatisch ein Standard-Konstruktor eingefügt. Dieser macht nichts anderes, als den Superkonstruktor aufzurufen und sieht dementprechend folgendermassen aus: Klassenname(){ super(); EBNF 4: Standard-Konstruktor Mit diesen Mechanismen garantiert Java, dass beim Erzeugen eines Objekts einer Klasse die Konstuktoren aller Superklassen der Klasse ausgeführt werden, bevor der Konstruktor der Klasse selbst ausgeführt wird. Der erste Konstruktor, der ausgeführt wird ist also der Konstruktor der Basisklasse Object, die Superklasse aller Klassen. Danach werden die Konstruktoren der direkten Subklassen der Reihe nach ausgeführt bis zur aktuellen Klasse. Beispiel: Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 13

14 Wird im Klassendiagramm von Abbildung 3 ein Objekt der Klasse Fussball erzeugt, so werden der Reihe nach folgende Konstruktoren ausgeführt: 1. Object(); 2. Kugel(); 3. Ball(); 4. FussBall(); Aufgabe: Zeichnen Sie den Programmablauf beim Erzeugen eines Objekts der Klasse Billardkugel auf, falls die Klassen folgende Konstruktoren definieren: public class Object { Object(){... public class Kugel { Kugel(){... Kugel(int radius){... class Billardkugel extends Kugel { Billardkugel(int inix, int iniy, Color col){ super(20); farbe = col; x = inix; y = iniy; 1.9 Schlüsselwort final Manchmal möchte man vermeiden, dass Instanzvariablen oder Methoden einer Klasse überschrieben werden. Dies kann man tun, indem man die Variable oder Methode als final deklariert. Folge: Eine final-methode oder -Variable kann nicht mehr überschrieben werden. Es können auch ganze Klassen als final deklariert werden: Folge: Die Klasse kann nicht mehr erweitert (subclassed) werden. Alle Methoden der Klasse sind dann automatisch auch final. Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 14

15 Beispiel: Die Klasse System ist als final deklariert. static final Variablen: Dies sind Klassenvariablen, die nicht überschrieben werden können. Diese Variablen entsprechen den Konstanten in anderen Sprachen. Java-Konvention: Namen von Konstanten in Grossbuchstaben schreiben. Beispiel: Die Konstante Pi = ist in der Klasse Math definiert und kann von überall her mit dem Namen Math.PI verwendet werden Erlaubte Operationen auf Objekte Bisher haben wir folgende Operationen auf Objekte kennen gelernt: Erzeugen eines Objekts aus seiner Klasse. Zuweisung zu einer Variablen derselben Klasse. Verwendung als Parameter und Rückgabewert bei einer Methode. Aufruf von Methoden der Klasse des Objekts. Mit der Vererbung kommen neu dazu: Methodenaufruf aller public- und protected-methoden in allen Superklassen des Objekts. Zuweisung eines Objekts einer Subklasse zu einer Variablen (d.h. einem Objekt) einer der Superklassen dieser Klasse Erweitern von Bibliotheksklassen Klassen in Bibliotheken können wie die selbst programmierten Klassen erweitert werden. Beispiel: Klasse Applet Um ein Applet zu schreiben, haben wir jeweils eine Subklasse der Klasse Applet geschrieben: public MyProgram extends Applet {... MyProgram erbt alle Methoden von der Klasse Applet und deren Superklassen. Die Methoden add() und repaint() z.b. werden von den Superklassen von Applet zur Verfügung gestellt. Die Methoden init() und paint(graphics g) der Klasse Applet müssen in MyProgram überschrieben werden. Wie findet man die nötigen Informationen über Bibliotheksklassen? In der Online-Dokumentation nachschauen (normalerweise direkt von der IDE aus möglich) In Java-Büchern (z.b. Java in a Nutshell ) 1.12 Polymorphismus Bei der Erzeugung eines Objekts wird Folgendes ein für allemal festgelegt: Die Identität des Objekts (eindeutige Kennzeichnung). Innerhalb des Programms ist dies die Referenz auf das Objekt. Die Klassenzugehörigkeit Sie bleibt erhalten, solange das Objekt existiert. Beachten Sie: Wird das Objekt einer Variablen einer Superklasse zugeordnet, so ändert nur die Interpretation des Objekts, nicht dessen Klassenzugehörigkeit! Wir wissen: Methoden einer Klasse können überschrieben oder überladen werden: Im Beispiel der Klasse Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 15

16 Tier in Figur wird die Methode display(graphics g) überschrieben in den Subklassen Schwein und Kuh. Objekte einer Subklasse können Objekten der Superklasse zugewiesen werden: Wir können deshalb ein Objekt einekuh der Klasse Kuh einer Variablen vom Typ Tier, z.b. der Variablen Tier meintier, zuweisen: Kuh einekuh = new Kuh(); Tier meintier = einekuh; Frage: Was passiert nun, wenn die Methode display(graphics g) des Objekts meintier aufgerufen wird? Tier display(grapics g) Schwein int beine = 4; Kuh int beine = 4; Schlange display(grapics g) display(grapics g) Abbildung 4: Polymorphismus Antwort: Die richtige Methode wird erst beim Aufruf der Methode anhand der Klassenidentität des aktuellen Objekts gesucht (dynamisches Binden). Ablauf der Suche: Zuerst wird in der Klasse (die bei der Erzeugung festgelegt wurde) des Objekts, in vorherigen Beispiel in der Klasse Kuh, nach einer passenden Methode gesucht (passender Name und Parameterliste). Falls nichts Passendes gefunden wurde, wird in der entsprechenden Superklasse gesucht. Falls nichts Passendes gefunden wurde, wird in der darüberliegenden Superklasse gesucht usw. Folge: Dieses dynamische Binden bewirkt, dass der gleiche Methodenaufruf (gleicher Objektname und gleicher Methodenname) je nach Klassenzugehörigkeit des Objekts zur Ausführung verschiedener Methoden führt! Dieses Verhalten ist eine mögliche Form von Polymorphismus (Vielgestaltigkeit). Beispielprogramm Tiere Die Auswirkungen der Polymorphismus sollen am Beispiel von veranschaulicht werden. Das BeispielpProgramm 2 (Tiere) basiert auf dem Klassendiagramm von Abbildung 4. Wird das Programm ausgeführt, so entsteht die Bildschirmausgabe gemäss Abbildung 5. Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 16

17 Abbildung 5: Bildschirmausgabe der Programms Tiere Erklärungen zum Programmablauf: Die Methode display(...) der Klasse Tier wird von den Subklassen Kuh und Schwein überschrieben, nicht jedoch von Schlange. Ein Objekt der Klasse Kuh kann nun dem Objekt meintier der Klasse Tier zugewiesen werden, da Tier Superklasse der Klasse Kuh ist. Wird nach dieser Zuweisung die Methode meintier.display (...) aufgrufen, so bestimmt Java die richtige display-methode dynamisch anhand der Klasse des aktuellen Objekts. Da das Objekt meintier nach der obigen Zuweisung eigentlich eine Instanz der Klasse Kuh ist, wird in diesem Fall Kuh.display(...) ausgeführt. Das Gleiche spielt sich ab, wenn ein Objekt der Klasse Schwein dem Objekt meintier zugewiesen wird. Wird ein Objekt der Klasse Schlange dem Objekt meintier zugewiesen, so wird die display-methode der Klasse Tier ausgeführt, da die Klasse Schlange diese Methode nicht überschrieben hat. Der gleiche Methodenaufruf meintier.display(...)führt also je nach der Klassen-zugehörigkeit des Objekts eine Methode einer anderen Klasse aus. Polymorphismus funktioniert nur für Methoden (polymorphe Operationen), nicht aber für Instanzvariablen. Man spricht deshalb bei Variablen häufig von Überdecken (Shadowing) anstatt Überschreiben. Das Progamm Tiere: import java.awt.*; import java.applet.applet; public class Tiere extends Applet { Tier meintier, tier1; Kuh berta; Schwein franz; Schlange rosa; public void init(){ tier1 = new Tier(); berta = new Kuh(); franz = new Schwein(); rosa = new Schlange(); Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 17

18 public void paint(graphics g) { meintier = tier1; meintier.display(g); // ruft Tier.display() auf meintier = berta; meintier.display(g); // ruft Kuh.display() auf meintier = franz; meintier.display(g); // ruft Schwein.display() auf meintier = rosa; meintier.display(g); // ruft Tier.display() auf class Tier { protected static int y = 20; public void display(graphics g){ g.drawstring("ich bin ein Tier",20,y); y = y + 20; class Kuh extends Tier { private int beine = 4; public void display(graphics g){ g.drawstring("ich bin eine Kuh",20,y); y = y + 20; class Schwein extends Tier { private int beine = 4; public void display(graphics g){ g.drawstring("ich bin ein Schwein",20,y); y = y + 20; class Schlange extends Tier { private boolean giftig; Programm 2: Tiere Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 18

19 1.13 Wiederverwendung von Software Wiederverwendung von Software spart Zeit (z.b. die Klassen von AWT und Klasse Math). Meist existiert schon Software, die 90% der Funktionalität aufweist. Ändern einer bestehenden Software ist aufwändig: Neue Fehler, Inkompatibilitäten mit anderen Komponenten können entstehen Umfangreiche Tests auch der bestehenden Teile werden daher nötig. Lösungsansatz des OOP: Die verwendeten Teile der Software werden belassen wie sie sind. Nötige Änderungen und Ergänzungen erreicht man durch Vererbung und Erweiterung. Empfohlenes Vorgehen bei der Softwareentwicklung: Anforderungen an das Programm studieren. Klassen in der Bibliothek suchen, die die Funktionalität am ehesten erfüllen. Klasse erweitern, um die nötigen Erweiterungen zu programmieren. Prüfen, ob Subklasse in einer ist-ein -Beziehung zur Superklasse steht Professionelles Programmieren Keine überschriebenen Methoden im Super-Konstruktor aufrufen. Keine Referenzen auf final-objekte nach aussen geben, da nur Referenz konstant ist, Objektdaten können geändert werden. Klassen, die beerbt werden sollen, müssen entsprechend designed und dokumentiert (z.t. mit Implementierungsdetails) werden. Vererbung, Polymorphismus.doc 2010 InIT/ZHAW 19

Vererbung, Polymorphismus

Vererbung, Polymorphismus Vererbung, Polymorphismus Einführung Beispiel Automobilbau: Eine Firma produziert eine Limousine Vererbung zur Erweiterung Vererbung zur Anpassung Oberklassen Aufruf Konstruktoren Polymorphismus Ein Kunde

Mehr

Vererbung, Polymorphismus

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

Mehr

3 Objektorientierte Konzepte in Java

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

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Einstieg in die Informatik mit Java

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

Mehr

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

Mehr

Vererbung, Polymorphie

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

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

Programmieren in Java

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

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

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

Mehr

Objektorientierte Programmierung III

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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus Vererbung Generalisierung und Spezialisierung Vererbung und Polymorphismus Wir wollen in unserem Aquarium verschiedene Arten von Fischen schwimmen lassen. In einem ersten Ansatz definieren wir nicht nur

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

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

Mehr

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

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

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

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

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

Mehr

Begriffe 1 (Wiederholung)

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.

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Programmieren in Java

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

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

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

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

Mehr

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

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

13. Tutorium zu Programmieren

13. Tutorium zu Programmieren 13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting

Mehr

Programmiertechnik Objektorientierung

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

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Mehr

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Kompetent objektorientiert programmieren

Kompetent objektorientiert programmieren Kompetent objektorientiert programmieren Aegidius Plüss, Bern, www.aplu.ch Eine objektorientierte Programmiersprache steht auf drei fundamentalen Säulen: Klassenkapselung (encapsulation) Vererbung (inheritance)

Mehr

Einführung in die Programmiersprache Java II

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

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

Klassen in Java. Klassen

Klassen in Java. Klassen Klassen in Java Klassen Klassen beschreiben Objekte, die abstakte oder konkrete Sachverhalte modellieren. Objekte sind durch einen Status gekennzeichnet (State). Der Status eines Objektes ergibt sich aus

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung

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

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

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,

Mehr

2. Vererbung und Kapselung

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

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Tafelübung 07 Algorithmen und Datenstrukturen

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

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

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

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

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

Mehr

Vererbung und Polymorphie

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

Mehr

1 Klassen und Objekte

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

Mehr

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

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,

Mehr

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

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:

Mehr

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

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

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

Mehr

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon. Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe

Mehr

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

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

Mehr

Implementieren von Klassen

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

Mehr

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2 EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2

Mehr

OO Softwareentwicklung

OO Softwareentwicklung OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

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

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr