Sortieren von Objekten

Größe: px
Ab Seite anzeigen:

Download "Sortieren von Objekten"

Transkript

1 Algorithmen und Datenstrukturen Wintersemester 2013/ Vorlesung Sortieren von Objekten Krzysztof Fleszar Lehrstuhl für Informatik I 1

2 Die Welt in unseren Programmen true "HalloWelt!" false -1.4E false bisher 2

3 Die Welt in unseren Programmen mit Objektorientierung 3

4 Übersicht Klassen in Java (Wiederholung Vorkurs) InsertionSort für Punkte Vererbung Sortieren geometrischer Formen abstrakte Klassen und Methoden Mehrfachvererbung 4

5 Übersicht Klassen in Java (Wiederholung Vorkurs) InsertionSort für Punkte Vererbung Sortieren geometrischer Formen abstrakte Klassen und Methoden Mehrfachvererbung 5

6 Klassen 6

7 Klassen Eine Klasse definiert gemeinsame Eigenschaften einer Menge von Objekten. Jedes Objekt ist Instanz einer Klasse (oder ein Feld). Klasse Objekt 7

8 Attribute sind Datenelemente, Klassen Eine Klasse definiert gemeinsame Eigenschaften einer Menge von Objekten. Jedes Objekt ist Instanz einer Klasse (oder ein Feld). die in jedem Objekt einer Klasse gleichermaßen enthalten sind und von jedem Objekt mit individuellen Werten repräsentiert werden können. 8

