FHZ. mycar modell = DöSchwo leistung = 2 PS. Personenwagen modell leistung anzahlpersonen starten() beschleunigen() bremsen() anzahlpersonen = 5

Größe: px
Ab Seite anzeigen:

Download "FHZ. mycar modell = DöSchwo leistung = 2 PS. Personenwagen modell leistung anzahlpersonen starten() beschleunigen() bremsen() anzahlpersonen = 5"

Transkript

1 1 Einleitung Sie haben die Begriffe Klasse und Objekt bereits kennen gelernt. Sie wissen, dass eine Klasse eine Beschreibung für gleichartige Objekte ist. Sie definiert, welche Attribute und Operationen alle Objekte besitzen, die zu dieser Klasse gehören. Zum Beispiel können wir eine Klasse Personenwagen definieren. Die Klasse definiert die gemeinsamen Attribute und Operationen aller Autos. Anhand der Klasse Personenwagen können wir dann beliebig viele Autos, oder eben Personenwagen-Objekte, erzeugen. Im Klassendiagramm könnte das so aussehen: Personenwagen modell leistung anzahlpersonen starten() beschleunigen() bremsen() mycar modell = DöSchwo leistung = 2 PS anzahlpersonen = 5 othercar modell = Mercedes 500 leistung = 200 PS anzahlpersonen = 5 So weit, so gut. Was nun, wenn wir eine Klasse für Lastwagen schreiben sollen? Müssen wir dann nicht Attribute und Operationen, welche in der Klasse Personenwagen schon definiert sind, nochmals definieren? Zum Beispiel haben ja auch Lastwagen einen Motor mit einer Leistung. Dies ist ein Attribut, welches für alle Motorfahrzeuge gilt. Was uns fehlt, ist ein übergeordnetes, allgemeineres Konzept. Seite 1/31

2 2 Klassenhierarchien Die Lösung für unser Problem sieht folgendermassen aus: Wir definieren zuerst eine Klasse Motorfahrzeug. Diese enthält alle gemeinsamen Attribute und Operationen von Motorfahrzeugen. Im Klassendiagramm: Motorfahrzeug modell leistung starten() beschleunigen() bremsen() Mit Hilfe dieser Klasse können wir nun unsere bestehende Klasse Personenwagen sowie die neue Klasse Lastwagen auf einfachere Weise definieren: Wir sagen nur noch, welche zusätzlichen Attribute und Eigenschaften diese Klassen haben. Gleichzeitig legen wir fest, dass die Klassen auch über sämtliche Eigenschaften der Klasse Motorfahrzeug verfügen. Seite 2/31

3 Wieder in UML: Der Pfeil von der Klasse Personenwagen zur Klasse Motorfahrzeug symbolisiert, dass die Klasse Personenwagen neben ihren eigenen Attributen und Operationen auch über all jene der Klasse Motorfahrzeug verfügt. Man sagt, die Klasse Personenwagen erbt die Attribute und Operationen von der Klasse Motorfahrzeug. Man sagt auch, die Klasse Personenwagen ist von der Klasse Motorfahrzeug abgeleitet oder die Klasse Personenwagen erweitert die Klasse Motorfahrzeug. Motorfahrzeug ist die Superklasse und Personenwagen ist die Subklasse. Die drei Klassen bilden eine Klassenhierarchie. Geht man in der Hierarchie nach oben, so kommt man zu immer allgemeineren Klassen. Ein Personenwagen ist z.b. ein spezielles Motorfahrzeug; man spricht deshalb auch von einer is-a-beziehung. Geht man nach unten, findet man immer spezialisiertere Klassen. Seite 3/31

4 Aufgabe 1: a) Erweitern Sie obige Klassenhierarchie um folgende Elemente: - Eine Klasse für Motorräder - Eine Klasse für Cabriolets Zeichnen Sie ein paar Attribute und Operationen ein, welche typisch für die beiden neuen Klassen sind. b) Überlegen Sie sich, wie eine Klasse Fahrrad in die Klassenhierarchie integriert werden könnte. Zeichnen Sie ihren Vorschlag im Klassendiagramm ein. Seite 4/31

