diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2024-07-13 12:17:28 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2024-07-13 12:18:03 +0200 |
| commit | dee46ae2bf06373def1d7e0d0a8375198089efdb (patch) | |
| tree | 44d7ffc9d2fe39ba6caaed3befecb70dc3a1df8d /Info/9 | |
| parent | f381cd2c7414e218db5d676cf6d6669e1853c258 (diff) | |
| download | unterricht-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/.gitignore | 1 | ||||
| -rw-r--r-- | Info/9/3/Rennbahn/img/rennbahn.jpg | bin | 0 -> 13705 bytes | |||
| -rw-r--r-- | Info/9/3/Rennbahn/modellierung_handout.tex | 58 | ||||
| -rw-r--r-- | Info/9/3/Rennbahn/slides.md | 196 |
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 Binary files differnew file mode 100644 index 00000000..37e253c8 --- /dev/null +++ b/Info/9/3/Rennbahn/img/rennbahn.jpg 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} +{.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 + +{.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. |
