Add termin1
This commit is contained in:
78
polymorphie.md
Normal file
78
polymorphie.md
Normal file
@ -0,0 +1,78 @@
|
||||
<!--
|
||||
title: Polymorphie und Vererbung
|
||||
description: Folien für Polymorphie und Vererbung in Programmieren 2
|
||||
url: https://git.haw-hamburg.de/pm2-tutorium/slides
|
||||
header: Programmieren 2 **Tutorium**
|
||||
footer: Henri Burau
|
||||
-->
|
||||
|
||||
# Polymorphie und Vererbung
|
||||
|
||||
---
|
||||
|
||||
# Typ und Implementation
|
||||
Der **Typ** ist die Außenansicht auf einen Dienstleister.
|
||||
- Welche Operationen gibt es?
|
||||
- Wie rufe ich diese auf?
|
||||
|
||||
Die **Implementation** ist die Innenansicht auf einen Dienstleister.
|
||||
- Wie wird eine Operation umgesetzt?
|
||||
- Welche Felder habe ich?
|
||||
|
||||
---
|
||||
# Klassen und Interfaces
|
||||
|
||||
**Klassen** haben immer eine Doppelrolle, da sie sowohl einen Typ als auch eine Implementation definieren.
|
||||
**Interfaces** sollten immer nur einen Typ definieren.
|
||||
|
||||
---
|
||||
|
||||
# Vererbung
|
||||
Weitergeben von bereits geschriebenen Code an Subklassen. Sinnvoll
|
||||
auch zum Aufstellen einer Vererbungshierarchie.
|
||||
|
||||
---
|
||||
|
||||
## Deklaration
|
||||
|
||||
```java
|
||||
class Shape {
|
||||
public String toString() {
|
||||
return "Shape";
|
||||
}
|
||||
}
|
||||
|
||||
class Rectangle extends Shape {
|
||||
public String toString() {
|
||||
return "Rectangle";
|
||||
}
|
||||
}
|
||||
|
||||
class Circle extends Shape {
|
||||
public String toString() {
|
||||
return "Circle";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Benutzung
|
||||
|
||||
```java
|
||||
// In main...
|
||||
Shape shape = new Shape();
|
||||
Rectangle rectangle = new Rectangle();
|
||||
shape.toString();
|
||||
rectangle.toString();
|
||||
shape = rectangle;
|
||||
shape.toString();
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Aufgaben
|
||||
* Schreibe eine Klasse `Cow`, welche dieselben Methoden hat wie ein `Sheep`
|
||||
* Ergänze `Cow` und `Sheep` um eine Methode `String makeNoise()`, ein `Schaf` soll `"Mäh"` zurückgeben, eine `Cow` `"Muh"`.
|
||||
* Schreibe nun eine Klasse `Animal`. Von dieser Klasse sollen `Sheep` und `Cow` erben. Alle Methoden die bei `Sheep` und `Cow` genau gleich sind, sollen nun in die Superklasse `Animal` verschoben werden.
|
||||
|
||||
Reference in New Issue
Block a user