--- author: Florian Fischer theme: metropolis aspectratio: 169 --- ## 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.