--- 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.