Vorkurs Informatik SoSe18

Größe: px
Ab Seite anzeigen:

Download "Vorkurs Informatik SoSe18"

Transkript

1 Vorkurs Informatik SoSe18 Java Methoden Dr. Werner Struckmann / Maximilian von Unwerth,

2 Einleitung Rekursion Übung Objektorientierung OOP mit Java Vererbung Weitere Beispiele Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 2

3 Rekursion Rekursion ist ein wichtiges Prinzip bei der Formulierung von Algorithmen. Es beschreibt die wiederholte Anwendung des gleichen Berechnungsmusters, allerdings i. d. R. auf immer einfachere Daten. Definition Ein rekursives Programm ist ein Programm, das sich selbst aufruft. Meist enthält es eine Abbruchbedingung zur Beendigung der Rekursion Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 3

4 Rekursion Bisher wurden Wiederholungen durch Schleifen gelöst Aber nicht alle Probleme lassen sich nur mit Schleifenlösen Außerdem viele Algorithmen benutzen das divide and conquer-prinzip Fakultät n! = n (n 1) Potenzierung a n = a n 1 a, a 0 = 1 Fibonacci-Funktion, Binomialkoeffzient, ggt, mod Such- und Sortierprobleme (z.b. in AuD) Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 4

5 Klassifikation rekursiver Situationen Rekursive Definitionen umfassen i. d. R. mindestens 2 Fälle: Basisfall (Abbruch der Rekursion) Rekursionsschritt (rekursive Definition) Was ist was? 1 public static int fak(int n) { 2 if (n <= 1) { 3 return 1; 4 } 5 return n * fak(n - 1); 6 } Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 5

6 Vor- und Nachteile Vorteile: Mathematische Definition divide and conquer-prinzip Leichter lesbar und verständlicher für den Menschen Fehler bleiben lokal leichteres Debuggen Nachteile: Fehlendes Verständnis führt zur Endlosrekursion Auch bei korrekter Arbeitsweise kann ein Stack Overflow auftreten Horror für die CPU! Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 6

7 1. Beispiel Gegeben sei die folgende rekursive Methode: 1 static int f(int x, int y) { 2 if (x == 1) 3 return 3; 4 else if (y <= 4) 5 return 1; 6 else 7 return 3 * f(x - 2, y - 3) - 2 * f(x - 2, y); 8 } Welchen Wert liefert der Aufruf f(9,7)? In welcher Reihenfolge und mit welchen Parametern wird f dabei aufgerufen? Geben Sie die Reihenfolge der Aufrufe explizit an. Wie groß ist die maximale Rekursionstiefe, d. h. die maximale Anzahl gleichzeitig aktiver Aufrufe? Terminiert für alle x 0, y 0 der Aufruf f(x,y) mit der Rückgabe eines int-wertes? Begründen Sie Ihre Antwort Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 7

8 Lösung vom 1. Beispiel f (9, 7) f (7, 4) f (7, 7) 1 f (5, 4) f (5, 7) 1 f (3, 4) f (3, 7) 1 f (1, 4) f (1, 7) f (9, 7) = 15 und Rekursionstiefe ist 5 Terminiert die Rekursion immer? Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 8

9 2. Beispiel Gegeben sei die folgende rekursive Methode: 1 static int f(int x, int y) { 2 if (x <= 1) { 3 return 2; 4 } else if (y <= 0) { 5 return 1; 6 } else 7 return 2 * (f(x + 1, y - 3) - f(x - 3, y)) + 1; 8 } Welchen Wert liefert der Aufruf f(5,4)? In welcher Reihenfolge und mit welchen Parametern wird f dabei aufgerufen? Geben Sie die Reihenfolge der Aufrufe explizit an. Wie groß ist die maximale Rekursionstiefe, d. h. die maximale Anzahl gleichzeitig aktiver Aufrufe? Terminiert für alle x 0, y 0 der Aufruf f(x,y) mit der Rückgabe eines int-wertes? Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 9

