Kurs OPR. Objektorientierte Programmierung

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

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

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

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

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Christian Schamott 1 / 26 Übersicht Gemeinsamkeiten 4 Arten geschachtelte Klassen Elementklasse Lokale Klassen Anonyme Klassen Statisch geschachtelte Klassen Christian Schamott 2

Mehr

Java Einführung Vererbung und Polymorphie. Kapitel 13

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

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

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

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

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege

Mehr

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11 EINI I Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 10/11 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

C++ - Objektorientierte Programmierung Vererbung

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.

Mehr

4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:

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

Mehr

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 06 31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009 PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2008/2009 FB Informatik

Mehr

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

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

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung

Mehr

Programmieren - Vererbung & Polymorphie

Programmieren - Vererbung & Polymorphie Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.

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

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Objektorientierte Programmierung. Kapitel 16: Pakete, Zugriffsschutz

Objektorientierte Programmierung. Kapitel 16: Pakete, Zugriffsschutz Stefan Brass: OOP (Java), 16. Pakete, Zugriffsschutz 1/30 Objektorientierte Programmierung Kapitel 16: Pakete, Zugriffsschutz Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14

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

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

Objektorientierung Grundbegriffe

Objektorientierung Grundbegriffe Objektorientierung Grundbegriffe Um Java programmieren zu können, ist es wichtig, einige objektorientierte Grundkenntnisse zu besitzen, denn die Sprache setzt voll auf dem OO-Paradigma auf. 3.1 Klassen

Mehr

Probeklausur: Programmierung WS04/05

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,

Mehr

Arten von Klassen-Beziehungen

Arten von Klassen-Beziehungen Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant

Mehr

Vererbung. Was versteht man unter dem Begriff Vererbung?

Vererbung. Was versteht man unter dem Begriff Vererbung? Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &

Mehr

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

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

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

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

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

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

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

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();

Mehr