diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2024-07-12 11:29:32 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2024-07-12 11:29:32 +0200 |
| commit | 48ac3a27151eda2f96a52474065e48ff5a19df57 (patch) | |
| tree | 0381f2850402d96f3bf444d7641017d9aa3deaa5 /Info/9/3/SpaceInvaders/slides.md | |
| parent | aacdb7f8abd6ab3de8df255d155ab9684a932ec3 (diff) | |
| download | unterricht-48ac3a27151eda2f96a52474065e48ff5a19df57.tar.gz unterricht-48ac3a27151eda2f96a52474065e48ff5a19df57.zip | |
improve SpaceInvaderrs material
Diffstat (limited to 'Info/9/3/SpaceInvaders/slides.md')
| -rw-r--r-- | Info/9/3/SpaceInvaders/slides.md | 157 |
1 files changed, 154 insertions, 3 deletions
diff --git a/Info/9/3/SpaceInvaders/slides.md b/Info/9/3/SpaceInvaders/slides.md index 2ebe9bff..b6eb5141 100644 --- a/Info/9/3/SpaceInvaders/slides.md +++ b/Info/9/3/SpaceInvaders/slides.md @@ -7,7 +7,8 @@ header-includes: | ## Ziel -{.center} +\vspace{-0.5cm} +{.center height=95%} ## \faIcon{pencil-alt} Arbeitsauftrag - Modellierung 10 min {.standout} @@ -111,7 +112,7 @@ Startet einen **EVA**-Loop und ruft während dem `Update`-Schritt die `act`-Meth ## \faIcon{desktop} Arbeitsauftrag - Implementiere die Klasse Raumschiff * Kopiere das Greenfoot-Projekt **SpaceInvaders** aus dem Vorlagen-Laufwerk und öffne es in Greenfoot. -* Bearbeite den Arbeitsauftrag **SpaceInvaders AA 1.pdf** +* Bearbeite den Arbeitsauftrag **SpaceInvaders Arbeitsauftrag1.pdf** ## \faIcon{chalkboard} Raumschiff & Alien {.standout} @@ -224,6 +225,7 @@ public Raumschiff () { // Konstruktor \pause $\Rightarrow$ Wir können dem Konstruktor Parameter übergeben. +\vspace{0.5cm} ::: {.columns align=center} :::: {.column width=40%} \pause @@ -248,7 +250,7 @@ $\Rightarrow$ Wir können dem Konstruktor Parameter übergeben. ## \faIcon{desktop} Arbeitsauftrag - Erzeuge neue Aliens 20min \centering -Bearbeite den Arbeitsauftrag **SpaceInvaders AA 2.pdf** +Bearbeite den Arbeitsauftrag **SpaceInvaders Arbeitsauftrag2.pdf** ## Methoden aufrufen @@ -271,3 +273,152 @@ anderesObject.bewegen(); \centering Bearbeite den Arbeitsauftrag **SpaceInvaders AA 2.pdf** + +## \faIcon{desktop} Arbeitsauftrag - Schiessen Schiessen Schiessen 15min + +\centering +Bearbeite den Arbeitsauftrag **SpaceInvaders AA 2.pdf** + +## Eine eigene Klasse für die Schüsse der Aliens + +Die Klasse `Lazer`, soll die Schüsse der Aliens implementieren. + +### Warum? +* Ein anderes Bild um die Schüsse zu unterscheiden. +* Einfacher um später zu erkennen wer von was getroffen wurde. + +\pause +\faIcon{lightbulb} Überlegt euch wie ihr die Klasse `Lazer` implementieren würdet. + +## Zweimal der gleiche Code + +::: {.columns} +:::: {.column width=50%} +```java +pubic class Laser { + int geschwindigkeit = 6; + public void bewegen() { + setLocation(getX(), + getY() - geschwindigkeit); + } +} +``` +:::: + +:::: {.column width=50%} +```java +pubic class Lazer { + int geschwindigkeit = 5; + public void bewegen() { + setLocation(getX(), + getY() + geschwindigkeit); + } +} +``` +:::: +::: + +\pause +**Geht dass 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]{Laser}{0, 0} +\attribute{geschwindigkeit} +\operation{act()} +\end{class} + +\begin{class}[text width=4cm]{Lazer}{7, 0} +\attribute{geschwindigkeit} +\operation{act()} +\end{class} +\end{tikzpicture} + +Gemeinsamkeiten mehreren Klassen in eine Oberklasse *auszulagern* nennt man \boldred{Generalisierung}. + +\pause + +\begin{tikzpicture} +\begin{class}[text width=4cm]{Projektil}{0, 2} +\attribute{geschwindigkeit} +\operation{act()} +\end{class} + +\begin{class}[text width=4cm]{Lazer}{7, 0} +\inherit{Projektil} +\end{class} + +\begin{class}[text width=4cm]{Laser}{7, 2} +\inherit{Projektil} +\end{class} +\end{tikzpicture} + +## Arbeitsauftrag - Rest der Stunde + +\centering +Bearbeite den Arbeitsauftrag **SpaceInvaders Arbeitsauftrag3.pdf** |
