Tafelübung 07 Algorithmen und Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "Tafelübung 07 Algorithmen und Datenstrukturen"

Transkript

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

2 Übersicht Vererbung Grundlagen Abstrakte Klassen Interfaces Polymorphie Einführung Statischer Dynamischer Typ Überladen & Überschreiben Objekte vergleichen Vergleichsoperatoren Comparable und Comparator UML-Klassendiagramme Motivation Klassenkarten Beziehungen AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 2 / 51

3 Vererbung

4 Vererbung: Grundlagen (I) Vererbung Relation zwischen zwei Klassen Unterklasse erbt von einer Oberklasse wird manchmal auch als ist-ein-beziehung bezeichnet eine Unterklasse... übernimmt alle Methoden und Attribute ihrer Oberklasse kann aber auf private Methoden und Attribute nicht zugreifen kann eigene Methoden und Attribute definieren kann damit auch Methoden ihrer Oberklasse überschreiben (s.u.) ein Objekt der Unterklasse ist auch ein Objekt der Oberklasse an allen Stellen, an denen ein Objekt der Oberklasse erwartet wird, kann auch ein Objekt der Unterklasse verwendet werden (s.u.) AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 4 / 51

5 Vererbung: Grundlagen (I) Vererbung Relation zwischen zwei Klassen Unterklasse erbt von einer Oberklasse wird manchmal auch als ist-ein-beziehung bezeichnet eine Unterklasse... übernimmt alle Methoden und Attribute ihrer Oberklasse kann aber auf private Methoden und Attribute nicht zugreifen kann eigene Methoden und Attribute definieren kann damit auch Methoden ihrer Oberklasse überschreiben (s.u.) ein Objekt der Unterklasse ist auch ein Objekt der Oberklasse an allen Stellen, an denen ein Objekt der Oberklasse erwartet wird, kann auch ein Objekt der Unterklasse verwendet werden (s.u.) AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 4 / 51

6 Vererbung: Grundlagen (I) Vererbung Relation zwischen zwei Klassen Unterklasse erbt von einer Oberklasse wird manchmal auch als ist-ein-beziehung bezeichnet eine Unterklasse... übernimmt alle Methoden und Attribute ihrer Oberklasse kann aber auf private Methoden und Attribute nicht zugreifen kann eigene Methoden und Attribute definieren kann damit auch Methoden ihrer Oberklasse überschreiben (s.u.) ein Objekt der Unterklasse ist auch ein Objekt der Oberklasse an allen Stellen, an denen ein Objekt der Oberklasse erwartet wird, kann auch ein Objekt der Unterklasse verwendet werden (s.u.) AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 4 / 51

7 Vererbung: Grundlagen (II) Vererbung ermöglicht Generalisierung bzw. Spezialisierung Unterklasse ist Spezialisierung der Oberklasse Oberklasse ist Generalisierung der Unterklasse(n) Beispiel jede Eiche ist ein Baum aber nicht jeder Baum ist eine Eiche (denn es gibt noch Buchen, Birken,...) Eiche kann man als Unterklasse von Baum implementieren jeder Baum ist eine Pflanze aber nicht jede Pflanze ist ein Baum (denn es gibt noch Blumen, Moose,...) Baum kann man als Unterklasse von Pflanze implementieren AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 5 / 51

8 Vererbung: Grundlagen (II) Vererbung ermöglicht Generalisierung bzw. Spezialisierung Unterklasse ist Spezialisierung der Oberklasse Oberklasse ist Generalisierung der Unterklasse(n) Beispiel jede Eiche ist ein Baum aber nicht jeder Baum ist eine Eiche (denn es gibt noch Buchen, Birken,...) Eiche kann man als Unterklasse von Baum implementieren jeder Baum ist eine Pflanze aber nicht jede Pflanze ist ein Baum (denn es gibt noch Blumen, Moose,...) Baum kann man als Unterklasse von Pflanze implementieren AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 5 / 51

9 Vererbung: Grundlagen (II) Vererbung ermöglicht Generalisierung bzw. Spezialisierung Unterklasse ist Spezialisierung der Oberklasse Oberklasse ist Generalisierung der Unterklasse(n) Beispiel jede Eiche ist ein Baum aber nicht jeder Baum ist eine Eiche (denn es gibt noch Buchen, Birken,...) Eiche kann man als Unterklasse von Baum implementieren jeder Baum ist eine Pflanze aber nicht jede Pflanze ist ein Baum (denn es gibt noch Blumen, Moose,...) Baum kann man als Unterklasse von Pflanze implementieren AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 5 / 51

10 Vererbung in Java Umsetzung des Konzepts der Vererbung in Java: Vererbung mittels extends bei der Klassendefinition jede Klasse erbt von genau einer anderen Klasse falls nicht explizit angegeben, ist die Oberklasse Object alle Klassen in Java erben direkt oder indirekt von Object Einfachvererbung führt zu einer sog. Monohierarchie Zugriff auf Methoden oder Attribute der Oberklasse mittels super notwendig, falls Unterklasse Teile der Oberklasse überschreibt falls die Oberklasse keinen Standard-Konstruktor hat: expliziter Aufruf eines Oberklasse-Konstruktors in jedem Konstruktor der Unterklasse notwendig AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 51

11 Vererbung in Java Umsetzung des Konzepts der Vererbung in Java: Vererbung mittels extends bei der Klassendefinition jede Klasse erbt von genau einer anderen Klasse falls nicht explizit angegeben, ist die Oberklasse Object alle Klassen in Java erben direkt oder indirekt von Object Einfachvererbung führt zu einer sog. Monohierarchie Zugriff auf Methoden oder Attribute der Oberklasse mittels super notwendig, falls Unterklasse Teile der Oberklasse überschreibt falls die Oberklasse keinen Standard-Konstruktor hat: expliziter Aufruf eines Oberklasse-Konstruktors in jedem Konstruktor der Unterklasse notwendig AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 51

12 Vererbung in Java Umsetzung des Konzepts der Vererbung in Java: Vererbung mittels extends bei der Klassendefinition jede Klasse erbt von genau einer anderen Klasse falls nicht explizit angegeben, ist die Oberklasse Object alle Klassen in Java erben direkt oder indirekt von Object Einfachvererbung führt zu einer sog. Monohierarchie Zugriff auf Methoden oder Attribute der Oberklasse mittels super notwendig, falls Unterklasse Teile der Oberklasse überschreibt falls die Oberklasse keinen Standard-Konstruktor hat: expliziter Aufruf eines Oberklasse-Konstruktors in jedem Konstruktor der Unterklasse notwendig AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 51