9 Klassen Eine Klasse definiert gemeinsame Eigenschaften einer Menge von Objekten. Jedes Objekt ist Instanz einer Klasse (oder ein Feld). Attribute sind Datenelemente, die in jedem Objekt einer Klasse gleichermaßen enthalten sind und von jedem Objekt mit individuellen Werten repräsentiert werden können. Beispiel: public class Adresse { public String str; //der Strassenname public int plz; //die Postleitzahl public String ort; //der Ortsname 9

10 Klassen Beispiel: public class Adresse { public String str; public int plz; public String ort; Bezeichner der Klasse (Konvention: Beginn mit Großbuchstabe) 10

11 Klassen Beispiel: public class Adresse { public String str; public int plz; public String ort; Attribute Datentyp Bezeichner 11

12 Klassen Beispiel: public class Adresse { public String str; public int plz; public String ort; muss in Datei Adresse.java gespeichert werden! 12

13 Klassen public class Adressbuch { public static void main(string[] args) { Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; System.out.print(a.str + ", " + a.plz + " " + a.ort); public class Adresse { public String str; public int plz; public String ort; 13

14 Klassen public class Adressbuch { public static void main(string[] args) { //Instantiierung: Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; System.out.print(a.str + ", " + a.plz + " " + a.ort); public class Adresse { public String str; public int plz; public String ort; 14

15 Klassen public class Adressbuch { public static void main(string[] args) { //Instantiierung: Adresse a = new Adresse(); //Setze Attributwerte: a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; System.out.print(a.str + ", " + a.plz + " " + a.ort); public class Adresse { public String str; public int plz; public String ort; 15

16 Klassen public class Adressbuch { public static void main(string[] args) { //Instantiierung: Adresse a = new Adresse(); //Setze Attributwerte: a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; //Ausgabe System.out.print(a.str + ", " + a.plz + " " + a.ort); public class Adresse { public String str; public int plz; public String ort; 16

17 Klassen public class Adressbuch { public static void main(string[] args) { Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); 17

18 Klassen Adresse a = new Adresse(); Klassenschablone legt neue Karteikarte an: a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; a str plz ort System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); 18

19 Klassen Adresse a = new Adresse(); Karteikarte wird ausgefüllt: a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; a str plz Am Hubland Adresse b = a; b.ort = "Nuernberg"; ort Wuerzburg System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); 19

20 Klassen Adresse a = new Adresse(); b zeigt auf dieselbe Instanz wie a: a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; b a str plz ort Am Hubland Wuerzburg System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); 20

21 Klassen Adresse a = new Adresse(); aktualisiere b.ort und damit auch a.ort a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; b a str plz ort Am Hubland Nuernberg System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); 21

22 Klassen Adresse a = new Adresse(); a.str = "Am Hubland"; a.plz = 97074; a.ort = "Wuerzburg"; Adresse b = a; b.ort = "Nuernberg"; b a str plz ort Am Hubland Nuernberg System.out.println(a.str + ", " + a.plz + " " + a.ort); System.out.println(b.str + ", " + b.plz + " " + b.ort); Ausgabe: Am Hubland, Nuernberg Am Hubland, Nuernberg 22

23 Klassen Klassen sind Referenzdatentypen! (genau wie Felder) 23

24 Klassenmethoden (static) public class Adresse { public String str; public int plz; public String ort; //testet, ob a und b dieselbe Postleitzahl haben public static boolean habenselbeplz(adresse a, Adresse b) { return (a.plz == b.plz); 24

25 Klassenmethoden (static) public class Adresse { public String str; public int plz; public String ort; //testet, ob a und b dieselbe Postleitzahl haben public static boolean habenselbeplz(adresse a, Adresse b) { return (a.plz == b.plz); Beispiel: Adresse a = new Adresse(); a.ort = "Wuerzburg"; a.plz = 97074; a.str = "Am Hubland"; Adresse b = new Adresse(); b.ort = "Wuerzburg"; b.plz = 97074; b.str = "Zeppelinstrasse"; if (Adresse.habenSelbePlz(a, b)) System.out.println("a und b haben dieselbe PLZ"); 25

26 Klassenmethoden (static) public class Adresse { public String str; public int plz; public String ort; //testet, ob a und b dieselbe Postleitzahl haben public static boolean habenselbeplz(adresse a, Adresse b) { return (a.plz == b.plz); Beispiel: Adresse a = new Adresse(); a.ort = "Wuerzburg"; a.plz = 97074; a.str = "Am Hubland"; Adresse b = new Adresse(); b.ort = "Wuerzburg"; Klassenname b.plz = 97074; b.str = "Zeppelinstrasse"; if (Adresse.habenSelbePlz(a, b)) System.out.println("a und b haben dieselbe PLZ"); 26

27 Instanzmethoden (nicht static) public class Adresse { public String str; public int plz; public String ort; //testet, ob this dieselbe Postleitzahl wie a hat public boolean hatselbeplz(adresse a) { return (this.plz == a.plz); 27

28 Instanzmethoden (nicht static) public class Adresse { public String str; public int plz; public String ort; //testet, ob this dieselbe Postleitzahl wie a hat public boolean hatselbeplz(adresse a) { return (this.plz == a.plz); Beispiel: Adresse a = new Adresse(); a.ort = "Wuerzburg"; a.plz = 97074; a.str = "Am Hubland"; Bezeichner Adresse b = new Adresse(); b.ort = "Wuerzburg"; b.plz = 97074; einer Instanz b.str = "Zeppelinstrasse"; if (a.hatselbeplz(b)) System.out.println("a und b haben dieselbe PLZ"); 28

29 Übersicht Klassen in Java (Wiederholung Vorkurs) InsertionSort für Punkte Vererbung Sortieren geometrischer Formen abstrakte Klassen und Methoden Mehrfachvererbung 29

30 InsertionSort für Punkte public class Sortierverfahren { public static void insertionsort(int[] a) { for (int j = 1; j < a.length; j++) { int key = a[j]; int i = j - 1; while (i >= 0 && a[i] > key) { a[i + 1] = a[i]; i--; a[i + 1] = key; 30

31 InsertionSort für Punkte Java-Code: public class Punkt { public double x; public double y; UML-Diagramm: +x:double +y:double Punkt y p 3 p 1 1 p 2 p x 31

32 InsertionSort für Punkte Java-Code: public class Punkt { public double x; public double y; UML-Diagramm: +x:double +y:double Punkt Voraussetzung fürs Sortieren: Definition einer Ordnung y p 3 p i < p j genau dann, wenn p 1 p i.x < p j.x oder ( p i.x = p j.x und p i.y < p j.y) 1 p 2 p x = lexikographische Ordnung 32

33 InsertionSort für Punkte Umsetzung in Java: public class Punkt { public double x; public double y; UML-Diagramm: +x:double +y:double Punkt +compareto(punkt):int /* gibt Wert < 0 fuer (this < p), Wert > 0 fuer (this > p) und 0 fuer (this = p) zurueck */ public int compareto(punkt p) { if (this.x < p.x) return -1; if (this.x == p.x) { if (this.y < p.y) return -1; if (this.y == p.y) return 0; return 1; 33

34 Achtung! InsertionSort für Punkte Eine Ordnung ist immer transitiv: a > b und b > c a > c Entsprechend in Java: a.compareto(b) > 0 und b.compareto(c) > 0 a.compareto(c) > 0 Einhaltung dieser Bedingung liegt in der Verantwortung des Programmierers! 34

35 Achtung! InsertionSort für Punkte Eine Ordnung ist immer transitiv: a > b und b > c a > c Entsprechend in Java: a.compareto(b) < 0 und b.compareto(c) < 0 a.compareto(c) < 0 Einhaltung dieser Bedingung liegt in der Verantwortung des Programmierers! 35

36 Achtung! InsertionSort für Punkte Eine Ordnung ist immer transitiv: a > b und b > c a > c Entsprechend in Java: a.compareto(b) == 0 und b.compareto(c) == 0 a.compareto(c) == 0 Einhaltung dieser Bedingung liegt in der Verantwortung des Programmierers! 36

37 InsertionSort für Punkte Achtung! Bedingung 2: a > b und b = c a < b und b = c Entsprechend in Java: a > c a < c a.compareto(b) > 0 und b.compareto(c) = 0 a.compareto(c) > 0 Einhaltung dieser Bedingung liegt in der Verantwortung des Programmierers! 37

38 InsertionSort für Punkte Achtung! Bedingung 2: a > b und b = c a < b und b = c Entsprechend in Java: a > c a < c a.compareto(b) < 0 und b.compareto(c) = 0 a.compareto(c) < 0 Einhaltung dieser Bedingung liegt in der Verantwortung des Programmierers! 38

39 Achtung! Bedingung 3: a > b a = b InsertionSort für Punkte b < a b = a Entsprechend in Java: a.compareto(b) > 0 b.compareto(a) < 0 a.compareto(b) == 0 b.compareto(a) == 0 Einhaltung dieser Bedingung liegt in der Verantwortung des Programmierers! 39

40 InsertionSort für Punkte public class Sortierverfahren { public static void insertionsort(int[] a) { for (int j = 1; j < a.length; j++) { int key = a[j]; int i = j - 1; while (i >= 0 && a[i] > key) { a[i + 1] = a[i]; i--; a[i + 1] = key; 40

41 InsertionSort für Punkte public class Sortierverfahren { public static void insertionsort(punkt[] a) { for (int j = 1; j < a.length; j++) { Punkt key = a[j]; int i = j - 1; while (i >= 0 && a[i] > key) { a[i + 1] = a[i]; i--; a[i + 1] = key; 41

42 InsertionSort für Punkte public class Sortierverfahren { public static void insertionsort(punkt[] a) { for (int j = 1; j < a.length; j++) { Punkt key = a[j]; int i = j - 1; while (i >= 0 && a[i].compareto(key) > 0) { a[i + 1] = a[i]; i--; a[i + 1] = key; 42

43 InsertionSort für Punkte public class Sortierverfahren { public static void main(string[] args) { Punkt[] a = new Punkt[4]; a[0] = new Punkt(); a[0].x = 1; a[0].y = 2;... public static void insertionsort(punkt[] a) { //... 43

44 InsertionSort für Punkte Ein Konstruktor für die Klasse Punkt: public class Punkt { public double x; public double y; public Punkt(double myx, double myy) { x = myx; y = myy; /* gibt Wert < 0 fuer (this < p), Wert > 0 fuer (this > p) und 0 fuer (this = p) zurueck */ public int compareto(punkt p) { if (this.x < p.x) return -1; if (this.x == p.x) { if (this.y < p.y) return -1; if (this.y == p.y) return 0; return 1; UML-Diagramm: +x:double +y:double Punkt +Punkt(double, double) +compareto(punkt):int 44

45 InsertionSort für Punkte public class Sortierverfahren { public static void main(string[] args) { Punkt[] a = new Punkt[4]; a[0] = new Punkt(1, 2); a[1] = new Punkt(1, 1); a[2] = new Punkt(3, 1); a[3] = new Punkt(4, 3); insertionsort(a); for (int i = 0; i < a.length; i++) System.out.println(a[i].x + " " + a[i].y); public static void insertionsort(punkt[] a) { //... 45

46 InsertionSort für Punkte public class Sortierverfahren { public static void main(string[] args) { Punkt[] a = new Punkt[4]; a[0] = new Punkt(1, 2); a[1] = new Punkt(1, 1); a[2] = new Punkt(3, 1); Ausgabe: a[3] = new Punkt(4, 3); insertionsort(a); for (int i = 0; i < a.length; i++) System.out.println(a[i].x + " " + a[i].y); public static void insertionsort(punkt[] a) { //

47 InsertionSort für Punkte Braucht man für jede Klasse eine neue Sortiermethode? public class Sortierverfahren { public static void insertionsort(punkt[] a) { for (int j = 1; j < a.length; j++) { Punkt key = a[j]; int i = j - 1; while (i >= 0 && a[i].compareto(key) > 0) { a[i + 1] = a[i]; i--; a[i + 1] = key; 47

48 InsertionSort für Punkte Braucht man für jede Klasse eine neue Sortiermethode? Nein, dafür gibt es Vererbung, Generics... public class Sortierverfahren { public static void insertionsort(punkt[] a) { for (int j = 1; j < a.length; j++) { Punkt key = a[j]; int i = j - 1; while (i >= 0 && a[i].compareto(key) > 0) { a[i + 1] = a[i]; i--; a[i + 1] = key; 48

49 Übersicht Klassen in Java (Wiederholung Vorkurs) InsertionSort für Punkte Vererbung Sortieren geometrischer Formen abstrakte Klassen und Methoden Mehrfachvererbung 49

50 Sortieren geometrischer Formen nach Größe 50

51 Sortieren geometrischer Formen nach Größe public class Quadrat { //ein achsparalleles Quadrat public Punkt m; //der Mittelpunkt public double a; //die Seitenlaenge public Quadrat (Punkt mym, double mya) { m = mym; a = mya; public double getflaeche() { return a * a; Quadrat +m:punkt +a:double +Quadrat(Punkt, double) +getflaeche():double 51

52 Sortieren geometrischer Formen nach Größe public class Quadrat { //ein achsparalleles Quadrat public Punkt m; //der Mittelpunkt public double a; //die Seitenlaenge public Quadrat (Punkt mym, double mya) { m = mym; a = mya; public double getflaeche() { return a * a; Quadrat +m:punkt +a:double Problem: Punkt p = new Punkt(0.2, 0.4); Quadrat q = new Quadrat(p, -1.2); oder q.a = -1.2; erzeugt Quadrat mit negativer Seitenlaenge. +Quadrat(Punkt, double) +getflaeche():double 52

53 Sortieren geometrischer Formen nach Größe public class Quadrat { //ein achsparalleles Quadrat public Punkt m; //der Mittelpunkt private double a; //die Seitenlaenge public Quadrat (Punkt mym, double mya) { m = mym; seta(mya); public double getflaeche() { return a * a; public void seta(double mya) { if (mya > 0) a = mya; public double geta() { return a; +m:punkt -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double Lösung: Direkter Zugriff auf a (von Außen) wird verboten. 53

54 Sortieren geometrischer Formen nach Größe public class Quadrat { //ein achsparalleles Quadrat public Punkt m; //der Mittelpunkt private double a; //die Seitenlaenge public Quadrat (Punkt mym, double mya) { m = mym; seta(mya); public double getflaeche() { return a * a; public void seta(double mya) { if (mya > 0) a = mya; public double geta() { return a; +m:punkt -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double Lösung: Direkter Zugriff auf a (von Außen) wird verboten. Quadrat q = new Quadrat(new Punkt(0.0,0.0),1.0); q.a = 2.0; 54 "The field Quadrat.a is not visible"

55 Sortieren geometrischer Formen nach Größe public class Quadrat { //ein achsparalleles Quadrat public Punkt m; //der Mittelpunkt private double a; //die Seitenlaenge public Quadrat (Punkt mym, double mya) { m = mym; seta(mya); public double getflaeche() { return a * a; public void seta(double mya) { if (mya > 0) a = mya; public double geta() { return a; +m:punkt -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double Lösung: Direkter Zugriff auf a (von Außen) wird verboten. Zugriff wird über get- und set-methode kontrolliert. 55

56 Sortieren geometrischer Formen nach Größe public class Kreis { //ein Kreis public Punkt m; //der Mittelpunkt private double r; //der Radius public Kreis (Punkt mym, double myr) { m = mym; setr(myr); public double getflaeche() { return Math.PI * r * r; public void setr(double myr) { if (myr > 0) r = myr; public double getr() { return r; +m:punkt -r:double Kreis +Kreis(Punkt, double) +getflaeche():double +setr(double) +getr():double 56

57 Sortieren geometrischer Formen nach Größe public class Kreis { //ein Kreis public Punkt m; //der Mittelpunkt private double r; //der Radius public Kreis (Punkt mym, double myr) { m = mym; setr(myr); public double getflaeche() { return Math.PI * r * r; public void setr(double myr) { if (myr > 0) r = myr; public double getr() { return r; +m:punkt -r:double Kreis +Kreis(Punkt, double) +getflaeche():double +setr(double) +getr():double 57

58 Sortieren geometrischer Formen nach Größe +m:punkt -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double +m:punkt -r:double Kreis +Kreis(Punkt, double) +getflaeche():double +setr(double) +getr():double 58

59 Sortieren geometrischer Formen nach Größe Gemeinsamkeiten? +m:punkt -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double +m:punkt -r:double Kreis +Kreis(Punkt, double) +getflaeche():double +setr(double) +getr():double 59

60 Sortieren geometrischer Formen nach Größe Gemeinsamkeiten? Jeder Kreis und jedes Quadrat ist eine geometrische Figur GeoFigur +m:punkt -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double +m:punkt -r:double Kreis +Kreis(Punkt, double) +getflaeche():double +setr(double) +getr():double 60

61 Sortieren geometrischer Formen nach Größe Gemeinsamkeiten? Jede GeoFigur hat einen Mittelpunkt. +m:punkt GeoFigur Die Klasse Quadrat/Kreis erbt die Definition des Attributs m von GeoFigur. -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double -r:double Kreis +Kreis(Punkt, double) +getflaeche():double +setr(double) +getr():double 61

62 Sortieren geometrischer Formen nach Größe Gemeinsamkeiten? Für jede GeoFigur kann man den Flächeninhalt berechnen. +m:punkt GeoFigur +getflaeche():double -a:double Quadrat +Quadrat(Punkt, double) +seta(double) +geta():double -r:double Kreis +Kreis(Punkt, double) +setr(double) +getr():double 62

63 Sortieren geometrischer Formen nach Größe Gemeinsamkeiten? Für jede GeoFigur kann man den Flächeninhalt berechnen. +m:punkt GeoFigur +getflaeche():double -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double -r:double Kreis +Kreis(Punkt, double) +getflaeche():double +setr(double) +getr():double Aber: Für Quadrate und Kreise gelten verschiedene Formeln. Die Methode getflaeche muss überschrieben werden. 63

64 Sortieren geometrischer Formen nach Größe Gemeinsamkeiten? Die Klasse GeoFigur kann einen eigenen Konstruktor haben. +m:punkt GeoFigur +GeoFigur(Punkt) +getflaeche():double -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double -r:double Kreis +Kreis(Punkt, double) +getflaeche():double +setr(double) +getr():double 64

65 Sortieren geometrischer Formen nach Größe Gemeinsamkeiten? Eine GeoFigur kann mit einer anderen GeoFigur verglichen werden (zwecks Sortieren). +m:punkt GeoFigur +GeoFigur(Punkt) +getflaeche():double +compareto(geofigur):int -a:double Quadrat +Quadrat(Punkt, double) +getflaeche():double +seta(double) +geta():double -r:double Kreis +Kreis(Punkt, double) +getflaeche():double +setr(double) +getr():double 65

66 Sortieren geometrischer Formen nach Größe Klasse GeoFigur in Java: public class GeoFigur { public Punkt m; public GeoFigur(Punkt mym) { m = mym; public double getflaeche() { return 0.0; public int compareto(geofigur key) { if (this.getflaeche() > key.getflaeche()) return 1; if (this.getflaeche() < key.getflaeche()) return -1; return 0; 66

67 Sortieren geometrischer Formen nach Größe Anpassung der Klasse Quadrat: public class Quadrat { public Punkt m; private double a; public Quadrat (Punkt mym, double mya) { m = mym; seta(mya); public double getflaeche() { return a * a; public void seta(double mya) { if (mya > 0) a = mya; public double geta() { return a; 67

68 Sortieren geometrischer Formen nach Größe Anpassung der Klasse Quadrat: public class Quadrat extends GeoFigur { public Punkt m; private double a; public Quadrat (Punkt mym, double mya) { m = mym; seta(mya); public double getflaeche() { return a * a; public void seta(double mya) { if (mya > 0) a = mya; public double geta() { return a; kennzeichnet Vererbung 68

69 Sortieren geometrischer Formen nach Größe Anpassung der Klasse Quadrat: public class Quadrat extends GeoFigur { public Punkt m; private double a; public Quadrat (Punkt mym, double mya) { m = mym; seta(mya); public double getflaeche() { return a * a; public void seta(double mya) { if (mya > 0) a = mya; public double geta() { return a; ist bereits in GeoFigur definiert 69

70 Sortieren geometrischer Formen nach Größe Anpassung der Klasse Quadrat: public class Quadrat extends GeoFigur { public Punkt m; private double a; public Quadrat (Punkt mym, double mya) { m = mym; seta(mya); public double getflaeche() { return a * a; public void seta(double mya) { if (mya > 0) a = mya; public double geta() { return a; ist bereits in GeoFigur definiert 70

71 Sortieren geometrischer Formen nach Größe Anpassung der Klasse Quadrat: public class Quadrat extends GeoFigur { private double a; public Quadrat (Punkt mym, double mya) { super(mym); seta(mya); public double getflaeche() { return a * a; public void seta(double mya) { if (mya > 0) a = mya; public double geta() { return a; im Konstruktor muss als erstes der Konstruktor der Superklasse aufgerufen werden. 71

72 Sortieren geometrischer Formen nach Größe Anpassung der Klasse Quadrat: public class Quadrat extends GeoFigur { private double a; public Quadrat (Punkt mym, double mya) { super(mym); seta(mya); public double getflaeche() { return a * a; public void seta(double mya) { if (mya > 0) a = mya; public double geta() { return a; 72

73 Sortieren geometrischer Formen nach Größe Anpassung der Klasse Kreis: public class Kreis { public Punkt m; private double r; public Kreis (Punkt mym, double myr) { m = mym; setr(myr); public double getflaeche() { return Math.PI * r * r; public void setr(double myr) { if (myr > 0) r = myr; public double getr() { return r; 73

74 Sortieren geometrischer Formen nach Größe Anpassung der Klasse Kreis: public class Kreis extends GeoFigur { private double r; public Kreis (Punkt mym, double myr) { super(mym); setr(myr); public double getflaeche() { return Math.PI * r * r; public void setr(double myr) { if (myr > 0) r = myr; public double getr() { return r; 74

75 Sortieren geometrischer Formen nach Größe Sortieren: public class Sortierverfahren { public static void main(string[] args) { GeoFigur[] a = new GeoFigur[4]; a[0] = new Quadrat(new Punkt(0.0, 0.0), 2.0); a[1] = new Quadrat(new Punkt(1.0, 2.0), 4.0); a[2] = new Kreis(new Punkt(2.0, 0.0), 2.0); a[3] = new Kreis(new Punkt(0.0, 1.0), 4.0); insertionsort(a); for (int i = 0; i < a.length; i++) System.out.println(a[i].getClass().toString() + " " + a[i].getflaeche()); public static void insertionsort(geofigur[] a) { //... 75

76 Sortieren geometrischer Formen nach Größe Sortieren: public class Sortierverfahren { public static void main(string[] args) { GeoFigur[] a = new GeoFigur[4]; a[0] = new Quadrat(new Punkt(0.0, 0.0), 2.0); a[1] = new Quadrat(new Punkt(1.0, 2.0), 4.0); a[2] = new Kreis(new Punkt(2.0, 0.0), 2.0); a[3] = new Kreis(new Punkt(0.0, 1.0), 4.0); insertionsort(a); Ein Quadrat ist halt auch eine GeoFigur. for (int i = 0; i < a.length; i++) System.out.println(a[i].getClass().toString() + " " + a[i].getflaeche()); public static void insertionsort(geofigur[] a) { //... 76

77 Sortieren geometrischer Formen nach Größe Sortieren: public class Sortierverfahren { public static void main(string[] args) { GeoFigur[] a = new GeoFigur[4]; a[0] = new Quadrat(new Punkt(0.0, 0.0), 2.0); a[1] = new Quadrat(new Punkt(1.0, 2.0), 4.0); a[2] = new Kreis(new Punkt(2.0, 0.0), 2.0); a[3] = new Kreis(new Punkt(0.0, 1.0), 4.0); insertionsort(a); for (int i = 0; i < a.length; i++) System.out.println(a[i].getClass().toString() + " " + a[i].getflaeche()); public static void insertionsort(geofigur[] a) { //... 77

78 Sortieren geometrischer Formen nach Größe Sortieren: public class Sortierverfahren { public static void main(string[] args) { //... public static void insertionsort(geofigur[] a) { for (int j = 1; j < a.length; j++) { GeoFigur key = a[j]; int i = j - 1; while (i >= 0 && a[i].compareto(key) > 0) { a[i + 1] = a[i]; i--; a[i + 1] = key; 78

79 Sortieren geometrischer Formen nach Größe Sortieren: public class Sortierverfahren { public static void main(string[] args) { //... public static void insertionsort(geofigur[] a) { for (int j = 1; j < a.length; j++) { GeoFigur key = a[j]; int i = j - 1; while (i >= 0 && a[i].compareto(key) > 0) { a[i + 1] = a[i]; i--; a[i + 1] = key; compareto ruft die richtige Flächenmethode auf (d.h., die Implementierungen für Quadrate und Kreise). 79

80 Sortieren geometrischer Formen nach Größe Sortieren: public class Sortierverfahren { public static void main(string[] args) { //... public static void insertionsort(geofigur[] a) { for (int j = 1; j < a.length; j++) { GeoFigur key = a[j]; Ausgabe: int i = j - 1; while (i >= 0 && a[i].compareto(key) > 0) { a[i + 1] = a[i]; class Quadrat 4.0 i--; a[i + 1] = key; class Quadrat 16.0 class Kreis class Kreis

81 Sortieren geometrischer Formen nach Größe Vorteil der objektorientierten Programmierung: Entwickler A möchte Kreise nach Flächeninhalt sortieren. 81

82 Sortieren geometrischer Formen nach Größe Vorteil der objektorientierten Programmierung: Entwickler A möchte Kreise nach Flächeninhalt sortieren. Entwicklerin B hat bereits Klasse Sortierverfahren und GeoFigur programmiert. Sortierverfahren +insertionsort(geofigur[]) +m:punkt GeoFigur +GeoFigur(Punkt) +getflaeche():double +compareto(geofigur):int 82

83 Sortieren geometrischer Formen nach Größe Vorteil der objektorientierten Programmierung: Entwickler A möchte Kreise nach Flächeninhalt sortieren. A braucht nur noch Klasse Kreis zu implementieren und dabei als Unterklasse von GeoFigur zu definieren. Kreis Entwicklerin B hat bereits Klasse Sortierverfahren und GeoFigur programmiert. Sortierverfahren +insertionsort(geofigur[]) +m:punkt GeoFigur +GeoFigur(Punkt) +getflaeche():double +compareto(geofigur):int 83

84 Sortieren geometrischer Formen nach Größe Vorteil der objektorientierten Programmierung: Entwickler A möchte Kreise nach Flächeninhalt sortieren. A braucht nur noch Klasse Kreis zu implementieren und dabei als Unterklasse von GeoFigur zu definieren. Dann kann er insertionsort aus Sortierverfahren zum Sortieren verwenden. Kreis Entwicklerin B hat bereits Klasse Sortierverfahren und GeoFigur programmiert. Sortierverfahren +insertionsort(geofigur[]) +m:punkt GeoFigur +GeoFigur(Punkt) +getflaeche():double +compareto(geofigur):int 84

85 Sortieren geometrischer Formen nach Größe Vorteil der objektorientierten Programmierung: Entwickler A möchte Kreise nach Flächeninhalt sortieren. A braucht nur noch Klasse Kreis zu implementieren und dabei als Unterklasse von GeoFigur zu definieren. Dann kann er insertionsort aus Sortierverfahren zum Sortieren verwenden. Achtung: Methode getflaeche Kreis muss in Klasse Kreis implementiert sein! public class GeoFigur { public Punkt m; public GeoFigur(Punkt mym) { m = mym; public double getflaeche() GeoFigur { return +m:punkt 0.0; Sortierverfahren +GeoFigur(Punkt) +insertionsort(geofigur[]) public int +getflaeche():double compareto(geofigur key) {... +compareto(geofigur):int 85 Entwicklerin B hat bereits Klasse Sortierverfahren und GeoFigur programmiert.

86 Sortieren geometrischer Formen nach Größe Vorteil der objektorientierten Programmierung: Entwickler A möchte Kreise nach Flächeninhalt sortieren. A braucht nur noch Klasse Kreis zu implementieren und dabei als Unterklasse von GeoFigur zu definieren. Dann kann er insertionsort aus Sortierverfahren zum Sortieren verwenden. Achtung: Methode getflaeche Kreis muss in Klasse Kreis implementiert sein! Entwicklerin B hat bereits Klasse Sortierverfahren und GeoFigur programmiert. Sortierverfahren +insertionsort(geofigur[]) getflaeche():double +m:punkt GeoFigur +GeoFigur(Punkt) +getflaeche():double +compareto(geofigur):int 86

87 Sortieren geometrischer Formen nach Größe Vorteil der objektorientierten Programmierung: Kreis Achtung: Methode getflaeche muss in Klasse Kreis implementiert sein! Das sollte Entwicklerin B anderen Entwicklern mitteilen! getflaeche():double Sortierverfahren +insertionsort(geofigur[]) +m:punkt GeoFigur +GeoFigur(Punkt) +getflaeche():double +compareto(geofigur):int 87

88 Sortieren geometrischer Formen nach Größe Vorteil der objektorientierten Programmierung: Sortierverfahren +insertionsort(geofigur[]) +m:punkt Kreis Achtung: Methode getflaeche muss in Klasse Kreis implementiert sein! Das sollte Entwicklerin B anderen Entwicklern mitteilen! Dazu kann B Klasse GeoFigur und Methode getflaeche als abstract definieren. getflaeche():double GeoFigur +GeoFigur(Punkt) +getflaeche():double +compareto(geofigur):int 88

89 Sortieren geometrischer Formen nach Größe Eine abstrakte Methode einer Klasse X muss in jeder Unterklasse von X implementiert werden. Eine abstrakte Klasse ist eine Klasse, die eine abstrakte Methode enthält. Kreis getflaeche():double Sortierverfahren +insertionsort(geofigur[]) +m:punkt GeoFigur +GeoFigur(Punkt) +getflaeche():double +compareto(geofigur):int 89

90 Sortieren geometrischer Formen nach Größe Eine abstrakte Methode einer Klasse X muss in jeder Unterklasse von X implementiert werden. Eine abstrakte Klasse ist eine Klasse, die eine abstrakte Methode enthält. Namen von abstrakten Klassen und Methoden werden in UML kursiv geschrieben. Kreis getflaeche():double Sortierverfahren +insertionsort(geofigur[]) +m:punkt GeoFigur +GeoFigur(Punkt) +getflaeche():double +compareto(geofigur):int 90

91 Sortieren geometrischer Formen nach Größe Eine abstrakte Methode einer Klasse X muss in jeder Unterklasse von X implementiert werden. Eine abstrakte Klasse ist eine Klasse, die eine abstrakte Methode enthält. Abstrakte Klassen und Methoden werden in Java durch das Schlüsselwort abstract gekennzeichnet. public class GeoFigur { public Punkt m; public GeoFigur(Punkt mym) { m = mym; public double getflaeche() { return 0.0; public int compareto(geofigur key) {... 91

92 Sortieren geometrischer Formen nach Größe Eine abstrakte Methode einer Klasse X muss in jeder Unterklasse von X implementiert werden. Eine abstrakte Klasse ist eine Klasse, die eine abstrakte Methode enthält. Abstrakte Klassen und Methoden werden in Java durch das Schlüsselwort abstract gekennzeichnet. public abstract class GeoFigur { public Punkt m; public GeoFigur(Punkt mym) { m = mym; public abstract double getflaeche(); public int compareto(geofigur key) {... 92

93 Sortieren geometrischer Formen nach Größe Eine abstrakte Methode einer Klasse X muss in jeder Unterklasse von X implementiert werden. Eine abstrakte Klasse ist eine Klasse, die eine abstrakte Methode enthält. Abstrakte Klassen und Methoden werden in Java durch das Schlüsselwort abstract gekennzeichnet. Methodenrumpf entfällt! public abstract class GeoFigur { public Punkt m; public GeoFigur(Punkt mym) { m = mym; public abstract double getflaeche(); public int compareto(geofigur key) {... 93

94 abstrakte Klassen und Methoden Klasse GeoFigur als abstrakte Klasse: public abstract class GeoFigur { public Punkt m; public GeoFigur(Punkt mym) { m = mym; public abstract double getflaeche(); public int compareto(geofigur key) { if (this.getflaeche() > key.getflaeche()) return 1; if (this.getflaeche() < key.getflaeche()) return -1; return 0; Von einer abstrakten Klasse können keine Instanzen erzeugt werden: Punkt p = new Punkt(0.0, 0.0); GeoFigur g = new GeoFigur(p); 94 "Cannot instantiate the type GeoFigur"

95 abstrakte Klassen und Methoden Klasse GeoFigur als abstrakte Klasse: public abstract class GeoFigur { public Punkt m; public GeoFigur(Punkt mym) { m = mym; public abstract double getflaeche(); public int compareto(geofigur key) { if (this.getflaeche() > key.getflaeche()) return 1; if (this.getflaeche() < key.getflaeche()) return -1; return 0; Von einer abstrakten Klasse können keine Instanzen erzeugt werden: Punkt p = new Punkt(0.0, 0.0); GeoFigur g = new GeoFigur(p); Auf öffentliche Konstruktoren sollte verzichtet werden! 95 "Cannot instantiate the type GeoFigur"

96 abstrakte Klassen und Methoden Klasse GeoFigur als abstrakte Klasse: public abstract class GeoFigur { public Punkt m; protected GeoFigur(Punkt mym) { m = mym; public abstract double getflaeche(); Kann nur noch von Unterklassen aufgerufen werden! public int compareto(geofigur key) { if (this.getflaeche() > key.getflaeche()) return 1; if (this.getflaeche() < key.getflaeche()) return -1; return 0; public class Quadrat extends GeoFigur { private double a; public Quadrat (Punkt mym, double mya) { super(mym); seta(mya); 96

97 Sortieren geometrischer Formen nach Größe Sortieren: public class Sortierverfahren { public static void main(string[] args) { GeoFigur[] a = new GeoFigur[4]; a[0] = new Quadrat(new Punkt(0.0, 0.0), 2.0); a[1] = new Quadrat(new Punkt(1.0, 2.0), 4.0); a[2] = new Kreis(new Punkt(2.0, 0.0), 2.0); a[3] = new Kreis(new Punkt(0.0, 1.0), 4.0); insertionsort(a); Hier kein Kostruktoraufruf! Feld zum Speichern von Objekten der Klasse GeoFigur wird erstellt. Das ist erlaubt! for (int i = 0; i < a.length; i++) System.out.println(a[i].getClass().toString() + " " + a[i].getflaeche()); public static void insertionsort(geofigur[] a) { //... 97

98 Mehrfachvererbung Tier +masse:double +volumen:double +getgewichtskraft():double masse in kg, volumen in m 3 Landtier +getgewichtskraft():double Wassertier +getgewichtskraft():double Quelle: Wikipedia Quelle: Wikipedia public double getgewichtskraft() { return masse * 9.81; public double getgewichtskraft() { double auftrieb = volumen * ; return masse * auftrieb; 98

99 Mehrfachvererbung Tier +masse:double +volumen:double +getgewichtskraft():double masse in kg, volumen in m 3 Landtier +getgewichtskraft():double Wassertier +getgewichtskraft():double Quelle: Wikipedia Frosch f = new Frosch(); f.masse = 0.2; f.volumen = 0.005; Frosch Quelle: Wikipedia System.out.println(f.getGewichtskraft()); 99 Quelle: Wikipedia

100 Mehrfachvererbung Tier +masse:double +volumen:double +getgewichtskraft():double masse in kg, volumen in m 3 Landtier +getgewichtskraft():double Wassertier +getgewichtskraft():double Quelle: Wikipedia Frosch Frosch f = new Frosch(); f.masse = 0.2; f.volumen = 0.005; System.out.println(f.getGewichtskraft());? Quelle: Wikipedia Quelle: Wikipedia 100

101 Mehrfachvererbung Tier +masse:double +volumen:double +getgewichtskraft():double masse in kg, volumen in m 3 Landtier +getgewichtskraft():double Wassertier +getgewichtskraft():double Quelle: Wikipedia Frosch? Quelle: Wikipedia In Java ist Mehrfachvererbung verboten! Quelle: Wikipedia 101

102 Dafür gibt es Interfaces... Interfaces Quelle: Wikipedia 102

Interfaces und Generics

Interfaces und Generics Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Interfaces und Generics Jan-Henrik Haunert Lehrstuhl für Informatik I Übersicht Liste und InsertionSort für Punkte für Objekte beliebiger

Mehr

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Übersicht Liste und InsertionSort für e für Objekte beliebiger Klassen für Objekte von Klassen, die ein(e) Nutzer(in) festlegen kann

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

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

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

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

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

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

Programmiertechnik Objektorientierung

Programmiertechnik Objektorientierung Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was ist Objekt-Orientierung? Objekt-Orientierung (OO) ist nicht völlig scharf definiert, d.h. es gibt unterschiedliche

Mehr

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

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Objektorientierung Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Objektorientierung Was ist Objektorientierung Es einige Grundprinzipien, die (fast) allen Definitionen des Begriffs Objektorientierung

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

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

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

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

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

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

Mehr

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

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

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

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

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen(); Typecast class Pilz void suchen() void sammeln() class EßbarerPilz extends Pilz Suppe kochen() Suppe einesuppe = new Suppe(); return einesuppe; class GiftPilz extends Pilz void entsorgen() class Suppe

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

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

Übersicht. Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe SS 2010! Berechnung der Cosinus-Funktion Klausuraufgabe WS 2010/2011!

Übersicht. Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe SS 2010! Berechnung der Cosinus-Funktion Klausuraufgabe WS 2010/2011! Algorithmen und Datenstrukturen Wintersemester 2012/13 8. Vorlesung Algorithmen in Java Jan-Henrik Haunert Lehrstuhl für Informatik I Übersicht Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

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

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

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12. Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis

Mehr

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

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

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

Programmiervorkurs WS 2013/2014. Instanzmethoden. Termin 6

Programmiervorkurs WS 2013/2014. Instanzmethoden. Termin 6 Programmiervorkurs WS 2013/2014 Instanzmethoden Termin 6 double f = flaeche(p); public static double flaeche(polygon p) { Punkt[] pkt = p.punkte; double f = Polygon.flaeche(p); Besser: Methode in der Klasse

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

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

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

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

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

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 - ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete II.4.2 Abstrakte Klassen und Interfaces - 1 - Ähnliche Programmteile public class Bruchelement { Bruch wert;

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

1. Abstrakte Klassen

1. Abstrakte Klassen 1. Abstrakte Klassen Lernziele 1. Abstrakte Klassen Lernziele: Das Konzept abstrakter Klassen und abstrakter Methoden kennen und verstehen, in der Lage sein, abstrakte Klassen und Methoden in Java zu formulieren,

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

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

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces 10 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Interfaces Aber: Mehrfachvererbung von Klassen ist in Java nicht erlaubt. Ausweg Definition eines Interfaces, z.b.:

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

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Informatik II Übung 06. Benjamin Hepp 5 April 2017 Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.

Mehr

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

FAKULTÄT FÜR INFORMATIK

FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2007/2008 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 8 F. Forster, T.

Mehr

9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung in die

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

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 07.01.2008 Übersicht 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme 3 Polygonzüge 4 Das Eulersche Polygonzugverfahren Warm-Up zum Jahresbeginn 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme

Mehr

Objektorientierung. Objekte

Objektorientierung. Objekte Eine Einführung G. Futschek Objekte Objekte Fragen: Wie unterscheiden sich Objekte? Wie sind Objekte einander ähnlich? Was können Objekte? Wie stehen Objekte zueinander in Beziehung? Objekte Im täglichen

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Kapitel 5: Interfaces

Kapitel 5: Interfaces Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,

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

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

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

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

16. Dezember 2004 Dr. M. Schneider, P. Ziewer Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik

Mehr

Programmieren. Warum Objektorientierung? Objektorientierung. Beispiele für Busobjekte der realen Welt

Programmieren. Warum Objektorientierung? Objektorientierung. Beispiele für Busobjekte der realen Welt Institut für Telematik Universität zu Lübeck 2-2 Warum Objektorientierung? Kapitel 5: Java (5.7 und 5.8) Wintersemester 2008/2009 Prof. Dr. Christian Werner Problem: Wie stelle ich eine Beziehung zwischen

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

Objektorientierte Programmierung und Klassen

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

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

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

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell Klassen - Technisch Eine Klasse ist eine Einheit mit einem Namen, die Daten und Funktionalität beinhaltet 12. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, Kapselung,

Mehr

Musterlösung Stand: 5. Februar 2009

Musterlösung Stand: 5. Februar 2009 Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

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

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14 Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Iman Kamehkhosh, Marcel Preuß, Henning Timm Übungsblatt 11

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

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

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

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

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

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

Liste Programmieren Java Überblick

Liste Programmieren Java Überblick Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 4 Schnittstellen 5 Innere Klassen 6 Exceptions 7 Funktionsbibliothek 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe 10 Threads

Mehr

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung

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

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

Aufgabe 1 (Programmanalyse, Punkte)

Aufgabe 1 (Programmanalyse, Punkte) 2 Aufgabe 1 (Programmanalyse, 8 + 6 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Schreiben Sie hierzu jeweils die ausgegebenen Zeichen hinter den Kommentar OUT:. public class

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 2 Objektorientierte Programmierung 24. 04. 2006 Aufgabe 5 (Vererbung - Trace (Klausur FT

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

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

Statische Methoden, Vererbung, Benutzereingabe

Statische Methoden, Vererbung, Benutzereingabe Statische Methoden, Vererbung, Benutzereingabe Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/

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

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

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

Programmiermethodik 3. Klausur Lösung

Programmiermethodik 3. Klausur Lösung Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung

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