aboutsummaryrefslogtreecommitdiff
path: root/Info/9
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-07-13 12:17:28 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-07-13 12:18:03 +0200
commitdee46ae2bf06373def1d7e0d0a8375198089efdb (patch)
tree44d7ffc9d2fe39ba6caaed3befecb70dc3a1df8d /Info/9
parentf381cd2c7414e218db5d676cf6d6669e1853c258 (diff)
downloadunterricht-dee46ae2bf06373def1d7e0d0a8375198089efdb.tar.gz
unterricht-dee46ae2bf06373def1d7e0d0a8375198089efdb.zip
move rennbahn material from lesson to dedicated rennbahn dir
Diffstat (limited to 'Info/9')
-rw-r--r--Info/9/3/Rennbahn/.gitignore1
-rw-r--r--Info/9/3/Rennbahn/img/rennbahn.jpgbin0 -> 13705 bytes
-rw-r--r--Info/9/3/Rennbahn/modellierung_handout.tex58
-rw-r--r--Info/9/3/Rennbahn/slides.md196
4 files changed, 255 insertions, 0 deletions
diff --git a/Info/9/3/Rennbahn/.gitignore b/Info/9/3/Rennbahn/.gitignore
new file mode 100644
index 00000000..d9c38090
--- /dev/null
+++ b/Info/9/3/Rennbahn/.gitignore
@@ -0,0 +1 @@
+*modellierung_handout.pdf
diff --git a/Info/9/3/Rennbahn/img/rennbahn.jpg b/Info/9/3/Rennbahn/img/rennbahn.jpg
new file mode 100644
index 00000000..37e253c8
--- /dev/null
+++ b/Info/9/3/Rennbahn/img/rennbahn.jpg
Binary files differ
diff --git a/Info/9/3/Rennbahn/modellierung_handout.tex b/Info/9/3/Rennbahn/modellierung_handout.tex
new file mode 100644
index 00000000..2a27f6ed
--- /dev/null
+++ b/Info/9/3/Rennbahn/modellierung_handout.tex
@@ -0,0 +1,58 @@
+\documentclass[a5paper]{handout}
+\csname endofdump\endcsname
+\usepackage{minted}
+
+\title{Von der Klassenkarte zum Code}
+
+\begin{document}
+\thispagestyle{empty}
+\makedate
+
+\begin{defbox}{Klassenkarte $\Rightarrow$ Code}
+\iftoggle{lehrerversion}{\iftrue}{\iffalse}
+\begin{tabular}{p{0.5\textwidth} p{0.5\textwidth}}
+\vspace{0.1cm}
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Auto}{0, 0}
+\attribute{geschwindigkeit}
+\attribute{farbe}
+\operation{fahren()}
+\end{class}
+
+\draw[->] (Auto) edge[above, red] node {1.} ($(Auto.north east) + (1, 0)$);
+\draw[->] (Auto) edge[above, blue] node {2.} ($(Auto.east) + (1, 0)$);
+\draw[->] (Auto) edge[above, teal] node {3.} ($(Auto.south east) + (1, 0)$);
+\end{tikzpicture}
+&
+\vspace{-0.25cm}
+\begin{minted}[]{java}
+public class Auto
+{
+ int geschwindigkeit;
+ String farbe;
+
+ public void fahren() {
+ ...
+ }
+}
+\end{minted}
+\\
+\end{tabular}
+\else
+\vspace{7cm}
+\fi
+\end{defbox}
+
+\section*{Schritte}
+\begin{enumerate}[itemsep=0.2cm]
+\item \textcolor{red}{Klasse} mithilfe des \gap{{\Huge Klassennamen}} definieren.
+\item \textcolor{blue}{Attribute} mit geeigneten \gap{{\Huge Datentypen}} deklarieren.
+\vspace{0.3cm}
+\item \textcolor{teal}{Methoden} mit geeignetem \iflehrer{{\Huge Rückgabetyp und Parametern}}{\ruletoend{0.1pt} \\}
+ definieren.
+\end{enumerate}
+
+\subsection*{Hinweis \faIcon{lightbulb}}
+Attribute sind wie Variablen mit dem Unterschied, dass sie innerhalb eines Objekts gültig sind.
+Das bedeutet Attribute können, ohne neu deklariert werden zu müssen, in mehreren Methoden verwendet werden.
+\end{document}
diff --git a/Info/9/3/Rennbahn/slides.md b/Info/9/3/Rennbahn/slides.md
new file mode 100644
index 00000000..443773fe
--- /dev/null
+++ b/Info/9/3/Rennbahn/slides.md
@@ -0,0 +1,196 @@
+---
+header-includes: |
+ \makeatletter
+ \beamer@ignorenonframefalse
+ \makeatother
+---
+
+## Rennbahn
+\vspace{-0.75cm}
+![](img/rennbahn.jpg){.center}
+
+## \faIcon{pencil-alt} Arbeitsauftrag - Modellierung 5 min {.standout}
+
+Erstelle eine Klassendiagramm (mehrere Klassenkarten) zu allen Klassen, die du beim Rennen entdecken kannst.
+
+## Greenfoot und die geheimnisvollen Knöpfe
+
+![](greenfoot_buttons.png){.center}
+
+### Act
+
+Ruft die `act`-Methode jedes Actors [einmal]{.underline} auf.
+
+### Run
+
+Startet eine Wiederholug und ruft in jedem Schritt die `act`-Methode jedes Actors auf.
+
+## Von der Klassenkarte zum Code
+
+::: {.columns align=center}
+:::: {.column width=30%}
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Auto}{0, 0}
+\attribute{geschwindigkeit}
+\attribute{farbe}
+\operation{bewegen()}
+\end{class}
+\only<1>{
+\draw[->, opacity=0] (Auto) edge[above, red] node {1.} ($(Auto.north east) + (1, 2)$);
+}
+\only<2->{
+\draw[->] (Auto) edge[above, red] node[] {1.} ($(Auto.north east) + (1, 2)$);
+}
+\only<3->{
+\draw[] ($(Auto.east) + (0, 0.5)$) edge[->, left, blue] node[] {2.} ($(Auto.east) + (1, 1.5)$);
+}
+\only<4->{
+\draw[] ($(Auto.south east) + (0, 0.5)$) edge[->, above, teal] node {3.} ($(Auto.south east) + (1, 1)$);
+}
+\end{tikzpicture}
+::::
+
+:::: {.column width=60%}
+```java
+public class Auto { // Klassendefinition
+ // Attribute
+ int geschwindigkeit;
+ String farbe;
+
+ // Methoden
+ public void bewegen() {
+ ...
+ }
+}
+```
+::::
+:::
+
+## Von der Klasse zum Objekt
+
+::: {.columns align=center}
+:::: {.column width=45%}
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Auto}{0, 0}
+\attribute{geschwindigkeit}
+\attribute{farbe}
+\operation{bewegen()}
+\end{class}
+\end{tikzpicture}
+::::
+
+:::: {.column width=5%}
+\Large $\Rightarrow$
+::::
+
+:::: {.column width=45%}
+\pause
+\begin{tikzpicture}
+\begin{object}[text width=4cm]{a1: Auto}{0, 0}
+\attribute{geschwindigkeit = 2}
+\attribute{farbe = "blau"}
+\end{object}
+\end{tikzpicture}
+::::
+:::
+
+\vspace{1cm}
+\pause
+### \faIcon{lightbulb} Wo kommen die Attributwerte her?
+
+\pause
+Sie müssen beim Erzeugen eines Objekts angegeben werden.
+
+## Objekte erzeugen
+
+Objekte einer Klasse werden mit dem Schlüsselwort `new`{.java} erzeugt.
+
+\pause
+### \faIcon{pencil-alt} [Der Konstruktor]{.underline}
+
+>- **Methode** der Klasse, die beim Erzeugen ein neues Objekt aufgerufen wird.
+>- Heißt immer wie die Klasse.
+>- Hat [keine]{.underline} Angabe eines Rückgabetyps.
+
+\pause
+::: {.columns}
+:::: {.column width=35%}
+\vspace{0.5cm}
+\begin{tikzpicture}
+\begin{class}[text width=4cm]{Auto}{0, 0}
+\attribute{geschwindigkeit}
+\attribute{farbe}
+\operation{...}
+\end{class}
+\end{tikzpicture}
+::::
+
+:::: {.column width=65%}
+```java
+public class Auto {
+int geschwindigkeit; // Attribute
+int farbe;
+public Auto() { // Konstruktor
+ geschwindigkeit = 2;
+ farbe = "blau";
+}
+```
+::::
+:::
+
+## \faIcon{desktop} Arbeitsauftrag - Implementiere den Konstruktor der Klasse Auto 10 min
+
+\large
+* Kopiere das Greenfoot-Projekt **Rennbahn** aus dem Vorlagen-Laufwerk und öffne es in Greenfoot.
+* Ergänze den **Konstruktor** der Klasse `Auto`
+ * Der Konstruktor soll die `geschwindigkeit` auf 2 initialisieren
+* **Für Schnelle**:
+ Erzeuge ein Auto und eine Rakete im Konstruktor der Klasse `Rennbahn`.
+ Positioniere das Auto an Position $(90 | 700)$ und die Rakete an Position $(220 | 700)$ (`addObject(object, x, y)`{.java}).
+
+## \faIcon{pencil-alt} Konstruktor \only<2->{mit Parametern}
+
+### \faIcon{lightbulb} Was wenn die Attributwerte nicht immer gleich sein sollen?
+
+\pause
+$\Rightarrow$ Der Konstruktor ist eine [Methode]{.underline}, der wir \boldred{Parameter} übergeben können.
+
+\vspace{0.5cm}
+::: {.columns align=center}
+:::: {.column width=40%}
+\pause
+`new Auto(5, "gruen");`{.java}
+::::
+
+:::: {.column width=5%}
+\Large $\Rightarrow$
+::::
+
+:::: {.column width=45%}
+\pause
+\begin{tikzpicture}
+\begin{object}[text width=4cm]{a1: Auto}{0, 0}
+\attribute{geschwindigkeit = 5}
+\attribute{farbe = "gruen"}
+\end{object}
+\end{tikzpicture}
+::::
+:::
+
+\pause
+```java
+public class Auto {
+ public Auto(PARAMETER) {
+ geschwindigkeit = ...;
+ farbe = ...;
+ }
+...
+```
+
+## \faIcon{desktop} Arbeitsauftrag - `Auto` **Konstruktor** mit Parametern
+
+\large
+* 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.