aboutsummaryrefslogtreecommitdiff
path: root/Info/10/2/Datenkapselung/slides-bank.md
blob: c15e1445c5c3dd40550c3e83154169e9382e52ef (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
---
author: Florian Fischer
theme: Rochester
aspectratio: 169
header-includes: |
    \usepackage{bm}
    \usepackage{tikz}
    \usetikzlibrary{calc, arrows.meta, decorations.text}
---

```{.include}
slides-einfuehrung.md
```

## Arbeitsauftrag

Arbeitszeit: 7min

Öffne den workspace `Schuelerakte` in der Online-IDE.

* Aufgabe 1: Vervollständige die Methode `ZusammenfassungAusgeben` in der Klasse `SCHUELER`.
* Aufgabe 2: Vervollständige die Methode `SpitznameSetzen` in der Klasse `SCHUELER`.
* Aufgabe 3: Vervollständige die Methode `NotenschnittSetzen` in der Klasse `SCHUELER`. Und merke dir deine Beobachtungen.

```{.include}
slides-erarbeitung.md
```


## Bank

![](img/Bank.png){.center}

## Bank Modellierung

\begin{tikzpicture}[
class/.style={
draw,
rectangle, 
minimum width={width("Hacker")},
font=\small}]

\node[class] (kunde) at (0,2) {Kunde};
\node[class] (hacker) at (0,0) {Hacker};

\draw[arrows={Stealth[inset=0pt, length=10pt, angle'=60, open]-}] (kunde.south) edge[midway, right] node {\small ist} (hacker.north);

\node[class] (bank) at (4.5,1) {Bank};

\draw(kunde.east) edge[midway, sloped, align=center] node {\small < bedient \\ \small hat Konto bei > } (bank.west);

\node[class] (karte) at (4.5, 4) {Karte};

\draw[postaction={decorate,decoration={raise=0.75ex,text along path,text align=center,text={|\small| < geh{\"o}rt}}}] (kunde.east) to [bend left=25] (karte.west);
\draw[postaction={decorate,decoration={raise=-2ex,text along path,text align=center,text={|\small| besitzt >}}}] (kunde.east) to [bend left=25] (karte.west);

\draw (bank) edge[align=center] node[rotate=90] {\small gibt aus > \\ \small < weist auf} (karte);
 
\node[class] (konto) at (9,1) {Konto};

\draw (bank) edge[midway, align=center] node {\small verwaltet > \\ \small < wird verwaltet} (konto);
\end{tikzpicture}

## Arbeitsauftrag

::: columns
:::: {.column}
![](img/Computer-hacker.png)
::::
:::: column
![](img/Bank.png)
::::
:::

## Arbeitsauftrag

Arbeitszeit: 30min

* **Aufagbe 0**: Untersuche die Klasse `Bank` und `Konto` auf fehlende Datenkapselung.
* **Aufgabe 1**: Ergänze die Methode `kontoAufloesen` in der Klasse `Kunde`.
* **Aufagbe 2**: Ergänze die Methoden `erfindeGeld` in der Klasse `Hacker`.
* **Zusatzaufgaben**: Im Quellcode sind 3 zusätzliche Aufgaben ausgewiesen.

Happy Hacking :)

## Arbeitsauftrag 2

Stelle dir vor, du wurdest von der Bank beauftragt, ihre Software abzusichern. ![](img/white-hat.png){width=1cm}

* **Aufgabe 3**: Ergänze die Klassen `Bank` und `Konto` um die Methoden `Hacker:erfindeGeld`{.java} zu verhindern.
* **Aufgabe 4**: Ergänze die Klassen `Bank` um die Methoden `kontoAufloesen(Karte karte)`{.java} die alle benötigten Schritte ausführt um ein Konto vollständig aufzulösen.

### Tipp
Verwende den Grundsatz der **Datenkapselung** sowie das geeignete Java Schlüsselwort.