10 Lösung vom 2. Beispiel Einleitung Rekursion Übung Objektorientierung OOP mit Java Vererbung Danke Weitere Beispiele Aufruf f (x, y) 1 f (5, 4) f (5, 4) 2 f (6, 1) 3 f (7, 2) f (6, 1) f (2, 4) 4 f (3, 1) 5 f (4, 2) 6 f (0, 1) f (7, 2) f (3, 1) f (3, 1) f ( 1, 4) 7 f (2, 4) 8 f (3, 1) 1 f (4, 2) f (0, 1) f (4, 2) f (0, 1) 2 9 f (4, 2) 10 f (0, 1) f ( 1, 4) f (5, 4) = 21 und Rekursionstiefe ist 4 Terminiert die Rekursion immer? Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 10

11 3. Beispiel Gegeben sei die folgende rekursive Methode: 1 static int f(int x, int y) { 2 if (x == 1) 3 return y - 1; 4 else 5 if (x == y) 6 return f(1, y); 7 else 8 return f(x % 2, f(x - 2, y + 1) + 2); 9 } Welchen Wert liefert der Aufruf f(11,5)? In welcher Reihenfolge und mit welchen Parametern wird f dabei aufgerufen? Geben Sie die Reihenfolge der Aufrufe explizit an. Wie groß ist die maximale Rekursionstiefe, d. h. die maximale Anzahl gleichzeitig aktiver Aufrufe? Terminiert für alle x 0, y 0 der Aufruf f(x,y) mit der Rückgabe eines int-wertes? Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 11

12 Lösung vom 3. Beispiel f (11, 5) Aufruf f (x, y) 1 f (11, 5) 2 f (9, 6) 3 f (7, 7) 4 f (1, 7) 5 f (1, 8) 6 f (1, 9) f (9, 6) f (7, 7) f (1, 8) f (1, 7) 7 f (1, 9) 8 6 f (11, 5) = 8 und Rekursionstiefe ist 4 (der Aufrufbaum ist leider nicht besser darstellbar) Terminiert die Rekursion immer? Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 12

13 Objektorientierung Spezifikation GUI mit Star Trek und Star Wars Symbolen Klick auf Symbol: Drehen um 360 Pro Symbol bestimmte Titelmelodie abspielen Zwei Programmierer: Larry (prozedural)und Brad (objektorientiert) Wer zuerst liefert, bekommt einen neuen Bürostuhl.

