diff options
| l--------- | Info/10/2/Referenzen/Spielautomat | 1 | ||||
| m--------- | Info/10/2/Spielautomat/BlueJ_Projekt | 0 | ||||
| -rw-r--r-- | Info/10/2/Spielautomat/Referenzen/handout.tex | 72 | ||||
| -rw-r--r-- | Info/10/2/Spielautomat/Referenzen/slides.md | 157 | ||||
| -rw-r--r-- | Info/10/2/Spielautomat/img/explosionszeichnung.png | bin | 0 -> 1580728 bytes | |||
| -rw-r--r-- | Info/10/2/Spielautomat/img/spielautomat.png | bin | 0 -> 1279 bytes | |||
| -rw-r--r-- | Info/23_24/01/29/10B/schedule.md | 32 |
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 + +{.center} + +## Spielautomat vereinfacht - objektorientiertes Modell + +**Welche unterschiedlichen Objekte sind am Spielautomat beteiligt? Welchen Klassen gehören sie an?** + +{.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 Binary files differnew file mode 100644 index 00000000..31756c38 --- /dev/null +++ b/Info/10/2/Spielautomat/img/explosionszeichnung.png diff --git a/Info/10/2/Spielautomat/img/spielautomat.png b/Info/10/2/Spielautomat/img/spielautomat.png Binary files differnew file mode 100644 index 00000000..9b297b44 --- /dev/null +++ b/Info/10/2/Spielautomat/img/spielautomat.png 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 +--------------------------------------------------------------------------------------------------- |
