aboutsummaryrefslogtreecommitdiff
path: root/Info/9/3/Planet/modellierung/zwischenlager/methoden-testen.md
blob: 4197b6bae645c73e8f2522eeb57fd87f429d4a52 (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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
---
section: Zwischenlager
title: Methoden Testen
---

:::{.no-print}
::::{.tipp}
Vergiss nicht das Arbeitsblatt: Methoden Testen herunterzuladen.
::::
:::

#### Schritt 3.1.1
Klassen legen fest, was Objekte tut können.
Die Logik was ein Objekt tun kann nennt man **Methode**.

* Jede Methode hat einen Namen gefolgt von einem Klammernpaar `()`{.java}, z. B. besitzt ein Rover die Methode `fahre()`{.java}.
* Methoden verändern den Zustand von Objekten, z. B. wird durch Aufruf der Methode `fahre()`{.java} die Position des Rovers verändert:

::: {.columns}
:::: {.column width=20%}
bisheriger Zustand

```{.plantuml executable=plantuml command_line_arguments=""} 
@startuml
object rover {
  x=4
  y=5
  rotation = 0
}
@enduml
```
::::

:::: {.column width=20%}
Methodenaufruf  

```
     fahre()
---------------->
```
::::

:::: {.column width=20%}
neuer Zustand
    
```{.plantuml executable=plantuml command_line_arguments=""} 
@startuml
object rover {
  x=5
  y=5
  rotation = 0
}
@enduml
```
::::
:::

* Manche Methoden verlangen eine Eingabe, einen sogenannten Parameter, z. B. `drehe(String richtung)`{.java}.
→ `richtung` ist ein Parameter vom Datentyp `String`. Ein `String` ist eine Zeichenkette, als Wert muss man also einen Text eingeben und diesen in Anführungszeichen setzen, z. B. `drehe("rechts")`{.java}.

:::{.merke data-class="Merke: Methoden"}
Durch **Methoden** kann der Zustand eines Objektes verändert oder zurückgegeben werden.
Manche Methoden verlangen eine Eingabe, einen sogenannten **Parameter**.
:::

#### Schritt 3.1.2
::: {.columns  style="align-items:center;"}
:::: {.column width=70%}
Öffne in der [Online-IDE](online-ide.de) den Workspace "Planet".
Teste die folgenden Methoden des Rover-Objekts in der Datei **MethodenTest**.  
Beantworte anschließend die Fragen in deinem Kurs.
::::

:::: {.column width=30%}
![](img/oide-methodenTest.png)
::::
:::

::: {.columns}
:::: {.column width=40%}
`void fahre()`{.java}  
Der Rover bewegt sich ein Feld in Fahrtrichtung weiter, sofern sich dort kein Hügel befindet oder die Grenze der Welt erreicht ist.

`void drehe(String richtung)`{.java}  
Der Rover dreht sich um 90 Grad in die Richtung, die mit richtung ("links” oder "rechts") übergeben wurde.

`boolean huegelVorhanden(String richtung)`{.java}  
Der Rover überprüft, ob sich in der angegebenen Richtung ("lınks", "rechts” oder "vorne") ein Objekt der Klasse Huegel befindet.
Das Ergebnis wird zurückgegeben.

`boolean gesteinVorhanden()`{.java}  
Der Rover gibt durch einen Wahrheitswert (`true`{.java} oder `false`{.java}) zurück, ob sich auf seiner Position ein Objekt der Klasse Gestein befindet.
::::

:::: {.column width=40%}
`void nimmGestein()`{.java}  
Sofern an der Position des Rovers ein Gestein vorhanden ist, so nimmt er es auf.

`void setzeMarke()`{.java}  
Der Rover erzeugt ein Objekt der Klasse Marke und legt es auf seiner Position ab.

`boolean markeVorhanden()`{.java}  
Der Rover gibt durch einen Wahrheitswert (true oder false) zurück, ob sich auf seiner Position ein Objekt der Klasse Marke befindet.

`void entferneMarke()`{.java}  
Falls an der Position des Rovers eine Marke vorhanden ist, so entfernt er diese.
::::
:::

:::{.aufgabe data-class="Aufgabe 3.1.1"}
Was hast du herraus gefunden?
Überprüfe deine Erekenntnisse in Planet: Methoden Testen  
![](img/h5p-methoden-testen.png)
:::

#### Schritt 3.1.3
Man kann die verschiedenen Methoden des Rovers in zwei Kategorien unterteilen: In Methoden, die versuchen, den Zustand zu ändern (z. B. `fahre()`) und in Methoden, die eine Rückmeldung geben (z. B. `huegelVorhanden()`).

:::{.aufgabe data-class="Aufgabe 3.1.2"}
Fülle die Tabelle auf deinem Aufgabenblatt und sortiere alle Methoden aus der vorherigen Übersicht ein:

:::{style="width:80%"}
----------------------------------------------------------------------
 Veränderne                         Zurückgebende
  Methoden                          Methoden
-------------------------------- -------------------------------------
 `void fahre()`{.java}            `boolean huegelVorhanden()`{.java}

 [drehe]{color="white"}

 [nimmGestein]{color="white"}

 [setzeMarke]{color="white"}

 [entferneMarke]{color="white"}

-----------------------------------------------------------------------
:::

Teste deine Sortierung unter Planet: Methoden Sortieren  
![](img/h5p-methoden-sortieren.png)
:::

:::{.page-break}
:::

:::{.merke data-class="Merke: Verändernde und zurückgebende Methoden"}
**Verändernde Methoden** verändern den Objektzustand, sie beginnen mit dem Schlüsselwort `void`{.java}.  
Beispiel: `void fahre()`{.java}

**Zurückgebende Methoden** geben Attributwerte aus, sie beginnen mit dem Datentyp des zurückzugebenden Wertes.  
Beispiel: `boolean huegelVorhanden()`{.java}
:::

:::{.erledigt}
:::

:::{.no-print}
<< Zurück zu TODO: %section%
:::