5 3 Vererbung versus Aggregation Die Gefahr besteht, mit der Zeit zu sehr grossen und unübersichtlichen Klassenhierarchien zu kommen. Beispielsweise könnte man versucht sein, zwischen Motorfahrzeugen mit Elektroantrieb und solchen mit Verbrennungsmotor zu unterscheiden. Das würde aber zu einer Verdoppelung von Klassen führen, denn es gibt ja für beide Antriebsarten Personenwagen. Hier wäre vielmehr ein Aggregations-Beziehung (vgl. has-a- Beziehung) zwischen der Klasse Motorfahrzeug und einer Klasse Motor angezeigt. Die Klasse Motor könnte dann ihrerseits wieder abgeleitet werden. In UML: Motorfahrzeug Motor leistung Elektromotor Verbrennungsmotor Wichtig zu wissen ist, dass es nicht DAS Klassendiagramm für ein bestimmtes Problem gibt! Die möglichen Lösungen sind meist sehr vielfältig und Modellieren ist ein iterativer, d.h. sich wiederholender Prozess. Seite 5/31

6 4 Umsetzung in Java Wie man in Java eine Klasse definiert, das wissen Sie bereits. Neu für Sie ist, wie man in Java eine Klasse von einer anderen ableitet. Und eigentlich haben Sie auch das schon x-mal gemacht: class MyApplet extends Applet { Mit dem Schlüsselwort extends kann man definieren, von welcher Klasse eine neue Klasse abgeleitet sein soll. In UML: Seite 6/31

7 Das Motorfahrzeug-Beispiel würde demnach folgendermassen in Java umgesetzt: class Motorfahrzeug { public String modell; // Vorsicht mit public! public double leistung; public void starten() { class Personenwagen extends Motorfahrzeug { public int anzahlpersonen; // Vorsicht mit public! Seite 7/31

8 5 Zugriff auf Instanzvariablen und Methoden der Superklasse(n) 5.1 Schlüsselwort public Aus abgeleiteten Klassen kann grundsätzlich auf alle public- Elemente der Superklasse (und wiederum derer Superklasse etc.) zugegriffen werden, wie wenn diese in der eigenen Klasse definiert wären. Im obigen Beispiel kann also eine Methode in der Klasse Personenwagen auf die Instanzvariablen modell und leistung zugreifen, welche in Motorfahrzeug deklariert sind. Ebenso kann sie die Methode starten() direkt aufrufen: class Personenwagen extends Motorfahrzeug { public void demomethode() { leistung = ; starten(); Seite 8/31

9 5.2 Schlüsselwort private Hingegen kann aus einer abgeleiteten Klasse auf keine private- Elemente der Superklasse (weder Instanzvariablen noch Methoden) zugegriffen werden. Guter Programmierstil ist, Instanzvariablen möglichst als private zu deklarieren! Zugriffe auf die Instanzvariablen erfolgen dann ausschliesslich über entsprechende set- und get- Zugriffsmethoden, welche auch allfällige Integritätsbedingungen sicherstellen. Zudem kann so gegebenenfalls die interne Repräsentation einfach und lokal in der Klasse geändert werden. class Motorfahrzeug { private String modell; private double leistung; public void setleistung(double l) { if (l > 0.0) leistung = l; public void starten() { class Personenwagen extends Motorfahrzeug { public void demomethode() { setleistung(2000.0); starten(); Seite 9/31

10 5.3 Schlüsselwort protected Die Zugriffsregel für private-elemente kann zu einschränkend sein. Aus diesem Grund gibt es in Java das Schlüsselwort protected, welches erlaubt, Elemente einer Klasse für die abgeleiteten Klassen zugänglich zu machen, gegen "aussen" aber zu schützen. Fehlt ein Schlüsselwort private, protected oder public, so wird der Zugriff gemäss untenstehender Tabelle geregelt. Wie Sie sehen, wird dann der Zugriff relativ restriktiv gehandhabt. Zugriff von: eigener Klasse Klasse im gleichen Package Unterklasse aus anderem Package Nicht-Unterklasse aus anderem Package private ja nein nein nein - ja ja nein nein protected ja ja ja* nein public ja ja ja* ja* (*) Die Klasse muss dann natürlich importiert sein. Bemerkung: Ein Package fasst Klassen zusammen, die eng miteinander kooperieren oder die zumindest konzeptionell zusammengehören. Die Klassen müssen dazu auch im gleichen Verzeichnis gespeichert sein (siehe später). Seite 10/31

11 Aufgabe 2: Wir möchten eine Klassenhierarchie für Grafiken entwickeln (z.b. für ein Grafikprogramm). Eine Grafik soll aus Kreisen oder Rechtecken bestehen. Beides sind Figuren. Gesucht sind Klassen, welche die wesentlichen Informationen sowie die notwendigen Methoden gemäss folgender Beschreibung enthalten: Das Rechteck ist durch seine Breite und Höhe definiert, der Kreis durch seinen Radius. Kreis und Rechteck ist gemeinsam, dass sie sich an einem bestimmten Ort auf dem Bildschirm befinden. Dieser ist definiert durch die linke, obere Ecke des Rechtecks oder eines gedachten, den Kreis umgebenden Rechtecks. Beide haben eine Methode display(), um sich auf dem Bildschirm zu zeichnen, sowie einen Konstruktor, welcher die nötigen Parameter für eine vollständige Festlegung eines Kreis- bzw. eines Rechteck-Objekts aufweist. Schliesslich soll eine Methode moveto() zum Verschieben von Kreis- und Rechteck-Objekten an einen neuen Ort vorhanden sein. Die Methode hat als Parameter die Koordinaten des neuen Ortes. Zeichnen Sie ein Klassendiagramm und versuchen Sie, die beiden Klassen Rectangle und Circle sowie die übergeordnete Klasse Figure gemäss den obigen Angaben zu programmieren. Überlegen Sie sich, welche Instanzvariablen und Methoden in welche Klassen gehören. Die Regel heisst: Gemeinsame "Dinge" gehören in die Superklasse. Studieren Sie die Unterlagen noch nicht weiter, denn Sie wollen ja selber eine Lösung erarbeiten! Seite 11/31

12 Seite 12/31

13 Klassendiagramm in UML: Figure -xpos:int -ypos:int +Figure(x:int, y:int) +moveto(x:int, y:int):void +setxpos(x:int):void +setypos(y:int):void +getxpos():int +getypos():int Circle -radius:int Rectangle -width:int -height:int +Circle(x:int, y:int, r:int) +setradius(r:int):void +getradius():int +display(g:graphics):void +Rectangle(x:int, y:int, w:int, h:int) +setsize(w:int, h:int):void +getwidth():int +getheight():int +display(g:graphics):void Bemerkung: Obiges Klassendiagramm hält explizit Sichtbarkeit, Datentypen, formale Parameter sowie die Datentypen der Rückgabewerte fest. Die UML schreibt diese Vollständigkeit nicht vor. Entsprechend dem Kontext, in dem das Klassendiagramm verwendet wird, kann man teilweise oder ganz auf diese Präzisierungen verzichten. Seite 13/31

14 Java-Sourcecode: class Figure { private int xpos; private int ypos; public Figure(int x, int y) { xpos = x; ypos = y; public void moveto(int x, int y) { xpos = x; ypos = y; public void setxpos(int x) { xpos = x; public void setypos(int y) { ypos = y; public int getxpos() { return xpos; public int getypos() { return ypos; Seite 14/31

15 import java.awt.graphics; class Circle extends Figure { private int radius; public Circle (int x, int y, int r) { super(x, y); radius = r; public void setradius(int r) { radius = r; public int getradius() { return radius; public void display(graphics g) { g.drawoval(getxpos(), getypos(), 2*radius, 2*radius); Seite 15/31

16 import java.awt.graphics; class Rectangle extends Figure { private int width; private int height; public Rectangle(int x, int y, int w, int h){ super(x, y); width = w; height = h; public void setsize(int w, int h) { width = w; height = h; public int getwidth() { return width; public int getheight() { return height; public void display(graphics g) { g.drawrect(getxpos(), getypos(), width, height); Seite 16/31

17 Bemerkungen: Alle Instanzvariablen sind private deklariert. Zugriffe erfolgen ausschliesslich über set- und get-zugriffsmethoden. Jedes Rechteck-Objekt ist auch ein Figur-Objekt. Ebenso ist jedes Kreis-Objekt ein Figur-Objekt. Erstere sind Spezialisierungen von letzteren. Deshalb muss der Konstruktor Rectangle() in einem ersten Schritt ein Figur-Objekt konstruieren und darf erst in einem zweiten Schritt rechteckspezifische Belange berücksichtigen! Mit super (vgl. super(), super.variable, super.methode()) kann explizit Bezug auf die Oberklasse genommen werden. So ruft super(x, y) den entsprechenden Konstruktor der Oberklasse Figure auf. Besitzt die Oberklasse gar keinen explizit deklarierten Konstruktor, so ist ein super()-aufruf nicht zwingend notwendig. Es wird dann sozusagen ein leerer Default-Konstruktor aufgerufen. Besitzt die Oberklasse einen explizit deklarierten Konstruktor ohne Parameter, so ist ein super()-aufruf ebenfalls nicht zwingend erforderlich; er wird in diesem Fall automatisch aufgerufen. Aufgabe 3: Angenommen die Instanzvariablen xpos und ypos der Klasse Figure seien nur protected deklariert. Schreiben Sie für diesen Fall nochmals den Quellencode für die Klassen Rectangle und Circle. Seite 17/31

18 6 Anwendung der eigenen Grafik-Klassen Die Klassen, welche wir in der obigen Aufgabe entwickelt haben, können wir jetzt zum Beispiel in einem Applet einsetzen: import java.awt.*; import java.applet.applet; public class Figurlet extends Applet { private Rectangle myrectangle; private Circle mycircle; public void init() { myrectangle = new Rectangle(100,100,20,40); mycircle = new Circle(200,100,30); public void paint(graphics g) { myrectangle.display(g); mycircle.display(g); Seite 18/31

19 Schliesslich könnten wir in unserem Applet auch die moveto()- Methoden aufrufen (z.b. als Antwort auf ein Event): myrectangle.moveto(newx, newy); mycircle.moveto(newx, newy); Bemerkung: Beachtenswert ist, dass wir die Methode moveto() bei einem Rechteck- bzw. bei einem Kreis-Objekt aufrufen. Effektiv ist die Methode aber in der Klasse Figure definiert. Rechteck- und Kreis-Objekt sind aber gleichzeitig auch Figur-Objekte! Klassendiagramm in UML: Seite 19/31

20 7 Zuweisung von Objekten zu Referenzvariablen Ein Objekt einer bestimmten Klasse (vgl. Rectangle) darf man jederzeit einer anderen Referenzvariablen derselben Klasse zuweisen (vgl. rect2). Auch dürfen gleichzeitig mehrere Referenzvariablen ein und dasselbe Objekt referenzieren (vgl. rect2 und rect3). Der Spezialwert null für "kein Objekt" kann immer zugewiesen werden. Rectangle rect1 = new Rectangle(10,10,20,30); Rectangle rect2 = rect1; Rectangle rect3 = rect2; rect1 = null; Gemäss Vererbungshierarchie gilt, dass ein Rechteck-Objekt gleichzeitig auch ein Figur-Objekt ist. Deshalb ist es auch möglich, ein Rectangle-Objekt einer Figure-Referenzvariablen zuzuweisen. Rectangle rect = new Rectangle(10,10,20,30); Figure fig = rect; Allerdings sind wir jetzt bezüglich der Möglichkeiten eingeschränkt, welche wir mit fig haben! Wichtig zu wissen ist, dass ein Objekt seine Klassenzugehörigkeit und seine Interna IMMER beibehält, auch wenn es von einer Referenzvariablen einer Oberklasse referenziert wird. (Es findet also keine Umwandlung der internen Darstellung statt, wie das bei der Zuweisung von Werten elementarer Datentypen passieren kann.) Allerdings ändert sich die Betrachtungsweise des Objektes; man betrachtet das Objekt sozusagen durch die "Brille der Oberklasse": Seite 20/31

21 Über fig kann nur auf die public Methoden und Instanzvariablen der Klasse Figure zugegriffen werden, denn fig kann ein Rectangle-, Circle- oder Figure-Objekt referenzieren! Weiter ist ein Zugriff auf Methoden und Instanzvariablen von Oberklassen möglich, falls diese zugänglich sind. rect = fig; // => Compilerfehler!! rect = (Rectangle) fig; // => korrekt Weil fig auch ein Circle-Objekt referenzieren kann, ist die erste Zuweisung nicht erlaubt! Der Compiler wird mit einer Fehlermeldung reagieren, weil man eine "allgemeinere Referenz" einer "spezielleren Referenz" zuweisen will. Die zweite Zuweisung mit dem Cast ist hingegen korrekt. Der Cast ist sozusagen eine Zusicherung/ein Versprechen, dass fig ein Rectangle-Objekt referenziert und die Zuweisung demzufolge möglich ist. Stellt sich zur Laufzeit heraus, dass dem nicht so ist, wird ein Laufzeitfehler bzw. eine Exception die Folge sein! Seite 21/31

22 8 Überschreiben von Methoden und Polymorphismus In unserem Beispiel fällt auf, dass beide Klassen Rectangle und Circle je eine Methode display() haben. Von der Idee her machen beide Methoden dasselbe, sie zeichnen ihr Objekt. Eigentlich könnte man wünschen, dass jede Figur eine display()-methode hat. Wie die Methode eine Figur zeichnet, hängt dann von der konkreten Situation bzw. vom konkreten Objekt ab. Ist die Figur ein Rechteck wird ein Rechteck gezeichnet etc. Genau das kann Java: Wir definieren zusätzlich auch in der Klasse Figure eine Methode display(). Diese Methode wird genau dann aufgerufen, falls fig ein Figur-Objekt referenziert. Referenziert fig aber ein Objekt einer Unterklasse, z.b. ein Kreis-Objekt, so wird automatisch die korrespondierende Methode display() der Unterklasse Circle aktiviert. class Figure { public void display(graphics g) { g.drawstring("i'm a Figure.", xpos, ypos); Seite 22/31

23 class Circle extends Figure { public void display(graphics g) { g.drawoval(getxpos(), getypos(), 2*radius, 2*radius); class Rectangle extends Figure { public void display(graphics g) { g.drawrect(getxpos(), getypos(), width, height); Die Methode display() ist sowohl in der Klasse Figure wie auch in den Klassen Circle und Rectangle definiert. Die Methodenköpfe (Signaturen) müssen dabei absolut gleich sein! Man nennt dies Überschreiben einer Methode. Seite 23/31

24 Damit können wir nun in einer Anwendung folgendes tun: Figure fig1 = new Figure(10, 120); Figure fig2 = new Rectangle(10, 10, 20, 30); Figure fig3 = new Circle(10, 60, 40); public void paint(graphics g) { fig1.display(); fig2.display(); fig3.display(); fig1 bis fig3 sind drei Referenzvariablen für Figur-Objekte. Ihnen werden je ein Figure-, Rectangle- und Circle-Objekt zugewiesen. In der paint()-methode wird bei allen drei Referenzvariablen die display()-methode aufgerufen. Weil die Methode display() in den abgeleiteten Klassen überschrieben ist, geschieht folgendes: Es wird bei allen drei Aufrufen immer diejenige Variante von display() ausgeführt, welche zur Klasse bzw. zum Objekt gehört, das referenziert wird. fig1.display() => Text ausgeben fig2.display() => Rechteck zeichnen fig3.display() => Kreis zeichnen Dies ist ein sehr mächtiges Konzept und wird in der objektorientierten Programmierung oft angewendet. Es erlaubt, unabhängigen Code zu schreiben. Wenn eine neue Figur-Klasse, z.b. für Dreiecke, eingeführt wird, so sind die Änderungen am bestehenden Code minimal. Das Konzept segelt auch unter dem Begriff Polymorphismus oder frei übersetzt "Vielgestaltigkeit". Seite 24/31

25 Klassendiagramm in UML: Applet Figurlet has-a 3 Figure +moveto() +display() is-a is-a is-a Rectangle Circle +display() +display() 9 Abstrakte Klassen Ist die Sachlage so, dass Objekte der Klasse Figure keinen Sinn machen, so kann die Klasse als abstract deklariert werden. Es ist dann nicht mehr möglich, Objekte dieser Klasse zu instanzieren. Damit wird auch die Methode display() in der Klasse Figure nie mehr zur Ausführung gelangen. Trotzdem macht es Sinn, eine abstrakte Methode display() bzw. den entsprechenden Methodenkopf in der Klasse Figure zu deklarieren. Damit wird zum Ausdruck gebracht, dass sämtliche Figur-Objekte eine Methode display() besitzen, die allerdings in den Unterklassen noch implementiert werden müssen. Die abstrakte Klasse Figure garantiert damit ein bestimmtes Verhalten für sämtliche Figur-Objekte. Seite 25/31

26 Randbemerkung: Ein Interface bzw. eine Schnittstellenklasse ermöglicht Ähnliches, aber ohne Gebrauch der klassischen Vererbung (siehe später). Klassendiagramm in UML: Figure -xpos:int -ypos:int +Figure(x:int, y:int) +moveto(x:int, y:int):void +setxpos(x:int):void +setypos(y:int):void +getxpos():int +getypos():int +display(g:graphics):void Circle -radius:int Rectangle -width:int -height:int +Circle(x:int, y:int, r:int) +setradius(r:int):void +getradius():int +display(g:graphics):void +Rectangle(x:int, y:int, w:int, h:int) +setsize(w:int, h:int):void +getwidth():int +getheight():int +display(g:graphics):void Seite 26/31

27 abstract class Figure { public abstract void display(graphics g); class Circle extends Figure { public void display(graphics g) { g.drawoval(getxpos(), getypos(), radius, radius); class Rectangle extends Figure { public void display(graphics g) { g.drawrect(getxpos(), getypos(), width, height); Figure fig1 = new Rectangle(10, 10, 20, 30); Figure fig2 = new Circle(10, 60, 40); public void paint(graphics g) { fig1.display(); fig2.display(); Seite 27/31

28 10 Beispiel AWT Abstract: allgemeiner plattformunabhängiger Ansatz Window: Umgang mit Fenstersystemen Toolkit: sehr grosse Klassenbibliothek 10.1 Bildschirmausgabe in Windowsystemen "Nicht der Programmierer bestimmt, wann etwas auf dem Bildschirm dargestellt wird, sondern der User." Entsprechend bestimmt nicht das Programm, wann etwas auf dem Bildschirm dargestellt werden soll, sondern das Windowsystem. Konsequenzen: Das Programm muss zu jedem Zeitpunkt in der Lage sein, die komplette Bildschirmausgabe zu rekonstruieren. Das Programm muss das Windowsystem über neu anzuzeigende Bildschirminhalte informieren. Das Windowsystem ruft die paint()-methode eines Applets oder Programms auf, sobald das Applet gezeichnet werden soll. Das Applet oder Programm ruft seine repaint()-methode auf, sobald es wünscht, neu gezeichnet zu werden. Seite 28/31

29 10.2 Wichtige Klassen für das elementare Zeichnen Graphics: Stellt die eigentlichen Zeichenoperationen zur Verfügung. Graphics-Objekte dienen als eine Art "Zeichenblatt". Sie werden nicht selbst instanziert, sondern vom Ausgabegerät zur Verfügung gestellt (z.b. Bildschirm, Drucker). Zusätzlich speichert die Klasse den aktuellen Zustand des Gerätes (z.b. Zeichenfarbe, Font, Clipping-Region). Color: Farben Font: Schrifttypen Point: Punkt mit Koordinaten x, y Dimension: Grössenangabe mit width und height Rectangle: Rechteck Polygon: n-eck Image: abstrakte Klasse für Bitmap-Grafiken AWT-Klassenhierarchie (Ausschnitt 1): Object equals():boolean Graphics Color Font Point Dimension Rectangle Polygon Image drawline(): void getfont(): Font black: Color darker():color name:string size:int getname():string x:int y:int getx():double move():void height:int width:int equals():boolean setsize():void height:int width:int move():void resize():void npoints:int xpoint:int[] addpoint():void inside():boolean SCALE_FAST:int getheight():int Seite 29/31

30 10.3 Wichtige Klassen für GUIs Component: Das sind die Grundbausteine für ein GUI. Alles, was man sieht, ist ein Component! Die Klasse Component hat sehr viele Methoden. Im Zweifelsfalle hier eine Methode suchen! Canvas: Die einfachste Zeichenoberfläche (vgl. wie Applet ohne Funktionalität). Besitzt im Wesentlichen ein Graphics-Objekt. Container: Ein Behälter für Components. Die Anordnung der Bildelemente wird durch das Layout des Containers bestimmt. Typische Container sind Panel und Window. Ermöglicht eine hierarchische Gestaltung des GUI. Panel: Ein Objekt zum Zusammenfassen grösserer Sinneseinheiten in einem Fenster. Window: Ein einfaches Fenster-Objekt. Frame: Ein "richtiges" Fenster-Objekt. Hat einen Titelbalken, kann vom Benutzer verkleinert und vergrössert werden, kann ein Menü haben usw. (vgl. Java-Programme). Button: Druckknopf Checkbox: Ankreuzfeld Choice: Auswahlmenü (Pull-Down) List: Auswahlmenü Label: statischer Text Scrollbar: Schieberegler TextField: Texteingabe (einzeilig) TextArea: Texteingabefeld (mit mehreren Zeilen) Seite 30/31

31 AWT-Klassenhierarchie (Ausschnitt 2): Object equals():boolean Component paint():void repaint():void update():void Checkbox Choice Container Button Canvas List Label TextComponent Scrollbar getlabel():string setstate():void additme():void remove():void add():void remove():void paint():void setlayout():void getlabel():string setlabel():void paint():void getrows():int select():void CENTER:int settext():void gettext():string select():void VERTICAL:int getminimum():int getvalue():int Panel ScrollPane Window SCROLLBARS_ NEVER:int addnotify():void setlayout():void show():void toback():void Applet Dialog Frame init():void setmodal():void settitle():void setmenubar():voi d FileDialog LOAD:int READ:int getfile():string getmode():int Ein Container ist bekanntlich ein Behälter (vgl. Aggregat) für Components (sogenanntes Composite-Entwurfsmuster): 0..n Component paint():void repaint():void update():void Container Button Label Scrollbar add():void remove():void paint():void setlayout():void getlabel():string setlabel():void CENTER:int settext():void VERTICAL:int getminimum():int getvalue():int Panel addnotify():void Applet init():void Seite 31/31

Konzepte objektorientierter Programmierung

Konzepte objektorientierter Programmierung Konzepte objektorientierter Programmierung Objekte Klassen Nachrichten Kapselung Einführung Vererbung heute! Konzepte objektorientierter Programmierung Was ist ein Objekt? Was ist eine Klasse? Was sind

Mehr

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

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

Mehr

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

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

Abstrakte Klassen, Interfaces

Abstrakte Klassen, Interfaces Abstrakte Klassen, Interfaces INE2, Mittwoch 8.00-9.35 / TE561 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Problemstellung Klassenhierachie - verschiedene geometrische

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

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

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article 2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

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

Mehr

Graphische Benutzungsoberflächen

Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen

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

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

Objektorientierte Programmierung Studiengang Medieninformatik

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

Mehr

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

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

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

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

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

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

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

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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (3) Aspekte der Vererbung (1) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 546 Zuweisung bei Vererbung Dr. Frank Seifert Vorlesung

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

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

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

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

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Mittwoch Inhaltsübersicht Eigene Klassen definieren Vererbung Abstrakte Klassen Schnittstellen Polymorphismus Designbeispiele: Java-AWT Strings in Java Funktionen und Funktionsplotter

Mehr

Java für Bauingenieure

Java für Bauingenieure 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

Fragen zur OOP in Java

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

Mehr

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

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

Begriffe 1 (Wiederholung)

Begriffe 1 (Wiederholung) Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.

Mehr

Aufgabe 5.1 (Laboraufgabe, Nocheinmal ein wenig Graphik)

Aufgabe 5.1 (Laboraufgabe, Nocheinmal ein wenig Graphik) Übungen zu Objektorientierte Programmierung in Java PD Dr. Wolfgang Goerigk Sommersemester 2009 Musterlösungen Serie 5 Aufgabe 5.1 (Laboraufgabe, Nocheinmal ein wenig Graphik) Die Klasse java.awt.container

Mehr

6. Globalübung (zu Übungsblatt 8)

6. Globalübung (zu Übungsblatt 8) 6. Globalübung (zu Übungsblatt 8) Inhalt: Klassenhierarchien Verdecken von Attributen Überschreiben von Methoden Codeanalyse Analyse von JAVA-Programmen Semestralklausur Klausurtermin: Mittwoch 11.01.2006

Mehr

Tafelübung 07 Algorithmen und Datenstrukturen

Tafelübung 07 Algorithmen und Datenstrukturen Tafelübung 07 Algorithmen und Datenstrukturen Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Vererbung Grundlagen Abstrakte

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Kurs OPR. Objektorientierte Programmierung

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

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

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

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren

Mehr

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov Java - AWT Basispraktikum SystemArchitektur WS 2008/2209 09.12.2008 Atanas Dimitrov 1 Was besprechen wir heute: AWT Klassen Die Klasse Graphics AWT Methoden Die Klasse ToolKit Ausgabe von Bilder Die Klasse

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

4. Hierarchische Datenstrukturen in OO-Systemen

4. Hierarchische Datenstrukturen in OO-Systemen 4. Hierarchische Datenstrukturen in OO-Systemen OO-Graphics in Java Hierarchische Datenstrukturen 89 Hierarchien in OO-Systemen Objektorientiertes Programmieren bietet zahlreiche Strukturierungs-Möglichkeiten

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Applets Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Einführung 2 Sicherheits-Maßnahmen 3 Ereignisgesteuerte Programmierung

Mehr

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

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

Mehr

14. Java Objektorientierung

14. Java Objektorientierung Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen

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

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Objektorientierte Programmierung III

Objektorientierte Programmierung III Objektorientierte Programmierung III OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober 2001 Stefan Holland Informatik II Hinweise: Klausur II Verwenden Sie für Ihre Lösungen ausschließlich

Mehr

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete 2 Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, und Pakete Martin Wirsing Ziele Den Begriff der einfachen und mehrfachen Vererbung verstehen Verstehen, wann Vererbung eingesetzt wird deklarationen

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

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr

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

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

Mehr

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

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Kapitel 19: Klassen und Unterklassen

Kapitel 19: Klassen und Unterklassen Kapitel 19: Klassen und Unterklassen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

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

Vererbung. Oberklassen und Unterklassen

Vererbung. Oberklassen und Unterklassen Vererbung Oberklassen und Unterklassen Vererbung ist ein zentrale Bestandteil der Objektorientierung. Man beschreibt damit die Möglichkeit, Eigenschaften und Methoden vorhandener Klassen auf andere (neue)

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

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

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

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 19. 25. Februar 2003 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren

Mehr

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Grundidee abstrakter Klassen:

Mehr

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,

Mehr

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog. Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung

Mehr

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

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2 HSR Rapperswil 2001 Markus Rigling Programmieren: Vererbung 1 Variante 2 Inhaltsverzeichnis: 1. Was ist Vererbung...3 2. Anwendung...3 3. Realisierung...3 4. Vorgehensweise zur Erstellung einer Kind-Klasse...3

Mehr

Grundlagen der Programmierung APPLETS

Grundlagen der Programmierung APPLETS Grundlagen der Programmierung APPLETS Inhalt dieser Einheit Java-Applets: Java-Applets Vor- und Nachteile Sicherheitskonzepte Methoden Einbetten in HTML Graphical User Interface 2 Java Applets Applets

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

GUI-Programmierung mit Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 11: GUI 1: AWT (1) GUI-Programmierung mit Java.

GUI-Programmierung mit Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 11: GUI 1: AWT (1) GUI-Programmierung mit Java. Universität Osnabrück 1 GUI-Programmierung mit Java 3 - Objektorientierte Programmierung in Java Vorlesung 11: GUI 1: AWT (1) SS 2004 Prof. Dr. F.M. Thiesing, FH Dortmund Alle unsere bisherigen Anwendungsbeispiele

Mehr

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 10 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe. Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe http://www.zitate-online.de/autor/goethe-johann-wolfgang-von/ http://www.weimar-lese.de/files_weimar_lese/johann_wolfgang_von_goethe_bearbeitet_von_andreas_werner.jpg

Mehr

2. Vererbung und Kapselung

2. Vererbung und Kapselung 2. Vererbung und Kapselung Die Objekte der Klasse BALL werden im Gegensatz zu den Objekten von KREIS noch nicht graphisch dargestellt. Um die BALL-Objekte auch graphisch darzustellen zu können, muss BALL

Mehr

JAVA für Nichtinformatiker - Probeklausur -

JAVA für Nichtinformatiker - Probeklausur - JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils

Mehr

Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt

Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung Prof. Redlich 6. Übungsblatt 21 (+4) Punkte Abgabe bis 31.01.2010 (08:00 Uhr) über GOYA Aufgabe

Mehr

Einführung in C# Teil 3. Matthias Nübling

Einführung in C# Teil 3. Matthias Nübling Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Allgemeines - Prinzipien

Allgemeines - Prinzipien OOP - Prinzipien Allgemeines - Prinzipien OO modelliert die reale Welt als System interagierender Objekte Objekt = gedankliche oder reale Einheit in der Umwelt und/oder in Software Klar definierte Schnittstellen

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

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

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 19. 25. Februar 2003 Mittwoch Inhaltsübersicht Eigene Klassen definieren Vererbung Abstrakte Klassen Schnittstellen Polymorphismus Designbeispiele: Java-AWT Strings in Java Funktionen und

Mehr

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots IT I - VO 5 1

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots IT I - VO 5 1 IT I: Heute Nachbetrachtung Wissensüberprüfungen Einführung Vererbung Roboter in becker.robots 7.11.2017 IT I - VO 5 1 Organisatorisches Wissensüberprüfung diese Woche wieder am Rechner Wer die 5. Wissensüberprüfung

Mehr

Kurs OPR. Objektorientierte Programmierung

Kurs OPR. Objektorientierte Programmierung Kurs OPR Objektorientierte Programmierung Lektion: 006-Abstrakte Klassen, Interfaces etc. Zürcher Hochschule für Angewandte Wissenschaften Mitglied der Fachhochschule Zürich Version 1.4 Inhaltsverzeichnis

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3 Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Prinzip der Vererbung: Aus

Mehr

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 9 Übungen: Applets Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java 1. Java-Applet mit Text 2. Java-Applet mit Bild und Text 3. Java-Applet mit Grafik 9 Applets 4. Java-Applet

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

Informatik II Übung, Woche 17

Informatik II Übung, Woche 17 Giuseppe Accaputo 28. April, 2016 1. Vererbung 2. Vorbesprechung Übung 8 Plan für heute 3. Erweiterung des Vorlesungsverzeichnis (VVZ) (Live-Programmierung) Informatik II (D-BAUG) Giuseppe Accaputo 2 Vererbung

Mehr

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

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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr