From dee46ae2bf06373def1d7e0d0a8375198089efdb Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sat, 13 Jul 2024 12:17:28 +0200 Subject: move rennbahn material from lesson to dedicated rennbahn dir --- Info/23_24/07/09/9B/img/greenfoot_buttons.png | 1 - Info/23_24/07/09/9B/img/rennbahn.png | Bin 14491 -> 0 bytes Info/23_24/07/09/9B/slides.md | 175 ----------------------- Info/23_24/07/09/9B/topic | 1 + Info/9/3/Rennbahn/.gitignore | 1 + Info/9/3/Rennbahn/img/rennbahn.jpg | Bin 0 -> 13705 bytes Info/9/3/Rennbahn/modellierung_handout.tex | 58 ++++++++ Info/9/3/Rennbahn/slides.md | 196 ++++++++++++++++++++++++++ 8 files changed, 256 insertions(+), 176 deletions(-) delete mode 120000 Info/23_24/07/09/9B/img/greenfoot_buttons.png delete mode 100644 Info/23_24/07/09/9B/img/rennbahn.png delete mode 100644 Info/23_24/07/09/9B/slides.md create mode 120000 Info/23_24/07/09/9B/topic create mode 100644 Info/9/3/Rennbahn/.gitignore create mode 100644 Info/9/3/Rennbahn/img/rennbahn.jpg create mode 100644 Info/9/3/Rennbahn/modellierung_handout.tex create mode 100644 Info/9/3/Rennbahn/slides.md diff --git a/Info/23_24/07/09/9B/img/greenfoot_buttons.png b/Info/23_24/07/09/9B/img/greenfoot_buttons.png deleted file mode 120000 index a1c2dfa2..00000000 --- a/Info/23_24/07/09/9B/img/greenfoot_buttons.png +++ /dev/null @@ -1 +0,0 @@ -../../../../../9/3/SpaceInvaders/img/greenfoot_buttons.png \ No newline at end of file diff --git a/Info/23_24/07/09/9B/img/rennbahn.png b/Info/23_24/07/09/9B/img/rennbahn.png deleted file mode 100644 index 95c7c7ef..00000000 Binary files a/Info/23_24/07/09/9B/img/rennbahn.png and /dev/null differ diff --git a/Info/23_24/07/09/9B/slides.md b/Info/23_24/07/09/9B/slides.md deleted file mode 100644 index d20f010e..00000000 --- a/Info/23_24/07/09/9B/slides.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -header-includes: | - \makeatletter - \beamer@ignorenonframefalse - \makeatother ---- - -## Rennbahn -\vspace{-0.75cm} -![](img/rennbahn.png){.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 - -![](img/greenfoot_buttons.png){.center} - -### Act - -Ruft die `act`-Methode jedes Actors [einmal]{.underline} auf. - -### Run - -Startet eine Wiederholug und ruft während 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} -\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 -* **Fuer Schnelle**: - Erzeuge ein Auto und eine Rakete im Konstruktor der Klasse `Rennbahn`. - Positioniere das Auto (`addObject(object, x, y)`{.java}) an Position $(90 | 700)$. - Positioniere die Rakete an Position $(220 | 700)$. - -## \faIcon{pencil-alt} Konstruktor \only<2->{mit Parametern} - -### \faIcon{lightbulb} Was wenn die Attributwerte nicht immer gleich sein sollen? - -\pause -$\Rightarrow$ Wir können dem Konstruktor Parameter übergeben. - -\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} -:::: -::: - -## \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 -* **Für Schnelle:** Implementiere eine neue Klasse `Bus` als Unterklasse von `Actor` mit Geschwindigkeit 1. diff --git a/Info/23_24/07/09/9B/topic b/Info/23_24/07/09/9B/topic new file mode 120000 index 00000000..58956f92 --- /dev/null +++ b/Info/23_24/07/09/9B/topic @@ -0,0 +1 @@ +../../../../9/3/Rennbahn \ No newline at end of file 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 Binary files /dev/null and b/Info/9/3/Rennbahn/img/rennbahn.jpg 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. -- cgit v1.2.3