diff options
| m--------- | Info/9/3/Rennbahn/project | 0 | ||||
| -rw-r--r-- | Info/9/3/Rennbahn/slides.md | 155 |
2 files changed, 154 insertions, 1 deletions
diff --git a/Info/9/3/Rennbahn/project b/Info/9/3/Rennbahn/project -Subproject 82b3b239c06a86e94032fc10bf163ff715a9f3f +Subproject 98e6ac06b03dd2d595a9b7ae0a87e9af45f0e68 diff --git a/Info/9/3/Rennbahn/slides.md b/Info/9/3/Rennbahn/slides.md index 443773fe..e92cb150 100644 --- a/Info/9/3/Rennbahn/slides.md +++ b/Info/9/3/Rennbahn/slides.md @@ -193,4 +193,157 @@ public class Auto { * Ergänze den Konstruktor der Klasse `Auto`: * die Geschwindigkeit soll angegeben werden können * die Farbe soll angegeben werden können \vspace{0.5cm} -* **Für Schnelle:** Implementiere eine neue Klasse `Bus` als Unterklasse von `Actor` mit Geschwindigkeit 1. +* **Für Schnelle:** Implementiere eine neue Klasse `Bus` als Unterklasse von `Actor` mit Geschwindigkeit 3. + + +<!-- ## Methoden aufrufen --> + +<!-- ### Was wir bereits können: --> + +<!-- Methoden des eigenen Objekts aufrufen. --> + +<!-- `bewegen(); // Ruft die Methode bewegen auf dem Objekt selbst auf`{.java} --> + +<!-- ### Was wir neues brauchen: --> + +<!-- Methoden anderer Objekte aufrufen. --> + +<!-- ```java --> + <!-- // Ruft die Methode bewegen auf anderesObject auf --> +<!-- anderesObject.bewegen(); --> +<!-- ``` --> + +## Zweimal der gleiche Code? + +::: {.columns} +:::: {.column width=50%} +```java +pubic class Rakete { + int geschwindigkeit = 20; + public void bewegen() { + setLocation(getX(), + getY() - geschwindigkeit); + } +} +``` +:::: + +:::: {.column width=50%} +```java +pubic class Bus { + int geschwindigkeit = 3; + public void bewegen() { + setLocation(getX(), + getY() + geschwindigkeit); + } +} +``` +:::: +::: + +\pause +**Geht das nicht besser?** + +## \faIcon{pencil-alt} Vererbung + +Eine Klasse kann [alle]{.underline} Attribute und Methoden einer anderen Klasse \boldred{erben}. + +\pause +\begin{tikzpicture} +\begin{class}[text width=4cm]{Oberklasse}{0, 0} +\end{class} + +\begin{class}[text width=4cm]{Unterklasse}{7, 0} +\inherit{Oberklasse} +\end{class} +\end{tikzpicture} + +\pause +Man spricht: Die *Unterklasse* erbt von der *Oberklasse*. + +\pause +### Beispiel +\begin{tikzpicture} +\begin{class}[text width=4cm]{Fahrzeug}{0, 0} +\end{class} + +\begin{class}[text width=4cm]{Auto}{7, 0} +\inherit{Fahrzeug} +\end{class} +\end{tikzpicture} + +*Ein Auto **erbt** von Fahrzeug* bzw. *ein Auto **ist** ein Fahrzeug*. + +## \faIcon{pencil-alt} Vererbung in Java + +Um eine Vererbung auszudrücken wird in der Klassendefinition der **Unterklasse** `extends Oberklasse`{.java} ergänzt. + +Methoden und Attribute der Oberklasse können in der Unterklasse verwendet werden, als ob sie dort definiert sind. + +::: {.columns} +:::: {.column width=20%} +```java +class Oberklasse { + int zahl; + + Oberklasse() { + zahl = 13; + } +} +``` +:::: + +:::: {.column width=60%} +```java +class Unterklasse extends Oberklasse { + // zahl ist bereits in Oberklasse definiert + Unterklasse() { + // Aufruf des Konstruktors der Oberklasse + super(); + zahl = 12; + } +} +``` +:::: +::: + + +## Vererbung - Generalisierung + +\begin{tikzpicture} +\begin{class}[text width=4cm]{Rakete}{0, 0} +\attribute{geschwindigkeit} +\operation{bewegen()} +\end{class} + +\begin{class}[text width=4cm]{Bus}{7, 0} +\attribute{geschwindigkeit} +\operation{bewegen()} +\end{class} +\end{tikzpicture} + +Gemeinsamkeiten mehreren Klassen in eine Oberklasse *auszulagern* nennt man \boldred{Generalisierung}. + +\pause + +\begin{tikzpicture} +\begin{class}[text width=4cm]{Fahrzeug}{0, 2} +\attribute{geschwindigkeit} +\operation{bewegen()} +\end{class} + +\begin{class}[text width=4cm]{Rakete}{7, 0} +\inherit{Fahrzeug} +\end{class} + +\begin{class}[text width=4cm]{Bus}{7, 2} +\inherit{Fahrzeug} +\end{class} +\end{tikzpicture} + +## \faIcon{desktop} Arbeitsauftrag - Rest der Stunde {.standout} + +\centering +Tobt euch aus! +Lasst Autos explodieren! +Baut einen zweiten Spieler ein ... |