13 Vererbung in Java Umsetzung des Konzepts der Vererbung in Java: Vererbung mittels extends bei der Klassendefinition jede Klasse erbt von genau einer anderen Klasse falls nicht explizit angegeben, ist die Oberklasse Object alle Klassen in Java erben direkt oder indirekt von Object Einfachvererbung führt zu einer sog. Monohierarchie Zugriff auf Methoden oder Attribute der Oberklasse mittels super notwendig, falls Unterklasse Teile der Oberklasse überschreibt falls die Oberklasse keinen Standard-Konstruktor hat: expliziter Aufruf eines Oberklasse-Konstruktors in jedem Konstruktor der Unterklasse notwendig AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 6 / 51

14 Vererbung: Beispiel Geometrische Formen class Form { protected double x; protected double y; public Form ( double x, double y) { this.x = x; this.y = y; } } class Rechteck extends Form { // jedes Rechteck ist auch eine Form protected double breite ; protected double hoehe ; public Rechteck ( double x, double y, double breite, double hoehe ) { super (x, y); // Aufruf des Konstruktors der Oberklasse this. breite = breite ; this. hoehe = hoehe ; } } class Kreis extends Form { // jeder Kreis ist auch eine Form protected double radius ; public Kreis ( double x, double y, double radius ) { super (x, y); // Aufruf des Konstruktors der Oberklasse this. radius = radius ; } } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 7 / 51

15 Hinweise zum Beispiel Geometrische Formen class Form { /*... */ } class Rechteck extends Form { /*... */ } class Kreis extends Form { /*... */ } Rechteck und Kreis sind Spezialisierungen von Form Form ist Generalisierung von Rechteck und Kreis Oberklasse Form hat keinen Standard-Konstruktor expliziter Konstruktor-Aufruf in den Konstruktoren der Unterklassen nötig Attribute x und y in Form haben Sichtbarkeit protected Zugriff aus Unterklassen ist erlaubt AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 8 / 51

16 Hinweise zum Beispiel Geometrische Formen class Form { /*... */ } class Rechteck extends Form { /*... */ } class Kreis extends Form { /*... */ } Rechteck und Kreis sind Spezialisierungen von Form Form ist Generalisierung von Rechteck und Kreis Oberklasse Form hat keinen Standard-Konstruktor expliziter Konstruktor-Aufruf in den Konstruktoren der Unterklassen nötig Attribute x und y in Form haben Sichtbarkeit protected Zugriff aus Unterklassen ist erlaubt AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 8 / 51

17 Hinweise zum Beispiel Geometrische Formen class Form { /*... */ } class Rechteck extends Form { /*... */ } class Kreis extends Form { /*... */ } Rechteck und Kreis sind Spezialisierungen von Form Form ist Generalisierung von Rechteck und Kreis Oberklasse Form hat keinen Standard-Konstruktor expliziter Konstruktor-Aufruf in den Konstruktoren der Unterklassen nötig Attribute x und y in Form haben Sichtbarkeit protected Zugriff aus Unterklassen ist erlaubt AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 8 / 51

18 Abstrakte Klassen eine abstrakte Klasse......kann nicht instanziiert werden es können also keine Objekte direkt von dieser Klasse erzeugt werden, sondern nur von (nicht-abstrakten) Unterklassen dieser Klasse...kann aber als statischer Typ einer Referenz-Variable verwendet werden später mehr dazu... in Java: Deklaration einer abstrakten Klasse mittels abstract AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 9 / 51

19 Abstrakte Klassen eine abstrakte Klasse......kann nicht instanziiert werden es können also keine Objekte direkt von dieser Klasse erzeugt werden, sondern nur von (nicht-abstrakten) Unterklassen dieser Klasse...kann aber als statischer Typ einer Referenz-Variable verwendet werden später mehr dazu... in Java: Deklaration einer abstrakten Klasse mittels abstract AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 9 / 51

20 Abstrakte Klassen: Beispiele Geometrische Formen abstract class Form { /*... */ } class Rechteck extends Form { /*... */ } class Kreis extends Form { /*... */ } eine Form alleine zu erzeugen, ist nicht sinnvoll Klasse Form abstrakt definieren Rechteck und Kreis sind selber nicht abstrakt können wie bekannt instanziiert werden AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 10 / 51

21 Abstrakte Klassen: Beispiele Geometrische Formen abstract class Form { /*... */ } class Rechteck extends Form { /*... */ } class Kreis extends Form { /*... */ } eine Form alleine zu erzeugen, ist nicht sinnvoll Klasse Form abstrakt definieren Rechteck und Kreis sind selber nicht abstrakt können wie bekannt instanziiert werden Beispiel: Bäume Einen Baum, der weder Eiche, Buche, Birke, noch sonst irgendwas ist, gibt es nicht. Baum würde man als abstrakte Klasse definieren gleiches gilt für Pflanze AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 10 / 51

22 Abstrakte Methoden abstrakte Klassen können abstrakte Methoden deklarieren legen lediglich die Signatur fest, nicht die Implementierung Methoden ohne Rumpf alle Unterklassen der abstrakten Oberklasse......müssen alle diese abstrakten Methoden implementieren, oder...müssen selbst abstrakt sein Sinn!? Mit abstrakten Methoden lässt sich festlegen, dass alle Objekte (von Unterklassen) der abstrakten Klasse eine bestimmte Methode haben müssen, auch wenn die konkrete Implementierung in der abstrakten Klasse auf Grund der Generalisierung nicht möglich ist. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 51

23 Abstrakte Methoden abstrakte Klassen können abstrakte Methoden deklarieren legen lediglich die Signatur fest, nicht die Implementierung Methoden ohne Rumpf alle Unterklassen der abstrakten Oberklasse......müssen alle diese abstrakten Methoden implementieren, oder...müssen selbst abstrakt sein Sinn!? Mit abstrakten Methoden lässt sich festlegen, dass alle Objekte (von Unterklassen) der abstrakten Klasse eine bestimmte Methode haben müssen, auch wenn die konkrete Implementierung in der abstrakten Klasse auf Grund der Generalisierung nicht möglich ist. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 51

24 Abstrakte Methoden abstrakte Klassen können abstrakte Methoden deklarieren legen lediglich die Signatur fest, nicht die Implementierung Methoden ohne Rumpf alle Unterklassen der abstrakten Oberklasse......müssen alle diese abstrakten Methoden implementieren, oder...müssen selbst abstrakt sein Sinn!? Mit abstrakten Methoden lässt sich festlegen, dass alle Objekte (von Unterklassen) der abstrakten Klasse eine bestimmte Methode haben müssen, auch wenn die konkrete Implementierung in der abstrakten Klasse auf Grund der Generalisierung nicht möglich ist. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 11 / 51

25 Abstrakte Methoden: Geometrische Formen (I) jede Form soll seine eigene Fläche berechnen können aber: Berechnung der Fläche ist abhängig von der konkreten Form Fläche eines Rechtecks berechnet sich anders als Fläche eines Kreises nur die Unterklassen wissen, wie die Berechnung der Fläche zu implementieren ist in der Klasse Form eine abstrakte Methode flaeche() deklarieren und in den Unterklassen jeweils passend implementieren AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 12 / 51

26 Abstrakte Methoden: Geometrische Formen (I) jede Form soll seine eigene Fläche berechnen können aber: Berechnung der Fläche ist abhängig von der konkreten Form Fläche eines Rechtecks berechnet sich anders als Fläche eines Kreises nur die Unterklassen wissen, wie die Berechnung der Fläche zu implementieren ist in der Klasse Form eine abstrakte Methode flaeche() deklarieren und in den Unterklassen jeweils passend implementieren AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 12 / 51

27 Abstrakte Methoden: Geometrische Formen (II) Geometrische Formen abstract class Form { //... public abstract double flaeche (); } class Rechteck extends Form { //... public double flaeche () { return this. breite * this. hoehe ; } } class Kreis extends Form { //... public double flaeche () { return this. radius * this. radius * Math. PI; } } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 13 / 51

28 Interfaces Interface Schnittstelle: Sammlung von nicht-implementierten Methoden ein Interface deklariert ausschließlich abstrakte Methoden Ähnlichkeit zu abstrakten Klassen: ein Interface kann selber nicht instanziiert werden... kann aber als statischer Typ verwendet werden Interface Abstrakte Klasse mit ausschließlich abstrakten Methoden eine Klasse kann beliebig viele Interfaces implementieren und muss damit alle geforderten Methoden implementieren in Java: Definition eines Interface mittels interface (statt class) Implementieren eines Interface durch eine Klasse mittels implements AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 14 / 51

29 Interfaces Interface Schnittstelle: Sammlung von nicht-implementierten Methoden ein Interface deklariert ausschließlich abstrakte Methoden Ähnlichkeit zu abstrakten Klassen: ein Interface kann selber nicht instanziiert werden... kann aber als statischer Typ verwendet werden Interface Abstrakte Klasse mit ausschließlich abstrakten Methoden eine Klasse kann beliebig viele Interfaces implementieren und muss damit alle geforderten Methoden implementieren in Java: Definition eines Interface mittels interface (statt class) Implementieren eines Interface durch eine Klasse mittels implements AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 14 / 51

30 Interfaces Interface Schnittstelle: Sammlung von nicht-implementierten Methoden ein Interface deklariert ausschließlich abstrakte Methoden Ähnlichkeit zu abstrakten Klassen: ein Interface kann selber nicht instanziiert werden... kann aber als statischer Typ verwendet werden Interface Abstrakte Klasse mit ausschließlich abstrakten Methoden eine Klasse kann beliebig viele Interfaces implementieren und muss damit alle geforderten Methoden implementieren in Java: Definition eines Interface mittels interface (statt class) Implementieren eines Interface durch eine Klasse mittels implements AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 14 / 51

31 Interfaces Interface Schnittstelle: Sammlung von nicht-implementierten Methoden ein Interface deklariert ausschließlich abstrakte Methoden Ähnlichkeit zu abstrakten Klassen: ein Interface kann selber nicht instanziiert werden... kann aber als statischer Typ verwendet werden Interface Abstrakte Klasse mit ausschließlich abstrakten Methoden eine Klasse kann beliebig viele Interfaces implementieren und muss damit alle geforderten Methoden implementieren in Java: Definition eines Interface mittels interface (statt class) Implementieren eines Interface durch eine Klasse mittels implements AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 14 / 51

32 Interfaces: Sinn!? Der Sinn von Interfaces Definition von Schnittstellen, die i.a. orthogonal zu der Vererbungs-Hierarchie sind Schnittstelle soll von mehreren Klassen implementiert werden, die sich nicht (sinnvoll) gegenseitig in eine Generalisierungsbeziehung setzen lassen Interface kann man als statischen Typ einer Referenzvariable verwenden (s.u.) man kann auf die im Interface definierten Methoden zugreifen welche Klasse sich tatsächlich dahinter befindet, ist irrelevant AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 15 / 51

33 Interfaces: Beispiel (I) Geräusche interface KannGeraeuschMachen { String machegeraeusch (); } class Hund implements KannGeraeuschMachen { //... public String machegeraeusch () { return " Wau!"; } } class Auto implements KannGeraeuschMachen { //... public String machegeraeusch () { return " Brumm!"; } } Hinweise zu dem Beispiel Hund und Auto lassen sich eher schwer in eine explizite Vererbungs-Beziehung setzen (je nach Anwendung vermutlich keine sinnvolle gemeinsame Oberklasse), sollen aber beide die Methode machegeraeusch() zur Verfügung stellen und überall dort verwendet werden können, wo lediglich diese Methode benötigt wird. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 16 / 51

34 Interfaces: Beispiel (II) Sammlerstück interface Sammlerstueck { int wert (); } interface Fortbewegungsmittel { int maximalgeschwindigkeit (); } class Oldtimer implements Sammlerstueck, Fortbewegungsmittel { //... public public int int wert () { /*... */ } maximalgeschwindigkeit () { /*... */ } } Hinweise zu dem Beispiel Ein Oldtimer ist sowohl ein Sammlerstueck, als auch ein Fortbewegungsmittel, und soll an allen Stellen verwendet werden können, an denen ein Sammlerstueck oder ein Fortbewegungsmittel verlangt ist. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 17 / 51

35 Polymorphie

36 Polymorphie: Einführung Polymorphie: aus dem Griechischen für Vielgestaltigkeit ein und dieselbe Sache kann verschiedene Gestalten haben hier: derselbe Name kann verschiedene Dinge meinen konkrete Bedeutung ist abhängig vom jeweiligen Kontext polymorphe Variablen: dynamischer und statischer Typ können sich unterscheiden polymorphe Methoden: Überschreiben einer Methode in einer Unterklasse Überladen einer Methode AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 19 / 51

37 Polymorphie: Einführung Polymorphie: aus dem Griechischen für Vielgestaltigkeit ein und dieselbe Sache kann verschiedene Gestalten haben hier: derselbe Name kann verschiedene Dinge meinen konkrete Bedeutung ist abhängig vom jeweiligen Kontext polymorphe Variablen: dynamischer und statischer Typ können sich unterscheiden polymorphe Methoden: Überschreiben einer Methode in einer Unterklasse Überladen einer Methode AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 19 / 51

38 Polymorphie: Einführung Polymorphie: aus dem Griechischen für Vielgestaltigkeit ein und dieselbe Sache kann verschiedene Gestalten haben hier: derselbe Name kann verschiedene Dinge meinen konkrete Bedeutung ist abhängig vom jeweiligen Kontext polymorphe Variablen: dynamischer und statischer Typ können sich unterscheiden polymorphe Methoden: Überschreiben einer Methode in einer Unterklasse Überladen einer Methode AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 19 / 51

39 Haben wir alle schon benutzt... Beispiel int foo = ; String bar = " Hallo, " + " Welt "; Was ist hier polymorph? AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 20 / 51

40 Haben wir alle schon benutzt... Beispiel int foo = ; String bar = " Hallo, " + " Welt "; Polymorphie im Beispiel Der +-Operator ist polymorph, denn in der ersten Zeile meint er die Integer-Addition, in der zweiten Zeile hingegen die String-Konkatenation. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 20 / 51

41 Statischer Typ Dynamischer Typ eine Referenzvariable hat immer zwei Typen: statischer Typ: Typ, der bei der Deklaration der Variable angegeben wird zur Übersetzungszeit bekannt ändert sich nicht dynamischer Typ: tatsächlicher Typ der Instanz, auf welche die Referenz verweist im Allgemeinen erst zur Laufzeit des Programms bekannt kann sich i.a. bei der Programmausführung ändern Kandidaten für den dynamischen Typ: falls statischer Typ eine Klasse ist: statischer Typ oder Unterklasse falls statischer Typ ein Interface ist: implementierende Klasse AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 21 / 51

42 Statischer Typ Dynamischer Typ eine Referenzvariable hat immer zwei Typen: statischer Typ: Typ, der bei der Deklaration der Variable angegeben wird zur Übersetzungszeit bekannt ändert sich nicht dynamischer Typ: tatsächlicher Typ der Instanz, auf welche die Referenz verweist im Allgemeinen erst zur Laufzeit des Programms bekannt kann sich i.a. bei der Programmausführung ändern Kandidaten für den dynamischen Typ: falls statischer Typ eine Klasse ist: statischer Typ oder Unterklasse falls statischer Typ ein Interface ist: implementierende Klasse AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 21 / 51

43 Beispiel: Statischer Typ Dynamischer Typ Beispiel: Sammlerstück interface Sammlerstueck { /*... */ } class Oldtimer implements Sammlerstueck { /*... */ } class Briefmarke implements Sammlerstueck { /*... */ } // =================================== Sammlerstueck objekt = null ; // stat. Typ : Sammlerstueck, dyn. Typ : keiner objekt = new Oldtimer (); // stat. Typ : Sammlerstueck, dyn. Typ : Oldtimer objekt = new Briefmarke (); // stat. Typ : Sammlerstueck, dyn. Typ : Briefmarke AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 22 / 51

44 Zugriff auf Methoden und Attribute Achtung Es können nur auf die Methoden und Attribute des statischen Typs zugegriffen werden, da der dynamische Typ erst zur Laufzeit feststeht, der Compiler jedoch zur Übersetzungszeit garantieren muss, dass die entsprechende Methode bzw. das entsprechende Attribut tatsächlich existiert. Da der dynamische Typ immer mindestens der statische Typ ist, ist der Zugriff auf Methoden und Attribute des statischen Typs kein Problem, denn diese Methoden bzw. Attribute existieren garantiert auch im dynamischen Typ. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 23 / 51

45 Zugriff auf Methoden und Attribute Achtung Es können nur auf die Methoden und Attribute des statischen Typs zugegriffen werden, da der dynamische Typ erst zur Laufzeit feststeht, der Compiler jedoch zur Übersetzungszeit garantieren muss, dass die entsprechende Methode bzw. das entsprechende Attribut tatsächlich existiert. Da der dynamische Typ immer mindestens der statische Typ ist, ist der Zugriff auf Methoden und Attribute des statischen Typs kein Problem, denn diese Methoden bzw. Attribute existieren garantiert auch im dynamischen Typ. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 23 / 51

46 Beispiel: Zugriff auf nicht vorhandene Methode Beispiel: Tier abstract class Tier { //... public abstract void machelaut (); } class Hund extends Tier { //... public void fressehundefutter () { /*... */ } } class Katze extends Tier { /*... */ } // =================================== Tier tier ; // statischer Typ: Tier tier = new Katze (); tier. machelaut (); // in Ordnung, machelaut () ist Methode des statischen Typs tier = new Hund (); tier. machelaut (); // in Ordnung, machelaut () ist Methode des statischen Typs tier. fressehundefutter (); // Compiler - Fehler! // fressehundefutter () ist keine Methode des statischen Typs AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 24 / 51

47 Überladen von Methoden Überladen (Overloading): mehrere Methoden mit demselben Namen ( Polymorphie)......aber unterschiedlicher Signatur Methoden müssen sich in Anzahl/Typen der Parameter unterscheiden unterschiedliche Parameternamen und/oder unterschiedlicher Rückgabetyp alleine reicht nicht Methoden können in derselben Klasse oder in einer Unterklasse stehen Beispiel public static int mul( int a, int b) { return a * b; } public static float mul ( float a, float b) { return a * b; } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 25 / 51

48 Überladen von Methoden Überladen (Overloading): mehrere Methoden mit demselben Namen ( Polymorphie)......aber unterschiedlicher Signatur Methoden müssen sich in Anzahl/Typen der Parameter unterscheiden unterschiedliche Parameternamen und/oder unterschiedlicher Rückgabetyp alleine reicht nicht Methoden können in derselben Klasse oder in einer Unterklasse stehen Beispiel public static int mul ( int a, int b) { return a * b; } public static float mul ( float a, float b) { return a * b; } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 25 / 51

49 Überschreiben von Methoden Überschreiben (Overriding): Unterklasse re-definiert eine Methode der Oberklasse: gleicher Methodenname ( Polymorphie) und gleiche Signatur Welche Methode wird aufgerufen? Klassenmethode: Methode des statischen Typs sog. statische Bindung, Entscheidung zur Übersetzungszeit Instanzmethode: Methode des dynamischen Typs sog. dynamische Bindung, Entscheidung zur Laufzeit Verdecken Bei Klassenmethoden spricht man oft von Verdecken statt Überschreiben. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 26 / 51

50 Überschreiben von Methoden Überschreiben (Overriding): Unterklasse re-definiert eine Methode der Oberklasse: gleicher Methodenname ( Polymorphie) und gleiche Signatur Welche Methode wird aufgerufen? Klassenmethode: Methode des statischen Typs sog. statische Bindung, Entscheidung zur Übersetzungszeit Instanzmethode: Methode des dynamischen Typs sog. dynamische Bindung, Entscheidung zur Laufzeit Verdecken Bei Klassenmethoden spricht man oft von Verdecken statt Überschreiben. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 26 / 51

51 Überschreiben von Methoden Überschreiben (Overriding): Unterklasse re-definiert eine Methode der Oberklasse: gleicher Methodenname ( Polymorphie) und gleiche Signatur Welche Methode wird aufgerufen? Klassenmethode: Methode des statischen Typs sog. statische Bindung, Entscheidung zur Übersetzungszeit Instanzmethode: Methode des dynamischen Typs sog. dynamische Bindung, Entscheidung zur Laufzeit Verdecken Bei Klassenmethoden spricht man oft von Verdecken statt Überschreiben. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 26 / 51

52 Beispiel: Überschreiben von Methoden class Oberklasse { public static void klassenmethode () { System. out. println (" Klassenmethode der Oberklasse "); } public void instanzmethode () { System. out. println (" Instanzmethode der Oberklasse "); } } class Unterklasse extends Oberklasse { public static void klassenmethode () { System. out. println (" Klassenmethode der Unterklasse "); } public void instanzmethode () { System. out. println (" Instanzmethode der Unterklasse "); } } // =============================================== Oberklasse objekt ; objekt = new Oberklasse (); objekt. klassenmethode (); // -> Klassenmethode der Oberklasse objekt. instanzmethode (); // -> Instanzmethode der Oberklasse objekt = new Unterklasse (); objekt. klassenmethode (); // -> Klassenmethode der Oberklasse objekt. instanzmethode (); // -> Instanzmethode der Unterklasse AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 27 / 51

53 Verdecken von Attributen Verdecken von Attributen Unterklasse re-definiert ein (Klassen-/Instanz-)Attribut: gleicher Attributname ( Polymorphie) unterschiedlicher Datentyp möglich Welches Attribut wird verwendet? Klassenattribut und Instanzattribut: Attribut des statischen Typs statische Bindung, Entscheidung zur Übersetzungszeit Hinweis Vorlesungsfolie 8-97 liefert noch mal eine Übersicht, welche (Methoden-/Attribut-)Zugriffe statisch und welche dynamisch gebunden sind. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 28 / 51

54 Verdecken von Attributen Verdecken von Attributen Unterklasse re-definiert ein (Klassen-/Instanz-)Attribut: gleicher Attributname ( Polymorphie) unterschiedlicher Datentyp möglich Welches Attribut wird verwendet? Klassenattribut und Instanzattribut: Attribut des statischen Typs statische Bindung, Entscheidung zur Übersetzungszeit Hinweis Vorlesungsfolie 8-97 liefert noch mal eine Übersicht, welche (Methoden-/Attribut-)Zugriffe statisch und welche dynamisch gebunden sind. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 28 / 51

55 Verdecken von Attributen Verdecken von Attributen Unterklasse re-definiert ein (Klassen-/Instanz-)Attribut: gleicher Attributname ( Polymorphie) unterschiedlicher Datentyp möglich Welches Attribut wird verwendet? Klassenattribut und Instanzattribut: Attribut des statischen Typs statische Bindung, Entscheidung zur Übersetzungszeit Hinweis Vorlesungsfolie 8-97 liefert noch mal eine Übersicht, welche (Methoden-/Attribut-)Zugriffe statisch und welche dynamisch gebunden sind. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 28 / 51

56 Objekte vergleichen

57 Vergleiche bei primitiven Datentypen Java stellt Vergleichsoperatoren für primitive Datentypen bereit ==,!=, <, <=, >, >= diese implementieren Vergleich hinsichtlich natürlicher Ordnung bei ganzen Zahlen wie int beispielsweise nach der Wertigkeit Beispiel int a = 4711; int b = 42; int c = 42; System. out. println (a < b); // false System. out. println (b == c); // true AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 30 / 51

58 Vergleiche bei primitiven Datentypen Java stellt Vergleichsoperatoren für primitive Datentypen bereit ==,!=, <, <=, >, >= diese implementieren Vergleich hinsichtlich natürlicher Ordnung bei ganzen Zahlen wie int beispielsweise nach der Wertigkeit Beispiel int a = 4711; int b = 42; int c = 42; System. out. println (a < b); // false System. out. println (b == c); // true AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 30 / 51

59 Vergleiche bei Referenz-Typen für Referenztypen kennt Java nur die Operatoren == und!= vergleichen nur die Referenzen, kein inhaltlicher Vergleich! Beispiel BigInteger a = new BigInteger (" 42"); BigInteger b = new BigInteger (" 42"); System. out. println (a == b); // false Java erlaubt (leider?) kein Operator Overloading inhaltliche Vergleiche müssen auf Methodenaufrufe abgebildet werden AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 31 / 51

60 Vergleiche bei Referenz-Typen für Referenztypen kennt Java nur die Operatoren == und!= vergleichen nur die Referenzen, kein inhaltlicher Vergleich! Beispiel BigInteger a = new BigInteger (" 42"); BigInteger b = new BigInteger (" 42"); System. out. println (a == b); // false Java erlaubt (leider?) kein Operator Overloading inhaltliche Vergleiche müssen auf Methodenaufrufe abgebildet werden AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 31 / 51

61 Vergleiche bei Referenz-Typen für Referenztypen kennt Java nur die Operatoren == und!= vergleichen nur die Referenzen, kein inhaltlicher Vergleich! Beispiel BigInteger a = new BigInteger (" 42"); BigInteger b = new BigInteger (" 42"); System. out. println (a == b); // false Java erlaubt (leider?) kein Operator Overloading inhaltliche Vergleiche müssen auf Methodenaufrufe abgebildet werden AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 31 / 51

62 Inhaltlicher Vergleich von Objekten die Klasse Object beinhaltet die Methode equals() wird u.a. von der Java-API zum inhaltlichen Vergleich verwendet kann in Unterklassen überschrieben werden erlaubt eigene Definition von Gleichheit Beispiel public class Rechteck { private int breite ; private int hoehe ; //... public boolean equals ( Object other ) { if (!( other instanceof Rechteck )) { return false ; } Rechteck rechteck = ( Rechteck ) other ; return this. breite == rechteck. breite && this. hoehe == rechteck. hoehe ; } } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 32 / 51

63 Inhaltlicher Vergleich von Objekten die Klasse Object beinhaltet die Methode equals() wird u.a. von der Java-API zum inhaltlichen Vergleich verwendet kann in Unterklassen überschrieben werden erlaubt eigene Definition von Gleichheit Beispiel public class Rechteck { private int breite ; private int hoehe ; //... public boolean equals ( Object other ) { if (!( other instanceof Rechteck )) { return false ; } Rechteck rechteck = ( Rechteck ) other ; return this. breite == rechteck. breite && this. hoehe == rechteck. hoehe ; } } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 32 / 51

64 Ordnungsrelation definieren zwei Möglichkeiten zur Definition einer eigenen Ordnungsrelation: Interface Comparable implementieren fordert Methode compareto() wird i.d.r. für natürliche Ordnungsrelation benutzt externen Comparator zum Vergleich definieren wird außerhalb der zu vergleichenden Klasse definiert häufig zur Definition einer alternativen Ordnungsrelation AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 33 / 51

65 Rechteck: Comparable (I) Beispiel class Rechteck implements Comparable < Rechteck > { protected int breite ; protected int hoehe ; public Rechteck ( int breite, int hoehe ) { this. breite = breite ; this. hoehe = hoehe ; } public int flaeche () { return this. breite * this. hoehe ; } } public int compareto ( Rechteck other ) { // sortiert aufsteigend nach Flaeche return this. flaeche () - other. flaeche (); } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 34 / 51

66 Rechteck: Comparable (II) Beispiel class Rechteck implements Comparable < Rechteck > { //... public int compareto ( Rechteck other ) { // sortiert aufsteigend nach Flaeche } } Verwendung 1 Rechteck [] rechtecke ; //... Arrays. sort ( rechtecke ); Verwendung 2 Rechteck r1, r2; //... if ( r1. compareto ( r2) > 0) { /* r1 ist groesser als r2 */ } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 35 / 51

67 Rechteck: Comparable (II) Beispiel class Rechteck implements Comparable < Rechteck > { //... public int compareto ( Rechteck other ) { // sortiert aufsteigend nach Flaeche } } Verwendung 1 Rechteck [] rechtecke ; //... Arrays. sort ( rechtecke ); Verwendung 2 Rechteck r1, r2; //... if ( r1. compareto ( r2) > 0) { /* r1 ist groesser als r2 */ } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 35 / 51

68 Rechteck: Comparable (II) Beispiel class Rechteck implements Comparable < Rechteck > { //... public int compareto ( Rechteck other ) { // sortiert aufsteigend nach Flaeche } } Verwendung 1 Rechteck [] rechtecke ; //... Arrays. sort ( rechtecke ); Verwendung 2 Rechteck r1, r2; //... if ( r1. compareto ( r2) > 0) { /* r1 ist groesser als r2 */ } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 35 / 51

69 Rechteck: Comparator Beispiel class ComparatorBreite implements Comparator < Rechteck > { public int compare ( Rechteck r1, Rechteck r2) { // sortiert aufsteigend nach Breite return r1. breite - r2. breite ; } } Verwendung 1 Rechteck [] rechtecke ; //... Arrays. sort ( rechtecke, new ComparatorBreite ()); Verwendung 2 Rechteck r1, r2, ComparatorBreite comp ; //... if( comp. compare ( r1, r2) > 0) { /* r1 ist groesser als r2 */ } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 36 / 51

70 Rechteck: Comparator Beispiel class ComparatorBreite implements Comparator < Rechteck > { public int compare ( Rechteck r1, Rechteck r2) { // sortiert aufsteigend nach Breite return r1. breite - r2. breite ; } } Verwendung 1 Rechteck [] rechtecke ; //... Arrays. sort ( rechtecke, new ComparatorBreite ()); Verwendung 2 Rechteck r1, r2, ComparatorBreite comp ; //... if( comp. compare ( r1, r2) > 0) { /* r1 ist groesser als r2 */ } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 36 / 51

71 Rechteck: Comparator Beispiel class ComparatorBreite implements Comparator < Rechteck > { public int compare ( Rechteck r1, Rechteck r2) { // sortiert aufsteigend nach Breite return r1. breite - r2. breite ; } } Verwendung 1 Rechteck [] rechtecke ; //... Arrays. sort ( rechtecke, new ComparatorBreite ()); Verwendung 2 Rechteck r1, r2, ComparatorBreite comp ; //... if( comp. compare ( r1, r2) > 0) { /* r1 ist groesser als r2 */ } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 36 / 51

72 UML-Klassendiagramme

73 Klassendiagramme: Motivation bei großen Programmen: viele Klassen viele Beziehungen zwischen Klassen wird irgendwann unübersichtlich... Klassendiagramme als Werkzeug der Programmmodellierung zur Dokumentation zur Kommunikation (auch mit Programmierlaien ) es gibt Werkzeuge, die... aus Code Klassendiagramme erzeugen aus Klassendiagrammen Code erzeugen AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 38 / 51

74 Klassendiagramme: Motivation bei großen Programmen: viele Klassen viele Beziehungen zwischen Klassen wird irgendwann unübersichtlich... Klassendiagramme als Werkzeug der Programmmodellierung zur Dokumentation zur Kommunikation (auch mit Programmierlaien ) es gibt Werkzeuge, die... aus Code Klassendiagramme erzeugen aus Klassendiagrammen Code erzeugen AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 38 / 51

75 Klassendiagramme: Motivation bei großen Programmen: viele Klassen viele Beziehungen zwischen Klassen wird irgendwann unübersichtlich... Klassendiagramme als Werkzeug der Programmmodellierung zur Dokumentation zur Kommunikation (auch mit Programmierlaien ) es gibt Werkzeuge, die... aus Code Klassendiagramme erzeugen aus Klassendiagrammen Code erzeugen AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 38 / 51

76 Klassenkarten jede Klasse wird durch eine Klassenkarte dargestellt diese besteht aus drei Bereichen Klassenname (immer vorhanden) Attribute der Klasse (kann weggelassen werden) Methoden der Klasse (kann weggelassen werden) zwischen Klassenkarten werden Beziehungen eingezeichnet Vererbungsbeziehungen Referenzierungsbeziehungen... AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 39 / 51

77 Klassenkarten jede Klasse wird durch eine Klassenkarte dargestellt diese besteht aus drei Bereichen Klassenname (immer vorhanden) Attribute der Klasse (kann weggelassen werden) Methoden der Klasse (kann weggelassen werden) zwischen Klassenkarten werden Beziehungen eingezeichnet Vererbungsbeziehungen Referenzierungsbeziehungen... AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 39 / 51

78 Klassenkarten: Beispiel Beispiel class Kreis { private int radius ; public Kreis ( int radius ) { this. radius = radius ; } } public int getradius () { return this. radius ; } public void setradius ( int radius ) { this. radius = radius ; } AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 40 / 51

79 Klassenkarten: Beispiel Beispiel class Kreis { private int radius ; public Kreis ( int radius ) { this. radius = radius ; } } public int getradius () { return this. radius ; } public void setradius ( int radius ) { this. radius = radius ; } Klassenkarte zu Kreis Kreis -radius: int +Kreis(radius:int) +getradius(): int +setradius(radius:int) AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 40 / 51

80 Im Detail Variablen- Name Typ Sichtbarkeiten Kreis -radius: int +Kreis(radius:int) +getradius(): int +setradius(radius:int) Klassenname Attribute Methoden Methoden- Name Parameter- Liste Rückgabetyp (hier: void) AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 41 / 51

81 Sichtbarkeiten vor Attributen/Methoden wird die Sichtbarkeit angegeben: + public # protected private ~ paket-sichttbar ohne noch nicht festgelegt oder paket-sichttbar Sichtbarkeiten in Java Eigenschaft ist sichtbar aus/von Modifikator eigener Klasse selben Paket Unterklasse überall public ja ja ja ja protected ja ja ja nein ohne/paketsichtbar ja ja nein nein private ja nein nein nein AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 42 / 51

82 Sichtbarkeiten vor Attributen/Methoden wird die Sichtbarkeit angegeben: + public # protected private ~ paket-sichttbar ohne noch nicht festgelegt oder paket-sichttbar Sichtbarkeiten in Java Eigenschaft ist sichtbar aus/von Modifikator eigener Klasse selben Paket Unterklasse überall public ja ja ja ja protected ja ja ja nein ohne/paketsichtbar ja ja nein nein private ja nein nein nein AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 42 / 51

83 Abstrakte Klassen und Methoden drei Möglichkeiten für die Darstellung abstrakter Klassen 1. Klassennamen kursiv schreiben 2. unter dem Klassennamen: {abstract} (Kommentar) 3. über dem Klassennamen: «abstract» (Stereotyp) Tier Tier {abstract} <<abstract>> Tier AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 43 / 51

84 Abstrakte Klassen und Methoden drei Möglichkeiten für die Darstellung abstrakter Klassen 1. Klassennamen kursiv schreiben 2. unter dem Klassennamen: {abstract} (Kommentar) 3. über dem Klassennamen: «abstract» (Stereotyp) Tier Tier {abstract} <<abstract>> Tier zwei Möglichkeiten für die Darstellung abstrakter Methoden 1. Methoden-Namen kursiv schreiben 2. vor dem Methoden-Namen: «abstract» AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 43 / 51

85 Abstrakte Klassen und Methoden drei Möglichkeiten für die Darstellung abstrakter Klassen 1. Klassennamen kursiv schreiben 2. unter dem Klassennamen: {abstract} (Kommentar) 3. über dem Klassennamen: «abstract» (Stereotyp) Tier Tier {abstract} <<abstract>> Tier zwei Möglichkeiten für die Darstellung abstrakter Methoden 1. Methoden-Namen kursiv schreiben 2. vor dem Methoden-Namen: «abstract» Hinweis In Hausaufgaben und der Klausur bitte jeweils die erste Variante vermeiden. Das macht das Korrigieren deutlich leichter und Missverständnisse unwahrscheinlicher... AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 43 / 51

86 Interfaces Kennzeichung von Interfaces: Stereotyp «interface» <<interface>> Sammlerstueck AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 44 / 51

87 Statische Methoden und Attribute Kennzeichnung statischer Methoden und Attribute: Unterstreichen der Bezeichner Counter -globalcount: int -mycount: int +getglobalcount(): int +getmycount(): int Tipp Schaut genau hin, ob es sich um eine Klassen- oder Instanzvariable handelt. Manchmal versteckt sich die Unterstreichung nämlich nur knapp oberhalb des Trennstriches zwischen Attributen und Methoden. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 45 / 51

88 Statische Methoden und Attribute Kennzeichnung statischer Methoden und Attribute: Unterstreichen der Bezeichner Counter -globalcount: int -mycount: int +getglobalcount(): int +getmycount(): int Tipp Schaut genau hin, ob es sich um eine Klassen- oder Instanzvariable handelt. Manchmal versteckt sich die Unterstreichung nämlich nur knapp oberhalb des Trennstriches zwischen Attributen und Methoden. AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 45 / 51

89 Allgemeine Beziehungen Beispiel class Mutter { public Kind [] kinder ; } +mutter 1 Mutter class Kind { public Mutter mutter ; public Kind ( Mutter mutter ) { this. mutter = mutter ; } } +kinder 0..* Kind +Kind(mutter:Mutter) AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 46 / 51

90 Allgemeine Beziehungen Beispiel class Mutter { public Kind [] kinder ; } +mutter 1 Mutter class Kind { public Mutter mutter ; public Kind ( Mutter mutter ) { this. mutter = mutter ; } } +kinder 0..* Kind +Kind(mutter:Mutter) eine Mutter hat beliebig viele Kinder ein Kind hat genau eine Mutter kinder und mutter sind die sog. Rollennamen (entsprechen Attributnamen) Beziehungen können sog. Assoziationsnamen haben (hier nicht dargestellt) AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 46 / 51

91 Multiplizitäten die Multiplizität gibt an, wie viele Objekte einer Klasse mindestens und wie viele... maximal an der Assoziation teilnehmen gängige Multiplizitäten: 0..1 (maximal ein Objekt) 1 (genau ein Objekt) 0..* oder * (beliebig viele Objekte) 1..* (beliebig viele Objekte, aber mindestens eines) Umsetzung in Java: Multiplizitäten mit *: im einfachsten Fall mit Hilfe eines Arrays andere: einfache Referenzen AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 47 / 51

92 Multiplizitäten die Multiplizität gibt an, wie viele Objekte einer Klasse mindestens und wie viele... maximal an der Assoziation teilnehmen gängige Multiplizitäten: 0..1 (maximal ein Objekt) 1 (genau ein Objekt) 0..* oder * (beliebig viele Objekte) 1..* (beliebig viele Objekte, aber mindestens eines) Umsetzung in Java: Multiplizitäten mit *: im einfachsten Fall mit Hilfe eines Arrays andere: einfache Referenzen AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 47 / 51

93 Multiplizitäten die Multiplizität gibt an, wie viele Objekte einer Klasse mindestens und wie viele... maximal an der Assoziation teilnehmen gängige Multiplizitäten: 0..1 (maximal ein Objekt) 1 (genau ein Objekt) 0..* oder * (beliebig viele Objekte) 1..* (beliebig viele Objekte, aber mindestens eines) Umsetzung in Java: Multiplizitäten mit *: im einfachsten Fall mit Hilfe eines Arrays andere: einfache Referenzen AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 47 / 51

94 Direkte Beziehungen Beispiel class Lenkrad { } class Auto { private Lenkrad lenkrad = new Lenkrad (); } Auto -lenkrad 1 verbaut in Lenkrad AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 48 / 51

95 Direkte Beziehungen Beispiel class Lenkrad { } class Auto { private Lenkrad lenkrad = new Lenkrad (); } Auto -lenkrad 1 verbaut in Lenkrad ein Auto hat genau ein Lenkrad Pfeil deutet an, dass nur Auto Referenz auf Lenkrad hat (nicht umgekehrt) verbaut in ist der Assoziationsname hier nur im UML-Diagramm (manchmal auch als Kommentar im Code) AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 48 / 51

96 Vererbungs-Beziehung Beispiel Form abstract class Form { } class Rechteck extends Form { } class Kreis extends Form { } Rechteck Kreis AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 49 / 51

97 Implementierungs-Beziehung Beispiel interface Sammlerstueck { int wert (); } class Oldtimer implements Sammlerstueck { //... } class Briefmarke implements Sammlerstueck { //... } <<interface>> Sammlerstueck +wert(): int Oldtimer Briefmarke AuD Tafelübung 07 WS 2017/2018 Lehrstuhl für Informatik 2 (Programmiersysteme) 50 / 51

98 Fragen? Fragen! (hilft auch den anderen)

Algorithmen und Datenstrukturen 07

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

Mehr

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

Repetitorium Informatik (Java)

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

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:

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

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Kapitel 6. Vererbung

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

Mehr

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

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

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

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

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

Programmieren I. Kapitel 8. Vererbung

Programmieren I. Kapitel 8. Vererbung Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte

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

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

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

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

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

Mehr

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

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

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

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

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

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

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

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

Faustregeln zu Zusicherungen

Faustregeln zu Zusicherungen Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während

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

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs Java Vererbung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Ähnlichkeiten zwischen Klassen? Beispiel: Klassen Auto

Mehr

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

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

Mehr

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

Programmierkurs C++ Abstrakte Klassen und Methoden

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

Mehr

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

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

Mehr

Präsentation Interfaces

Präsentation Interfaces Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.

Mehr

5.6 Vererbung. Vererbung

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

Mehr

Programmieren in Java

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

Mehr

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

Java für Computerlinguisten

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

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

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

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

Einführung in die Programmierung

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

Mehr

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

Informatik II Übung 6 Gruppe 7

Informatik II Übung 6 Gruppe 7 Informatik II Übung 6 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch DEBRIEFING Übung 5 2 U5A1-4 Im Prinzip alles richtig. Falls am Ende noch Zeit, dann Einsicht in die Best Of s 3 THEORIE Java Vererbung,

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

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

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

Einführung in die Informatik

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

Mehr

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

Interfaces und Vererbung

Interfaces und Vererbung Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren

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

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

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

Mehr

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

5.5.8 Öffentliche und private Eigenschaften

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

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter Java, Objektorientierung 5.1 (U )

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

Wiederholung zur Vorlesung Programmieren

Wiederholung zur Vorlesung Programmieren Wiederholung zur Vorlesung Jan 2007 Wintersemester 2007/2008 Computerlinguistik, Campus DU Einstieg Erläutern sie in knappen Worten die notwendigen Schritte um ein einfaches Java-Programm zu schreiben

Mehr

Teil 2: OOP und JAVA (Vorlesung 11)

Teil 2: OOP und JAVA (Vorlesung 11) Teil 2: OOP und JAVA (Vorlesung 11) Modul: Programmierung B-PRG Grundlagen der Programmierung II Prof. Dot.-Ing. Roberto Zicari Professur für Datenbanken und Informationssysteme (FB 12) 28.06.06 1 Teil

Mehr

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

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

Mehr

Klassenbeziehungen & Vererbung

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

Mehr

JAVA - Methoden

JAVA - Methoden Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können

Mehr

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

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

Mehr

Javakurs für Anfänger

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

Mehr

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

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

Methoden (fortgeschritten) in C# - 1

Methoden (fortgeschritten) in C# - 1 Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich

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

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 2, 21.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Themenübersicht 20.3: Java 21.3: Objektorientierte Programmierung 22.3: Dynamische Datenstrukturen 23.3: Datenbanksysteme

Mehr

Java, OO und UML Fortsetzung

Java, OO und UML Fortsetzung Java, OO und UML Fortsetzung Das Objektorientierte Paradigma OO bildet keine geschlossene theoretisch abgegrenzte Basis (wie z.b. das Relationsmodell relationaler Datenbanken) OO ist eine Sammlung und

Mehr

Klassen mit Instanzmethoden

Klassen mit Instanzmethoden Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

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

Java. Prof. Dr. Stefan Enderle NTA Isny

Java. Prof. Dr. Stefan Enderle NTA Isny Java Prof. Dr. Stefan Enderle NTA Isny 6. Klassen (Einführung, UML) Nachtrag Objekte In einem Software-System können, je nach Anwendung, viele "Objekte" vorkommen. Beispiele: Beteiligte oder betroffene

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Teil 15: Wiederholung Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 3. Februar 2016

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

Mehr

JAVA - Methoden - Rekursion

JAVA - Methoden - Rekursion Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen

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

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

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

Mehr

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

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

Mehr

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

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

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

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

Mehr

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

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

SWE1 / Übung 9 (11.01.2012)

SWE1 / Übung 9 (11.01.2012) SWE1 / Übung 9 (11.01.2012) Vererbung Zugriffskontrolle Motivation für Vererbung (1) Objekte in der realen Welt kommen oft in ähnlichen Varianten (Attribute, Verhalten) vor Gliederung durch hierarchische

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

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

Java I Vorlesung Vererbung und Sichtbarkeit

Java I Vorlesung Vererbung und Sichtbarkeit Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.

Mehr

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich WS 02/03 Warum muss ein Objekt wissen, zu welcher Klasse es gehört? Damit die Klassenzugehörigkeit

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Schnittstellen implementieren am Beispiel Suchbaum

Schnittstellen implementieren am Beispiel Suchbaum Motivation Informatik mit Java und BlueJ Schnittstellen implementieren am Beispiel Suchbaum von Bernhard Rosing Schreiben Sie eine Klasse Person, deren Instanzen in ein TreeSet (Suchbaum) eingefügt werden

Mehr

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert 2. Vererbung und Polymorphie Vererbung (1/2) Vererbung mit extends Konstruktoren bei der Vererbung Überladen von Methoden - statische Polymorphie Casten Dynamische Polymorphie Klasse Object Eine Unterklasse

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

Praktische Softwaretechnologie Vorlesung 3

Praktische Softwaretechnologie Vorlesung 3 Praktische Softwaretechnologie Vorlesung 3 Martin Giese Johann Radon Institute for Computational and Applied Mathematics Österr. Akademie der Wissenschaften Linz PSWT 2006 24. Oktober 2006 p.1/26 Klassendefinition

Mehr