aboutsummaryrefslogtreecommitdiff
path: root/Info/9/3/SpaceInvaders/slides.md
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-07-12 11:29:32 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-07-12 11:29:32 +0200
commit48ac3a27151eda2f96a52474065e48ff5a19df57 (patch)
tree0381f2850402d96f3bf444d7641017d9aa3deaa5 /Info/9/3/SpaceInvaders/slides.md
parentaacdb7f8abd6ab3de8df255d155ab9684a932ec3 (diff)
downloadunterricht-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.md157
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
-![](img/space-invaders.png){.center}
+\vspace{-0.5cm}
+![](img/space-invaders.png){.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**