14 Die erste Version Larry überlegt sich: Was muss das Programm machen? rotate und playsound welche auf Formen reagieren rotate(shapenum) { //Rotiere Form um 360 Grad } playsound(shapenum) { // Prueft, welche Musik zum Symbol gehoert // Spiele Datei ab } Brad überlegt sich: Welche Dinge tauchen im Programm auf? Formen, welche etwas ausführen rotate und playsound class StarWars { rotate() { //Drehe ein Symbol } playsound() { //Spiele Musik fuer Star Wars ab } } class StarTrek { rotate() { //Drehe ein Symbol } playsound() { //Spiele Star Trek Melodie } }

15 Aber... Larry wird als erster fertig. Aber jetzt gibt es eine Änderung der Spezifikation: Erweiterung der Spezifikation Neues Symbol für Fans von The Expanse Sounddatei für The Expanse Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 15

16 Die zweite Version Larry passt die playsound an (+)Schnell (-)Muss getesteten Code ändern! (-)Unübersichtlich 1 playsound(shapenum) { 2 if (/*Form ist kein The Expanse Symbol*/) { 3 // Prueft, welche Musik zur Form gehoert 4 // Spiele Datei ab 5 } else { 6 //Spiele The Expanse Sounddatei ab 7 } 8 } Brad erstellt eine neue Klasse (+)Übersichtlich (+)Lokale Änderungen (-)Muss Code kopieren! (-)Langsam 1 class TheExpanse { 2 rotate() { 3 //Drehe The Expanse 4 } 5 playsound() { 6 //Spiele Musik fuer The Expanse ab 7 } 8 } Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 16

17 Der Projektmanager schlägt wieder zu Larry wird wieder als erster fertig. Aber es noch gibt eine Änderung der Spezifikation: Änderung der Spezifikation The Expanse Symbol soll sich nicht nur um Mittelpunkt, sondern um einen frei wählbaren Punkt drehen Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 17

18 Die dritte Version Larry muss die Definition ändern. (-)Anpassen jedes Aufrufs von rotate! (-)Führt schnell zu Fehlern (-)Unübersichtlich 1 rotate(int x, int y, Shape symbol) { 2 if (/*Form ist kein The Expanse Symbol*/) { 3 //Rotiere um Box -Mittelpunkt 4 } else { 5 //Werde groesser 6 } 7 } Brad passt die Klasse an. (+)Lokale Änderungen (+)Übersichtlich (+)Schnell 1 class TheExpanse { 2 int rotx; 3 int roty; 4 rotate() { 5 //Drehe Symbol um Punkt x, y 6 } 7 playsound() { 8 //Unveraendert 9 } 10 } Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 18

19 Der Trick mit der Vererbung Verursacht Brads OOP Ansatz doppelten Code zwischen den Methoden? Nicht unbedingt Auslagern gemeinsamer Eigenschaften in übergeordnete Klasse Vererbung

20 Noch ein Trick: Überschreiben Nun würden aber alle Formen gleich rotieren Das The Expanse Symbol würde das Verhalten der Elternklasse erben. Methoden können in Unterklassen geändert werden Überschreiben von Methoden

21 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen Einfacheres Ändern von Programmen Wiederverwendung von Programmteilen Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 21

22 Klassen in Java 1 ZugriffsBeschraenker class KlassenName { 2 // Attribute 3 // Methoden 4 } Eine Klasse mit public-zugriffsbeschränker pro.java-datei Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 22

23 Attribute in Java Attribute beschreiben die Daten, die jedes Objekt speichert Klasse gibt an, welche Attribute Objekte dieser Klasse haben Jedes Objekt verfügt über eine eigene Kopie dieser Attribute Änderungen an den Attributen eines Objektes wirken sich nur auf dieses Objekt aus Attribute sollen fast immer private sein. Werden fast wie lokale Variablen definiert. 1 ZugriffsBeschraenker class KlassenName { 2 Typ attributsname; 3 Typ attributsname = Initialisierungswert. 4 // Methoden 5 }

24 Methoden Methoden sind die Aktionen, die mit einem Objekt ausgeführt werden können Statische Methoden kennen wir schon Unterschied zu statischen Methoden: Sie arbeiten auf einzelnen Objekten 1 ZugriffsBeschraenker class KlassenName { 2 // Attribute 3 Zugriffsbeschraenker Rueckgabetyp name(t1 Paramter1,...) { 4 // Anweisungen 5 } 6 } Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 24

25 Zugriffsbeschränker Beschränker erlauben es Elemente nach außen hin zu versteckt. Dies erschwert unsachgemäße Verwendung von Objekten und erleichtert Kapselung. Beschränker Klasse Paket Unterklassen Rest public Y Y Y Y protected Y Y Y N keine Angabe Y Y N N private Y N N N Normalerweise reichen public und private Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 25

26 Beispiel: Counter Einleitung Rekursion Übung Objektorientierung OOP mit Java Vererbung Danke Weitere Beispiele 1 public class Counter { 2 private int count; 3 4 public void increase() { 5 count++; 6 } 7 8 public int getcount() { 9 return count; 10 } public void reset() { 13 count = 0; 14 } 15 } Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 26

27 Erzeugen von Objekten Wir können nun selber Klassen erstellen, wie werden diese nun verwendet? new erzeugt neue Objekte Syntax: new Klassenname(Konstruktorparameter) new gibt eine Referenz auf das neue Objekt zurück 1 Counter c = new Counter();

28 null Nullreferenz Variable von Referenztyp zeigt auf nichts Standardwert von Attributen mit Referenzdatentyp 1 Counter c = null; Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 28

29 Der. Operator Wir können jetzt neue Objekte erzeugen. Wie benutzt man nun ein Objekt? Der.-Operator kann auf eine Referenz angewendet werden, um auf die Attribute und Methoden des referenzierten Objektes zuzugreifen. Voraussetzung ist, dass der Zugriff erlaubt ist (Beschränker) Syntax: referenz.element 1 Counter c = new Counter(); 2 c.increase(); 3 c.increase(); 4 c.reset(); Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 29

30 Konstruktoren Oft müssen beim Erzeugen von Objekten Attribute initialisiert werden Vom Benutzer der Klasse zu verlangen, dass er die Attribute selber nach dem Erzeugen setzt, kann zu Fehlern führen Konstruktoren sind Methoden, die beim Erzeugen des Objektes aufgerufen werden. Kein Rückgabetyp, gleicher Name wie Klasse Falls keiner selber definiert: Default Konstruktor ohne Parameter Klassenname() wird automatisch erzeugt Konstruktoren werden nicht vererbt Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 30

31 Beispiel: Counter 1 public class Counter { 2 private int count; 3 public Counter() { 4 this(1); 5 } 6 public Counter(int start) { 7 count = start; 8 } 9 public void increase() { 10 count++; 11 } 12 public int getcount() { 13 return count; 14 } 15 public void reset() { 16 count = 0; 17 } 18 }

32 static static markiert Elemente von Klassen als statisch Wird normalerweise hinter dem Zugriffsbeschränker angegeben Für statische Attribute existiert nur eine einzige Kopie, die von allen Objektinstanzen dieser Klasse geteilt wird. Statische Methoden können ohne Objektinstanz genutzt werden, dürfen aber auch nur auf statische Elemente der Klasse zugreifen Nicht-statische Attribute existieren nur für Objektinstanzen, statische Methodenaufrufe operieren auf keinem Objekt Zugriff mit Klassenname.Element Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 32

33 Überladen von Methoden Mehrere Methoden in einer Klasse können denselben Namen haben Müssen sich in der Parameterliste unterscheiden (durch andere Typen, andere Anzahl von Parametern oder beidem) Rückgabetyp wird nicht zur Unterscheidung herangezogen Auswahl der passenden Methode geschieht zur Kompilierzeit Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 33

34 final final vor Attributen und lokalen Variablen verhindert das Ändern derer Werte Für Referenztypen heißt dies: Es kann nicht geändert werden, worauf die Referenz zeigt. Das referenzierte Objekt an sich ist jedoch noch veränderbar. final vor Klassen: Von der Klasse kann nicht geerbt werden final vor Methoden: Kein Überschreiben möglich 1 import java.util.*; 2 public class Fin { 3 public static final List <String > l = new ArrayList <>(); 4 public static int ANSWER = 42; 5 6 public static void main(string[] args) { 7 System.out.println(l); 8 // Geht nicht, da l final ist 9 //l = new ArrayList <String >(); 10 // Das referenzierte Objekt selbst kann geaendert werden 11 l.add("test"); 12 System.out.println(l); 13 } 14 } Fin.java

35 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält alle Attribute und Methoden der Elternklasse Syntax: class Kindsklasse extends Elternklasse... Objekte der Kindsklasse sind auch Objekte der Elternklasse Kindsklasse kann Methoden ändern (überschreiben), Zugriff auf Version der Elternklasse mit super Jede Klasse hat genau eine direkte Elternklasse, ohne Angabe Object

36 Ein schneller Counter 1 public class Counter { 2 private int count; 3 4 public Counter(int start) { 5 this.count = start; 6 } 7 8 protected setcount(int count) { 9 this.count = count; 10 } public void increase() { 13 count++; 14 } public int getcount() { 17 return count; 18 } public void reset() { 21 count = 0; 22 } 23 }

37 Ein schneller Counter Wichtig: Kindsklasse darf nicht auf private Elemente der Elternklasse zugreifen! Wichtig: Konstruktoren werden nicht vererbt! setcount ist protected, damit die Unterklasse, den Counter freier setzen kann Alternativ: Mehrfache Benutzung von increase der Elternklasse 1 public class FastCounter extends Counter { 2 3 public FastCounter(int start) { 4 super(start); 5 } 6 7 public void increase() { 8 setcount(getcount() + 2); 9 } 10 } 1 public void increase() { 2 super.increase(); 3 super.increase(); 4 }

38 Polymorphie Jedes Objekt einer Kindsklasse ist auch ein Objekt seiner Elternklassen. 1 Counter c = new FastCounter (0); Java löst Methodenaufrufe auf Objekte zur Laufzeit auf 1 c.increase(); // Ruft increase von FastCounter auf, obwohl c eine Counter -Referenz ist 2 System.out.println(c.getCount()); // <- 2 Es wird die Methode des Typs des referenzierten Objektes aufgerufen, nicht die vom Typ der Referenz! Das Objekt selbst weiß, wie es was tun muss

39 equals Alle Klassen erben von Object Object hat Methode public boolean equals(object o) Ohne Überschreiben wie == Kann in Unterklasse überschrieben werden, um wertmäßig zu vergleichen Da eine Referenz auf ein Object übergeben wird, muss man beim überschreiben auf zwei Sachen achten: null und den richtigen Typ obj instanceof Klasse gibt true zurück, wenn o nicht null ist und ein Objekt vom Typ der angegebenen Klasse ist Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 39

40 Abstrakte Klassen Klassen, von denen keine Objektinstanzen erzeugt werden können Baupläne für andere Klassen Sind mit abstract markiert. Können Methoden ohne Implementierung enthalten Diese Methoden müssen auch mit abstract markiert werden Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 40

41 Interfaces Interfaces geben an, über welche Methoden eine Klasse verfügt Implementierung kann mitgegeben werden (default seit Java 8). Eine Klasse kann beliebig viele Interfaces implementieren (im Vergleich zum Erben, maximal = 65535) Die Definition eines Interfaces wird mit interface eingeleitet. Klassen implementieren Interfaces mit implements. Interfaces sind Typen Gegen Interfacetyp programmieren Implementierungen einfach austauschbar Interfaces erben von Interfaces mit extends 1 ZugriffsBeschraenker interface KlassenName { 2 // Statische Konstanten (public, static, final sind implizit) 3 int ANSWER = 42; 4 // Abstrakte Methoden (abstract, public sind implizit) 5 void foo(); 6 } Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 41

42 Danke Vielen Dank für Ihre Aufmerksamkeit! Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 42

43 4. Beispiel Gegeben sei die folgende rekursive Methode: 1 static int f(int x, int y) { 2 if (y < 3) 3 return 2; 4 else if (x == 0) 5 return 3; 6 else 7 return 2 * (f(x - 2, y) - f(x - 3, y / 2)); 8 } Welchen Wert liefert der Aufruf f(10,3)? In welcher Reihenfolge und mit welchen Parametern wird f dabei aufgerufen? Geben Sie die Reihenfolge der Aufrufe explizit an. Wie groß ist die maximale Rekursionstiefe, d. h. die maximale Anzahl gleichzeitig aktiver Aufrufe? Terminiert für alle x 0, y 0 der Aufruf f(x,y) mit der Rückgabe eines int-wertes? Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 43

44 5. Beispiel Gegeben sei die folgende rekursive Methode: 1 static int f(int x, int y) { 2 if (y >= 4) 3 return 1; 4 else if (x <= 1) 5 return 2; 6 else 7 return 3 * f(x - 2, y + 1) - f(x, y + 1); 8 } Welchen Wert liefert der Aufruf f(3,-1)? In welcher Reihenfolge und mit welchen Parametern wird f dabei aufgerufen? Geben Sie die Reihenfolge der Aufrufe explizit an. Wie groß ist die maximale Rekursionstiefe, d. h. die maximale Anzahl gleichzeitig aktiver Aufrufe? Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 44

45 Lösung vom 4. Beispiel Aufruf f (x, y) 1 f (10, 3) 2 f (8, 3) 3 f (6, 3) 4 f (4, 3) 5 f (2, 3) 6 f (0, 3) 7 f ( 1, 1) 8 f (1, 1) 9 f (3, 1) 10 f (5, 1) 11 f (7, 1) f (0, 3) f (2, 3) f (4, 3) f ( 1, 1) 3 2 f (10, 3) = 28 und Rekursionstiefe ist 6 Terminiert die Rekursion immer? f (6, 3) f (1, 1) 2 f (8, 3) f (3, 1) 2 f (10, 3) f (5, 1) 2 f (7, 1) 2

46 Lösung vom 5. Beispiel Aufruf f (x, y) 1 f (3, 1) 2 f (1, 0) 3 f (3, 0) 4 f (1, 1) 5 f (3, 1) 6 f (1, 2) 7 f (3, 2) 8 f (1, 3) 9 f (3, 3) 10 f (1, 4) 11 f (3, 4) f (1, 0) f (3, 1) f (1, 1) f (3, 1) = 2 und Rekursionstiefe ist 6 Terminiert die Rekursion immer? 2 2 f (3, 0) f (1, 2) 2 f (3, 1) f (3, 2) f (1, 3) f (3, 3) 2 f (1, 4) 1 f (3, 4) 1

47 Horror für die CPU Bei jedem Aufruf Erstellen einen Stackframes auf dem Stack Kopieren des Parameters Retten von Registern (Kleine Zwischenspeicher in der CPU) Bei jedem Return Schreiben des Rückgabewertes Wiederherstellen der Register Rekursion ist langsam! fak(1) fak(2) fak(3) fak(4) fak(5) main() Aber: Compiler versuchen Rekursionen in Schleifen zu transformieren. Jedoch ist dies nur bei µ Rekursion möglich! Dr. Werner Struckmann / Maximilian von Unwerth Vorkurs Informatik SoSe18 Seite 47

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Institut für Programmierung Java Objektorientierte Programmierung Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12 bis 14.10.2016 Technische Universität Braunschweig, IPS Überblick Warum OOP? OOP

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Institut für Programmierung Java Objektorientierte Programmierung Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 11. bis 13.10.2017 Technische Universität Braunschweig, IPS Warum OOP? OOP mit Java

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

Mehr

Java Grundlagen 2 - OOP

Java Grundlagen 2 - OOP Institut für Programmierung und Reaktive Systeme Java Grundlagen 2 - OOP Markus Reschke 20.08.2014 Eine kleine Geschichte 1 Spezifikation Es sollen Formen in einer GUI angezeigt werden: Ein Quadrat, ein

Mehr

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 10.10.2017 Technische Universität Braunschweig, IPS Überblick Einleitung Türme von Hanoi Rekursion Beispiele 10.10.2017 Dr. Werner Struckmann

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Institut für Programmierung und Reaktive Systeme Vorkurs Informatik WiSe 15/16 Java 5 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Überblick

Mehr

Programmierung Nachklausurtutorium

Programmierung Nachklausurtutorium Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel

Mehr

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März

Mehr

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

Mehr

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 1 für Nebenfachstudierende Grundmodul Java Methoden Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel 3 - Java

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

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

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 6. März 2013 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

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

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

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

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

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

Fragen zur OOP in Java

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

Mehr

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

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. Januar 2018 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 17. Februar

Mehr

Implementieren von Klassen

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

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Einführung in das Programmieren Probeklausur Lösungen

Einführung in das Programmieren Probeklausur Lösungen Einführung in das Programmieren Probeklausur Lösungen Frederik Kanning 01.07.2013 Aufgabe 1 b/c) void definiert Methode ohne Rückgabewert return beendet aktuellen Methodenaufruf wenn Rückgabetyp nicht

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

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

Die abstrakte Klasse Expression:

Die abstrakte Klasse Expression: Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die

Mehr

Vererbung und Polymorphie

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

Mehr

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

Propädeutikum Programmierung in der Bioinformatik

Propädeutikum Programmierung in der Bioinformatik Propädeutikum Programmierung in der Bioinformatik Java Klassen und Objekte Thomas Mauermeier 27.11.2018 Ludwig-Maximilians-Universität München Rückblick Imperative Programmierung Variablen Fallunterscheidungen

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

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

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Virtuelle Methodentabellen Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 9. Juli 2015 Struktur der Objektorientierung Ein wenig Java: public

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf

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

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

Tafelübung 07 Algorithmen und Datenstrukturen

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

Mehr

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

Fakultät IV Elektrotechnik/Informatik

Fakultät IV Elektrotechnik/Informatik 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

Das Interface-Konzept am Beispiel der Sprache Java

Das Interface-Konzept am Beispiel der Sprache Java Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse

Mehr

Polymorphie. 15. Java Objektorientierung II

Polymorphie. 15. Java Objektorientierung II 432 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 433 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen

Mehr

Polymorphie. 15. Java Objektorientierung II

Polymorphie. 15. Java Objektorientierung II 446 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 447 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen

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

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017 Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2016/2017 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 8. September 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

Mehr

6 Speicherorganisation

6 Speicherorganisation 6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Programmieren in Java

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

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

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017 Mapra: C++ Teil 6 Felix Gruber, Sven Groß IGPM, RWTH Aachen 13. Juni 2017 Felix Gruber, Sven Groß (IGPM, RWTH Aachen) Mapra: C++ Teil 6 13. Juni 2017 1 / 22 Was bisher geschah Klassen I Attribute und Methoden

Mehr

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

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

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

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018 Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2017/2018 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung

Mehr

JAVA 05: Objektorientierte Konzepte

JAVA 05: Objektorientierte Konzepte Lernkartenkurs JAVA 05: Objektorientierte Konzepte panitz Zusammenfassung Dieser Kurs beschäftigt sich mit Grundkonzepten der objektorientierten Programmierung. Was sind Klassen und Objekte? Wie sehen

Mehr

II.4.5 Generische Datentypen - 1 -

II.4.5 Generische Datentypen - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 9. Dezember 2015 Wiederholung Referenzdatentypen reference [0] M datatype

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

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

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E. Objekte und Klassen INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? typedef struct Konto { double saldo; int id; Konto; Modul "konto" konto.h konto.c Prozedurale Programmierung:

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

Objektorientierte Programmierung III

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

Mehr

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

Abstrakte Basisklassen

Abstrakte Basisklassen Softwareentwicklung II (IB) Abstrakte Basisklassen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 24.06.2018 15:20 Inhaltsverzeichnis Idee.........................................

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

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/

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

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

Erste Java-Programme (Java Wiederholung & Vererbung)

Erste Java-Programme (Java Wiederholung & Vererbung) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Java Wiederholung & ) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

2. Unterprogramme und Methoden

2. Unterprogramme und Methoden 2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf

Mehr

Programmieren 1 08 Objekte und Interfaces

Programmieren 1 08 Objekte und Interfaces Programmieren 1 08 Objekte und Interfaces Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Objektorientierung: Von Static zu Instance Klasse

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

Informatik II Übung 6

Informatik II Übung 6 Informatik II Übung 6 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 11.4.2018 Carina Fuss 11.4.2018 1 Übung 6 Nachbesprechung Übung 5 Objektorientierung Vererbung, Polymorphie, abstrakte Klassen, Interfaces,

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 12. März 2014 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition

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

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

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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 14.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung 14.1.08 1 / 11 Übersicht 1

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

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

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 14: Interfaces 14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/

Mehr

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration

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

II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.4.2 Abstrakte Klassen und Interfaces - 1 - 1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.2 Abstrakte Klassen und Interfaces - 1

Mehr