1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
---
author: Florian Fischer
theme: metropolis
aspectratio: 169
header-includes: |
\makeatletter
\beamer@ignorenonframefalse
\makeatother
---
## Zusammengesetze Objekte
{.center}
## Spielautomat vereinfacht - objektorientiertes Modell
\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}
\large
\vspace{1cm}
### \Large Referenzattribute
\pause
Ein \boldred{Referenzattribut} speichert ein Objekt einer Klasse (**komplexer Datentyp**).
## Wiederholung Referenzattribute
\large
* Was war nochmal der Datentyp eines Referenzattributes?
* Wie hat man eine Referenzattribut **initialisiert**?
\pause
>- Der Name der Klasse (**Bsp.**: `SPIELWALZE`{.java})
>- `new KONSTRUKTOR(...)`{.java} (**Bsp.**: `new SPIELWALZE()`{.java})
## Spielautomat vereinfacht - objektorientiertes Modell
\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 ~~~~~ \only<1>{3}\only<2->{\boldred{n}}} (sw.west);
\end{tikzpicture}
\end{center}
## Felder von komplexen Datentypen
\large
* Was könnte der Datentyp eines Feldes von komplexen Datentypen sein?
* Wie hat man ein Element des Feldes initialisiert?
\pause
>- Der Name der Klasse gefolgt von eckigen Klammern (`SPIELWALZE[]`)
>- `feldname[i] = new KONSTRUKTOR(...)`{.java} (**Bsp.:** `walzen[i] = new SPIELWALZE()`{.java})
\pause
### \faIcon{pencil-alt} Felder von komplexen Datentypen
\pause
>- **Datentyp**: `KLASSENNAME[]`
>- **Deklaration**: `KLASSENNAME[] feldname;`{.java}
>- **Initialisierung**: `feldname = new KLASSENNAME[laenge];`{.java}
## \faIcon{desktop} Arbeitsauftrag – Mehr Walzen 20min
\large
1. Ersetze die Referenzattribute der Klasse `SPIELWALZE` im `SPIELAUTOMAT` durch ein Feld
2. Ergänze den Konstruktor des `SPIELAUTOMATS` um die Anzahl der Spielwalzen.
3. Initialisiere das Feld und alle Elemente
**Achte** darauf die Position der Spielwalzen korrekt anzupassen.
4. Implementiere die Methoden `SPIELAUTOMAT.AlleDrehen()`, sowie die Methode `SPIELAUTOMAT.Zeichnen()` durch geeignete `for`{.java}-Schleifen
5. Teste deine Implementierung in BlueJ.
6. **Für Schnelle**: Ersetze die Farben der Spielwalze durch ein Feld und passe die Funktion `SPIELWALZE.Drehen()` entsprechend an.
|