Kurs OPR. Objektorientierte Programmierung

Save this PDF as:
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

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

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

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

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

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

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

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

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

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

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

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

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

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

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

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

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

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

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

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

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

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

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

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

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

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

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

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

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

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

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

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

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 Programmierung für NF

Einführung in die Programmierung für NF Einführung in die Programmierung für NF UML Valerie Holmeyer Michael Kirsch Direct Feedback Eure Mitarbeit ist mir wichbg Quiz nach den jeweiligen AbschniGen Jeder kann mitmachen App socra&ve auf Smartphone

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 Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

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

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

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

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN Wir wollen nun die Rechengesetze der natürlichen Zahlen auf die Zahlenmenge der ganzen Zahlen erweitern und zwar so, dass sie zu keinem Widerspruch mit bisher geltenden

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

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

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Kurzanleitung. Toolbox. T_xls_Import

Kurzanleitung. Toolbox. T_xls_Import Kurzanleitung Toolbox T_xls_Import März 2007 UP GmbH Anleitung_T_xls_Import_1-0-5.doc Seite 1 Toolbox T_xls_Import Inhaltsverzeichnis Einleitung...2 Software Installation...2 Software Starten...3 Das Excel-Format...4

Mehr

Vgl. Oestereich Kap 2.7 Seiten 134-147

Vgl. Oestereich Kap 2.7 Seiten 134-147 Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

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

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler

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

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Abschnitt 12: Strukturierung von Java-Programmen: Packages Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung

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

SWE5 Übungen zu Software-Engineering

SWE5 Übungen zu Software-Engineering 1 Übungen zu Software-Engineering 1) Klassen und Objekte 2) Telefonanlage 3) Objekt- und Klassendiagramme 4) Assoziationen 5) Telefonanlage (Erweiterung) 6) Fahrzeuge 7) Familien 2 Aufgabe 1: Klassen und

Mehr

INE2 OOP mit Java 2 Vererbung, Polymorphismus. Vererbung zur Erweiterung Vererbung zur Anpassung Oberklassen Aufruf Konstruktoren Polymorphismus

INE2 OOP mit Java 2 Vererbung, Polymorphismus. Vererbung zur Erweiterung Vererbung zur Anpassung Oberklassen Aufruf Konstruktoren Polymorphismus INE2 OOP mit Java 2 Vererbung, Polymorphismus Vererbung zur Erweiterung Vererbung zur Anpassung Oberklassen Aufruf Konstruktoren Polymorphismus Einführung Beispiel Automobilbau: Eine Firma produziert eine

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

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

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

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

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

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

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

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

MCRServlet Table of contents

MCRServlet Table of contents Table of contents 1 Das Zusammenspiel der Servlets mit dem MCRServlet... 2 1 Das Zusammenspiel der Servlets mit dem MCRServlet Als übergeordnetes Servlet mit einigen grundlegenden Funktionalitäten dient

Mehr

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

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

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Die Lernumgebung des Projekts Informationskompetenz

Die Lernumgebung des Projekts Informationskompetenz Beitrag für Bibliothek aktuell Die Lernumgebung des Projekts Informationskompetenz Von Sandra Merten Im Rahmen des Projekts Informationskompetenz wurde ein Musterkurs entwickelt, der den Lehrenden als

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

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

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

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

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

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Internet Explorer Version 6

Internet Explorer Version 6 Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden. Track in Route umwandeln ACHTUNG: Ein Track kann nur dann in eine Route umgewandelt werden, wenn der Track auf Wegen gefahren wurde. Ein Querfeldein-Track kann nicht in eine Route umgewandelt werden, da

Mehr

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Bilder zum Upload verkleinern

Bilder zum Upload verkleinern Seite 1 von 9 Bilder zum Upload verkleinern Teil 1: Maße der Bilder verändern Um Bilder in ihren Abmessungen zu verkleinern benutze ich die Freeware Irfan View. Die Software biete zwar noch einiges mehr

Mehr