aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-01-27 18:06:24 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2024-01-27 18:06:24 +0100
commit072bc8daae909e564487ff08b1b389e4311efead (patch)
treed3c20b589bd8b10a116fb4600e2fc09107cb4ec6
parent6d8b9191aa25e27ff4be2e52c76e67d30a60da0b (diff)
downloadunterricht-072bc8daae909e564487ff08b1b389e4311efead.tar.gz
unterricht-072bc8daae909e564487ff08b1b389e4311efead.zip
add my next lesson in 10B about references
l---------Info/10/2/Referenzen/Spielautomat1
m---------Info/10/2/Spielautomat/BlueJ_Projekt0
-rw-r--r--Info/10/2/Spielautomat/Referenzen/handout.tex72
-rw-r--r--Info/10/2/Spielautomat/Referenzen/slides.md157
-rw-r--r--Info/10/2/Spielautomat/img/explosionszeichnung.pngbin0 -> 1580728 bytes
-rw-r--r--Info/10/2/Spielautomat/img/spielautomat.pngbin0 -> 1279 bytes
-rw-r--r--Info/23_24/01/29/10B/schedule.md32
7 files changed, 262 insertions, 0 deletions
diff --git a/Info/10/2/Referenzen/Spielautomat b/Info/10/2/Referenzen/Spielautomat
new file mode 120000
index 00000000..4f093aa1
--- /dev/null
+++ b/Info/10/2/Referenzen/Spielautomat
@@ -0,0 +1 @@
+../Spielautomat/Referenzen \ No newline at end of file
diff --git a/Info/10/2/Spielautomat/BlueJ_Projekt b/Info/10/2/Spielautomat/BlueJ_Projekt
-Subproject f9699cc031fe92492d14080b52dd8e75dcf6c63
+Subproject 188cecca9014fbdc99b1cd4c25f4e2e4be7b5e8
diff --git a/Info/10/2/Spielautomat/Referenzen/handout.tex b/Info/10/2/Spielautomat/Referenzen/handout.tex
new file mode 100644
index 00000000..3700d9f2
--- /dev/null
+++ b/Info/10/2/Spielautomat/Referenzen/handout.tex
@@ -0,0 +1,72 @@
+\documentclass{handout}
+\csname endofdump\endcsname
+\usepackage{minted}
+
+\title{Beziehungen zwischen Objekten - Referenzattribute}
+
+\renewcommand{\baselinestretch}{1.5}
+
+\begin{document}
+\thispagestyle{empty}
+\makedate
+
+\large
+
+\vspace{1cm}
+Datentypen, die aus mehreren Datentypen, die aus mehreren Elementen zusammengesetzt sind, werden als \gap{\Huge komplexe Datentypen} bezeichnet. \\[0.1cm]
+
+So kann z.B. jede selbstdefinierte Klasse als Datentyp verwendet werden.
+
+\begin{center}
+ \textbf{Beispiel.:} Attribut vom Typ \texttt{SPIELWALZE} in der Klasse \texttt{SPIELAUTOMAT}
+\end{center}
+
+Da der Wert eines solchen Attributs ein \gap{\Huge Objekt} der zugewiesenen Klasse ist, muss zur
+Initialisierung der \gap{\Huge Konstruktor} dieser Klasse aufgerufen werden. \\
+Hierzu wird der Operator \mintinline{java}{new} verwendet. \\[0.3cm]
+
+\textbf{Beispiel:} \\
+\begin{center}
+\begin{minipage}{0.8\textwidth}
+\begin{minted}[baselinestretch=1.4, escapeinside=$$]{java}
+SPIELWALZE walze; // $\gap{Deklaration~~~~~~~~~~~~~~~~~~~~~~~~~}$
+walze = new SPIELWALZE(...); // $\gap{Initialisierung~~~~~~~~~~}$
+\end{minted}
+\end{minipage}
+\end{center}
+
+Indem in einer Klasse ein sogenanntes \gap{\Huge Referenzattribut} vom Typ einer (anderen) Klasse angelegt wird, treten die beiden Objekte \textbf{in Beziehung} zueinander.
+
+\begin{center}
+\begin{tikzpicture}[
+object/.style={
+draw,
+rectangle,
+rounded corners=3pt,
+minimum height=1.2cm,
+minimum width=7cm}]
+
+\begin{class}[text width=4cm]{SPIELAUTOMAT}{0,4}
+ \attribute{SPIELWALZE walze}
+ \attribute{...}
+ \operation{SPIELAUTOMAT()}
+ \operation{...}
+\end{class}
+
+\node[object] (sa) at (12, 4) {\solution{\Huge SPIELAUTOMAT}};
+
+\node[object] (sw) at (12, 1) {\solution{\Huge SPIELWALZE~~~~}};
+
+\draw (sa.south) -- (sw.north);
+\end{tikzpicture}
+\end{center}
+
+\subsection*{Arbeitsauftrag – BlueJ-Projekt Spielautomat}
+
+\begin{enumerate}
+\item Ergänze die fehldenden Referenzattribute in der Klasse \texttt{SPIELAUTOMAT}.
+\item Initialisiere die fehldenden Referenzattribute im Konstruktor der Klasse \texttt{SPIELAUTOMAT}.
+\end{enumerate}
+
+\textit{Tipp: Achte immer auf eindeutige Attribut- bzw. Variablenbezeichner!}
+\end{document}
diff --git a/Info/10/2/Spielautomat/Referenzen/slides.md b/Info/10/2/Spielautomat/Referenzen/slides.md
new file mode 100644
index 00000000..ec775320
--- /dev/null
+++ b/Info/10/2/Spielautomat/Referenzen/slides.md
@@ -0,0 +1,157 @@
+---
+author: Florian Fischer
+theme: metropolis
+aspectratio: 169
+header-includes: |
+ \makeatletter
+ \beamer@ignorenonframefalse
+ \makeatother
+---
+
+
+## Zusammengesetze Objekte
+
+![](../img/explosionszeichnung.png){.center}
+
+## Spielautomat vereinfacht - objektorientiertes Modell
+
+**Welche unterschiedlichen Objekte sind am Spielautomat beteiligt? Welchen Klassen gehören sie an?**
+
+![](../img/spielautomat.png){.center}
+
+## Spielautomat - Steuerung
+
+**Wie können die Walzen des Automaten zufällig gedreht werden?**
+\pause
+
+$\rightarrow$ Eine Klasse `SPIELAUTOMAT`, die die Walzen nach festen Wahrscheinlichkeiten dreht.
+\pause
+
+**Wie stehen die Klassen `SPIELAUTOMAT` und `SPIELWALZE` miteinander in Beziehung?**
+
+## Objektbeziehungen
+
+\begin{center}
+\begin{tikzpicture}[
+class/.style={
+draw,
+rectangle,
+minimum width={width("SPIELAUTOMAT")},
+font=\small}]
+
+\node[class] (sa) at (0,0) {SPIELAUTOMAT};
+
+\node[class] (sw) at (7, 0) {SPIELWALZE};
+
+\draw (sa.east) edge[above, align=center] node {\small 1 ~~~~~ > enthält ~~~~~ 3} (sw.west);
+\end{tikzpicture}
+\end{center}
+
+\pause
+### Umsetzung der Beziehung – Erinnerung Datenbanken:
+Der Primärschlüssel einer Klasse wurde als Fremdschlüssel (Referenz) in die andere Klasse aufgenommen.
+
+\pause
+### In Java genauso:
+Es wird ein \boldred{Referenzattribut} erstellt, das auf das in der Beziehung stehende Objekt verweist.
+
+## Komplexe Datentypen
+
+* Besteht aus mehreren Elementen
+* Eine Klasse als Datentyp
+* Kann wie ein primitiver Datentyp eingesetzt werden
+
+\pause
+### Beispiel:
+Der Spielautomat steuert die Bewegung der Walzen.
+ Der Klasse `SPIELAUTOMAT` wird ein \boldred{Referenzattribut} `walze` vom Typ `SPIELWALZE` hinzugefügt
+
+## \faIcon{pencil-alt} Arbeitsblatt – 1. Referenzattribute
+
+Datentypen, die aus mehreren Elementen zusammengesetzt sind, werden als \boldred{„komplexe Datentypen“} bezeichnet.
+So kann z.B. jede selbstdefinierte Klasse als Datentyp verwendet werden.
+
+\pause
+### Besipiel:
+Attribut vom Typ `SPIELWALZE` in der Klasse `SPIELAUTOMAT`
+
+## \faIcon{pencil-alt} Arbeitsblatt – 1. Referenzattribute
+
+Da der Wert eines solchen Attributs ein \boldred{Objekt} der zugewiesenen Klasse ist, muss zur Initialisierung der \boldred{Konstruktor} dieser Klasse aufgerufen werden.
+Hierzu wird der Operator `new`{.java} verwendet.
+
+### Beispiel:
+```java
+SPIELWALZE walze; // Deklaration von walze
+walze = new SPIELWALZE(...); // Initialisierung von walze
+// Uebergabeparameter --^
+```
+
+## \faIcon{pencil-alt} Arbeitsblatt – 1. Referenzattribute
+
+Indem in einer Klasse ein sogenanntes \boldred{Referenzattribut} vom Typ einer (anderen) Klasse angelegt wird, treten die beiden Objekte in Beziehung zueinander, hier:
+
+\pause
+
+\vspace{0.5cm}
+\begin{center}
+\begin{tikzpicture}[
+object/.style={
+draw,
+rectangle,
+rounded corners=3pt,
+font=\small}]
+
+\node[object] (sa) at (0,0) {SPIELAUTOMAT};
+
+\node[object] (sw) at (0, -2) {SPIELWALZE};
+
+\draw (sa.south) -- (sw.north);
+\end{tikzpicture}
+\end{center}
+
+## Woraus besteht denn die Walze?
+
+\pause
+Aus einem farbigen Kreis und einem Hintergrund.
+
+\vspace{0.5cm}
+\pause
+\begin{center}
+\begin{tikzpicture}[
+object/.style={
+draw,
+rectangle,
+rounded corners=3pt,
+font=\small}]
+
+\node[object] (sw) at (0,0) {SPIELWALZE};
+
+\node[object] (h) at (-2, -2) {HINTEGRUND};
+
+\node[object] (fk) at (2, -2) {FARBKREIS};
+
+\draw (sw.south) -- (h.north);
+\draw (sw.south) -- (fk.north);
+\end{tikzpicture}
+\end{center}
+
+
+
+## \faIcon{desktop} Arbeitsauftrag – Referenzattribute
+
+1. Kopiere und öffne das BlueJ-Projekt Spielautomat aus dem Ablage Laufwerk
+2. Öffne die Klassen `FARBKREIS` und `KASTEN` und sieh dir ihre Methoden an
+3. Ergänze die Klasse `SPIELWALZE` um die fehlenden Attribute
+4. Initialisiere die neu ergänzten Attribute im Konstruktor der Klasse `SPIELWALZE`
+5. Implementiere die Methode `SPIELWALZE.SetzePosition(...)` sowie die Methode `SPIELWALZE.Zeichnen()`
+6. Teste deine Implementierung in BlueJ.
+
+
+## \faIcon{desktop} Arbeitsauftrag – Referenzattribute
+
+Jetzt können wir bereits eine Walze zeichnen.
+
+1. Ergänze die Methode `SPIELWALZE.Drehen()`
+2. Teste deine Implementierung
+3. **Fuer Schnelle**: Verändere die Wahrscheinlichkeiten der `Drehen()` Methode oder ergänze zusätzliche Farben
diff --git a/Info/10/2/Spielautomat/img/explosionszeichnung.png b/Info/10/2/Spielautomat/img/explosionszeichnung.png
new file mode 100644
index 00000000..31756c38
--- /dev/null
+++ b/Info/10/2/Spielautomat/img/explosionszeichnung.png
Binary files differ
diff --git a/Info/10/2/Spielautomat/img/spielautomat.png b/Info/10/2/Spielautomat/img/spielautomat.png
new file mode 100644
index 00000000..9b297b44
--- /dev/null
+++ b/Info/10/2/Spielautomat/img/spielautomat.png
Binary files differ
diff --git a/Info/23_24/01/29/10B/schedule.md b/Info/23_24/01/29/10B/schedule.md
new file mode 100644
index 00000000..ee28483a
--- /dev/null
+++ b/Info/23_24/01/29/10B/schedule.md
@@ -0,0 +1,32 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# 1. Ex / Referenzen
+
+* **Klasse**: 10B
+* **Datum**: 29.01
+
+## Lernziele
+
+## Verlaufplan
+
+---------------------------------------------------------------------------------------------------
+Zeit Phase Unterrichtsgeschehen Ziel Methode Medien
+----- --------------- -------------------------------------------- ----------- ---------- ---------
+20 Ex 1. Ex
+
+5 Wdh Felder
+
+5 Motivation Spielautomat
+
+10 Wdh Modellierung
+
+10 Sicherung Referenzen in Java
+
+10 Uebung Spielautomat
+
+5 Erarbeitung Spielwalze
+
+25 Uebung Spielwalze implementierung
+---------------------------------------------------------------------------------------------------