aboutsummaryrefslogtreecommitdiff
path: root/Info/23_24/02/20/10B/slides.md
blob: 0a3b88d10e5f740c92c23e279eb9229177f35863 (plain)
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

![](topic/../img/explosionszeichnung.png){.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.