aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Info/10/2/Datenkapselung/capsule.tex12
-rw-r--r--Info/10/2/Datenkapselung/capsule.tikz57
-rw-r--r--Info/10/2/Datenkapselung/handout.tex95
-rw-r--r--Info/10/2/Datenkapselung/img/Bank.pngbin0 -> 37300 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/Computer-hacker.jpgbin0 -> 890989 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/associations.pngbin0 -> 38029 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/farbwalzen.pngbin0 -> 10023 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/hacker_PNG14.pngbin0 -> 124165 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/matrix-communication-software-pc.jpgbin0 -> 190898 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/matrix-communication-software-pc.pngbin0 -> 1525711 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/pointing-down-finger.jpgbin0 -> 25350 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/pointing-right-finger.jpgbin0 -> 25883 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/pointing-right-finger.pngbin0 -> 50439 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/slot-machine-g23d043aac_1280.pngbin0 -> 328400 bytes
-rw-r--r--Info/10/2/Datenkapselung/img/white-hat.pngbin0 -> 41391 bytes
-rw-r--r--Info/10/2/Datenkapselung/schedule.md23
-rw-r--r--Info/10/2/Datenkapselung/slides-bank.md75
-rw-r--r--Info/10/2/Datenkapselung/slides-spielautomat.md76
-rw-r--r--Info/10/2/Datenkapselung/slides.md260
19 files changed, 598 insertions, 0 deletions
diff --git a/Info/10/2/Datenkapselung/capsule.tex b/Info/10/2/Datenkapselung/capsule.tex
new file mode 100644
index 00000000..3da86ad7
--- /dev/null
+++ b/Info/10/2/Datenkapselung/capsule.tex
@@ -0,0 +1,12 @@
+\documentclass{beamer}
+\setbeamertemplate{navigation symbols}{}
+
+\usepackage{bm}
+\usepackage{tikz}
+\usetikzlibrary{calc}
+
+\begin{document}
+\begin{frame}
+\input{capsule.tikz}
+\end{frame}
+\end{document}
diff --git a/Info/10/2/Datenkapselung/capsule.tikz b/Info/10/2/Datenkapselung/capsule.tikz
new file mode 100644
index 00000000..cc11c0a1
--- /dev/null
+++ b/Info/10/2/Datenkapselung/capsule.tikz
@@ -0,0 +1,57 @@
+\begin{tikzpicture}
+\only<-3> {
+ \draw (0,0) circle (3);
+ \draw[opacity=0] (0,0) circle (4.5);
+}
+
+\only<4-> {
+ \draw[fill=orange!40] (0,0) circle (4.5);
+ \node[rotate=90] (public) at (-3.5, 0) {\color{orange} \Large \textbf{public}};
+
+ \draw[fill=blue!40] (0,0) circle (3);
+ \node[rotate=90] (private) at (-1.75, 0) {\color{blue} \Large \textbf{private}};
+ \draw(33:1) -- (33:4.5);
+ \draw(147:1) -- (147:4.5);
+
+}
+
+\only<-4> {
+ \node[opacity=0] (getSchnitt) at (0, 3.75) {SchnittGeben()};
+ \node[opacity=0] at ($(getSchnitt) + (0, 0.75)$) {\huge \bm{$\Uparrow$}};
+}
+\only<5-> {
+ \node (getSchnitt) at (0, 3.75) {SchnittGeben()};
+ \node at ($(getSchnitt) + (0, 0.75)$) {\huge \bm{$\Uparrow$}};
+}
+
+\draw[fill=white] (0,0) circle (1);
+\node (akte) at (0,0) {AKTE: a1};
+
+\node (schnitt) at (-0.3,2.1) {\texttt{schnitt:}};
+\only<1-2, 4->{
+ \node[draw, right of=schnitt, xshift=0.3cm] (schnittValue) {\texttt{3.2}};
+}
+\only<3>{
+ \node[draw, fill=red!50, right of=schnitt, xshift=0.3cm] (schnittValue) {\texttt{1.0}};
+}
+
+\node[] (setSchnitt) at (0,1.6) {\texttt{SchnittSetzen(s)}};
+
+\only<-3> {
+ \node (nick) at (0,-1.7) {\texttt{spitzname:}};
+ \node[draw, right of=nick, xshift=0.45cm] (nickValue) {\texttt{"J"}};
+}
+\only<4-> {
+ \node (nick) at (0,-3.5) {\texttt{spitzname:}};
+ \node[draw, right of=nick, xshift=0.45cm] (nickValue) {\texttt{"J"}};
+}
+
+\only<2>{
+ \node[draw, circle, line width=3pt, minimum width=1.2cm] (lense) at (schnittValue) {};
+ \draw[line width=3pt] (lense.south east) -- ($(lense.south east) + (0.5, -0.5cm)$);
+}
+
+\only<3>{
+ \node[rotate=15, right of=schnittValue] (finger) {\includegraphics[width=2cm]{img/pointing-right-finger.png}};
+}
+\end{tikzpicture}
diff --git a/Info/10/2/Datenkapselung/handout.tex b/Info/10/2/Datenkapselung/handout.tex
new file mode 100644
index 00000000..908923c1
--- /dev/null
+++ b/Info/10/2/Datenkapselung/handout.tex
@@ -0,0 +1,95 @@
+\documentclass{handout}
+
+\usepackage[most]{tcolorbox}
+\tcbuselibrary{breakable}
+
+\usepackage{minted}
+
+\usepackage{wrapfig}
+
+\newtcolorbox{bbox}[1]{text width=0.6\textwidth,colback=blue!5!white,colframe=blue!75!black,fonttitle=\bfseries,title=#1}
+\newtcolorbox{obox}[1]{text width=0.6\textwidth,colback=orange!5!white,colframe=orange!75!black,fonttitle=\bfseries,title=#1}
+
+\begin{document}
+
+\thispagestyle{empty}
+
+\vspace{1cm}
+
+\begin{wrapfigure}{l}{0.35\textwidth}
+\vspace{-1.7cm}
+\includegraphics[width=6cm, keepaspectratio, page=5, trim=1cm 0cm 2.75cm 0cm, clip]{capsule.pdf}
+\end{wrapfigure}
+
+\begin{bbox}{Datenkapselung}
+Der Grundsatz der \textbf{Datenkapselung} besagt, dass nur ein Objekt selbst Zugriff auf seine Attribute haben sollte. \\
+Der Zugriff von außen sollte nur über durch das Objekt bereitgestellte Methoden erfolgen.
+\end{bbox}
+
+\begin{obox}{Java Schlüsselwörter}
+\begin{minted}{java}
+private // Zugriff nur innerhalb der selben Klasse
+public // Uneingeschränkter Zugriff
+protected // Zugriff nur aus dem gleichen Java-Paket
+\end{minted}
+\end{obox}
+
+\begin{obox}{Verwendung}
+% \texttt
+\textlangle{}Schlüsselwort\textrangle \textlangle{}Datentyp\textrangle \textlangle{}Bezeichner\textrangle; \\
+\textlangle{}Schlüsselwort\textrangle \textlangle{}Rückgabetyp\textrangle \textlangle{}Bezeichner\textrangle(\textlangle{}Parameter\textrangle;
+\end{obox}
+
+\vspace{1cm}
+
+\begin{wrapfigure}{l}{0.35\textwidth}
+\vspace{-1.7cm}
+\includegraphics[width=6cm, keepaspectratio, page=5, trim=1cm 0cm 2.75cm 0cm, clip]{capsule.pdf}
+\end{wrapfigure}
+
+\begin{bbox}{Datenkapselung}
+Der Grundsatz der \textbf{Datenkapselung} besagt, dass nur ein Objekt selbst Zugriff auf seine Attribute haben sollte. \\
+Der Zugriff von außen sollte nur über durch das Objekt bereitgestellte Methoden erfolgen.
+\end{bbox}
+
+\begin{obox}{Java Schlüsselwörter}
+\begin{minted}{java}
+private // Zugriff nur innerhalb der selben Klasse
+public // Uneingeschränkter Zugriff
+protected // Zugriff nur aus dem gleichen Java-Paket
+\end{minted}
+\end{obox}
+
+\begin{obox}{Verwendung}
+% \texttt
+\textlangle{}Schlüsselwort\textrangle \textlangle{}Datentyp\textrangle \textlangle{}Bezeichner\textrangle; \\
+\textlangle{}Schlüsselwort\textrangle \textlangle{}Rückgabetyp\textrangle \textlangle{}Bezeichner\textrangle(\textlangle{}Parameter\textrangle;
+\end{obox}
+
+\vspace{1cm}
+
+\begin{wrapfigure}{l}{0.35\textwidth}
+\vspace{-1.7cm}
+\includegraphics[width=6cm, keepaspectratio, page=5, trim=1cm 0cm 2.75cm 0cm, clip]{capsule.pdf}
+\end{wrapfigure}
+
+\begin{bbox}{Datenkapselung}
+Der Grundsatz der \textbf{Datenkapselung} besagt, dass nur ein Objekt selbst Zugriff auf seine Attribute haben sollte. \\
+Der Zugriff von außen sollte nur über durch das Objekt bereitgestellte Methoden erfolgen.
+\end{bbox}
+
+\begin{obox}{Java Schlüsselwörter}
+\begin{minted}{java}
+private // Zugriff nur innerhalb der selben Klasse
+public // Uneingeschränkter Zugriff
+protected // Zugriff nur aus dem gleichen Java-Paket
+\end{minted}
+\end{obox}
+
+\begin{obox}{Verwendung}
+% \texttt
+\textlangle{}Schlüsselwort\textrangle \textlangle{}Datentyp\textrangle \textlangle{}Bezeichner\textrangle; \\
+\textlangle{}Schlüsselwort\textrangle \textlangle{}Rückgabetyp\textrangle \textlangle{}Bezeichner\textrangle(\textlangle{}Parameter\textrangle;
+\end{obox}
+
+\end{document}
diff --git a/Info/10/2/Datenkapselung/img/Bank.png b/Info/10/2/Datenkapselung/img/Bank.png
new file mode 100644
index 00000000..cda6d621
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/Bank.png
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/Computer-hacker.jpg b/Info/10/2/Datenkapselung/img/Computer-hacker.jpg
new file mode 100644
index 00000000..986d05a6
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/Computer-hacker.jpg
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/associations.png b/Info/10/2/Datenkapselung/img/associations.png
new file mode 100644
index 00000000..ccf9b0d9
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/associations.png
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/farbwalzen.png b/Info/10/2/Datenkapselung/img/farbwalzen.png
new file mode 100644
index 00000000..816a9bad
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/farbwalzen.png
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/hacker_PNG14.png b/Info/10/2/Datenkapselung/img/hacker_PNG14.png
new file mode 100644
index 00000000..0588cab3
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/hacker_PNG14.png
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/matrix-communication-software-pc.jpg b/Info/10/2/Datenkapselung/img/matrix-communication-software-pc.jpg
new file mode 100644
index 00000000..714d2d42
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/matrix-communication-software-pc.jpg
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/matrix-communication-software-pc.png b/Info/10/2/Datenkapselung/img/matrix-communication-software-pc.png
new file mode 100644
index 00000000..56a80c77
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/matrix-communication-software-pc.png
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/pointing-down-finger.jpg b/Info/10/2/Datenkapselung/img/pointing-down-finger.jpg
new file mode 100644
index 00000000..57c9dd0d
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/pointing-down-finger.jpg
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/pointing-right-finger.jpg b/Info/10/2/Datenkapselung/img/pointing-right-finger.jpg
new file mode 100644
index 00000000..f94e5401
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/pointing-right-finger.jpg
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/pointing-right-finger.png b/Info/10/2/Datenkapselung/img/pointing-right-finger.png
new file mode 100644
index 00000000..58cd0249
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/pointing-right-finger.png
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/slot-machine-g23d043aac_1280.png b/Info/10/2/Datenkapselung/img/slot-machine-g23d043aac_1280.png
new file mode 100644
index 00000000..de6a4dc7
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/slot-machine-g23d043aac_1280.png
Binary files differ
diff --git a/Info/10/2/Datenkapselung/img/white-hat.png b/Info/10/2/Datenkapselung/img/white-hat.png
new file mode 100644
index 00000000..2377cdaf
--- /dev/null
+++ b/Info/10/2/Datenkapselung/img/white-hat.png
Binary files differ
diff --git a/Info/10/2/Datenkapselung/schedule.md b/Info/10/2/Datenkapselung/schedule.md
new file mode 100644
index 00000000..ad0b5c78
--- /dev/null
+++ b/Info/10/2/Datenkapselung/schedule.md
@@ -0,0 +1,23 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# Datenkapselung
+
+## Lernziele
+
+* SuS erklaeren das Konzept von Referenzvariablen im Kontext einer Spielautomatenimplementierung
+* SuS wenden die Punktnotation (PN) an um Methoden und Attreibute von Referenzvariablen zu verwenden
+* SuS erklaeren des Begriff der Datenkapselung und koennen ihn auf Sachbeispiele anwenden
+* SuS wenden die Java schluesselwoerter 'private' und 'public' an um das Konzept der Datenkapselung in angemessenen Beispielprogrammen umzusetzen
+
+## Zeitplan
+
+| Zeit | Phase | Unterrichtsgeschehen | Ziel | Methode | Medien |
+|:-----|-------------|--------------------------------------------------------------------|--------------------------------------------------------------------|----------|------------------|
+|3 | Wdh | SuS erarbeiten an einem simplen Beispielprojekt / Klassendiagram RV| SuS erklaeren das Konzept der RV und ihrer Deklaration | UG | BE, T |
+|7 | Wdh | SuS verwenden die PN fuer Referenzvariablen | SuS wenden PN an um Methoden/Attribute von RV zu verwenden | UG | AB, BE |
+|5 | Erarbeitung | SuS erkunden unterschied zwischen private/public | | LV | BE |
+|5 | Erarbeitng | Einfuehrung der Datenkapselung und private/public | | UG | AB, BE |
+|15 | Vertiefung | SuS finden fehlende Datenkapselung und nutzen sie aus | SuS erkennen die Risiken fehlender Datenkapselung | UG | BE, AB |
+|10 | Vertiefung | SuS wenden die Datenkapselung und Keywords an | | UG | BE, AB |
diff --git a/Info/10/2/Datenkapselung/slides-bank.md b/Info/10/2/Datenkapselung/slides-bank.md
new file mode 100644
index 00000000..cbcbc052
--- /dev/null
+++ b/Info/10/2/Datenkapselung/slides-bank.md
@@ -0,0 +1,75 @@
+---
+author: Florian Fischer
+theme: Rochester
+header-includes: |
+ \usepackage[school]{pgf-umlcd}
+ \usepackage{bm}
+ \usepackage{tikz}
+ \usetikzlibrary{calc, arrows.meta}
+---
+
+
+
+```{.include}
+slides.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] (konto) at (9,1) {Konto};
+
+\draw (bank) edge[midway, sloped, align=center] node {\small verwaltet > \\ \small < wird verwaltet} (konto);
+\end{tikzpicture}
+
+## Arbeitsauftrag
+
+::: columns
+:::: {.column}
+![](img/Computer-hacker.jpg)
+::::
+:::: 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.
diff --git a/Info/10/2/Datenkapselung/slides-spielautomat.md b/Info/10/2/Datenkapselung/slides-spielautomat.md
new file mode 100644
index 00000000..1de621b1
--- /dev/null
+++ b/Info/10/2/Datenkapselung/slides-spielautomat.md
@@ -0,0 +1,76 @@
+---
+author: Florian Fischer
+theme: Rochester
+header-includes: |
+ \usepackage[school]{pgf-umlcd}
+ \usepackage{bm}
+ \usepackage{tikz}
+ \usetikzlibrary{calc}
+---
+
+
+
+```{.include}
+slides.md
+```
+
+
+## Wiederholung Spielautomat
+
+\vspace{-1cm}
+![](img/slot-machine-g23d043aac_1280.png){.center height=0.8\textheight}
+
+## Wiederholung Spielautomat
+
+\begin{tikzpicture}[
+class/.style={
+draw,
+rectangle,
+minimum width={width("FARBKREIS")},
+font=\small}]
+
+\node[class] (kasten) at (0,0) {KASTEN};
+\node[class] (farbkreis) at (0,2) {FARBKREIS};
+
+\node[class] (spielwalze) at (4.5,1) {SPIELWALZE};
+
+\draw(kasten.east) edge[midway, sloped, align=center] node {\small < besteht \\ \small aus} (spielwalze.west);
+\draw (farbkreis.east) edge[midway, sloped, align=center] node {\small < besteht \\ \small aus} (spielwalze.west);
+
+\node[class] (spielautomat) at (9,1) {SPIELAUTOMAT};
+
+\draw (spielwalze) edge[midway, sloped, align=center] node {\small < besteht \\ aus} (spielautomat);
+\end{tikzpicture}
+
+## Arbeitsauftrag
+
+::: columns
+:::: {.column}
+\vspace{1.2cm}
+![](img/Computer-hacker.jpg)
+::::
+:::: column
+![](img/slot-machine-g23d043aac_1280.png)
+::::
+:::
+
+## Arbeitsauftrag
+
+Arbeitszeit: 15min
+
+Kopiere die Spielautomatvorlage unter `Vorlagen/FIF/Spielautomat_Datenkapselung auf` deinen USB-Stick.
+
+* **Aufagbe 0**: Untersuche die Klasse `SPIELAUTOMAT` und `SPIELWALZE` auf fehlende Datenkapselung.
+* **Aufagbe 1**: Ergänze die Methoden `SchalteAutomatenLichterAus` in der Klasse `SPIELER`.
+* **Aufgabe 2**: Ergänze die Methode `ManipuliereAutomat` in der Klasse `SPIELER`.
+* **Zusatzaufgabe**: Ergänze die Methode `ZerstoereAutomat` in der Klasse `SPIELER`.
+
+## Arbeitsauftrag 2
+
+Stelle dir vor, du wurdest von dem Spielautomat-Hersteller beauftragt, den Spielautomaten abzusichern. ![](img/white-hat.png){width=1cm}
+
+### Aufgabe
+Ergänze die Klassen `SPIELWALZE` und `SPIELAUTOMAT` um die Methoden `SchalteAutomatenLichterAus` und `ManipuliereAutomat` zu verhindern.
+
+### Tipp
+Verwende den Grundsatz der **Datenkapselung** sowie das geeignete Java Schlüsselwort.
diff --git a/Info/10/2/Datenkapselung/slides.md b/Info/10/2/Datenkapselung/slides.md
new file mode 100644
index 00000000..fc5e26af
--- /dev/null
+++ b/Info/10/2/Datenkapselung/slides.md
@@ -0,0 +1,260 @@
+---
+author: Florian Fischer
+theme: Rochester
+header-includes: |
+ \usepackage[school]{pgf-umlcd}
+ \usepackage{bm}
+ \usepackage{tikz}
+ \usetikzlibrary{calc}
+---
+
+## Wdh. Klassendiagramm
+
+<!-- \begin{tikzpicture} -->
+ <!-- \begin{class}[text width=5cm]{SPIELAUTOMAT}{0,0} -->
+ <!-- \attribute{walze1 : SPIELWALZE} -->
+ <!-- \attribute{walze2 : SPIELWALZE} -->
+ <!-- \attribute{walze3 : SPIELWALZE} -->
+ <!-- \operation{AlleDrehen()} -->
+ <!-- \end{class} -->
+
+ <!-- \begin{class}[text width=5cm]{SPIELWALZE}{6,0} -->
+ <!-- \attribute{hintergrund : KASTEN} -->
+ <!-- \attribute{farbsymbol : FARBKREIS} -->
+ <!-- \operation{Drehen()} -->
+ <!-- \end{class} -->
+
+ <!-- \association{SPIELAUTOMAT}{}{1}{SPIELWALZE}{3}{} -->
+<!-- \end{tikzpicture} -->
+
+<!-- ![](img/associations.png) -->
+
+\begin{center}
+\begin{tikzpicture}[
+class/.style={
+draw,
+rectangle,
+minimum width={width("SCHUELER")},
+font=\small}]
+
+\node[class] (schueler) at (0,0) {SCHUELER};
+
+\node[class] (akte) at (5, 0) {AKTE};
+
+\draw(schueler.east) edge[above, align=center] node {\small > hat eine} (akte.west);
+\end{tikzpicture}
+\end{center}
+
+## Wdh. Referenzvariablen
+
+\small
+
+::: columns
+:::: {.column width=40%}
+```java
+class SCHUELER {
+ private String name;
+
+
+ void SCHUELER(String n,
+ double s)
+ {
+ name = n;
+
+ }
+}
+```
+::::
+
+:::: {.column width=60%}
+```java
+class AKTE {
+ public String spitzname;
+ private double notenschnitt;
+
+ public void AKTE(double s)
+ {
+ notenschnitt = s;
+ spitzname = "";
+ }
+}
+```
+::::
+:::
+
+\normalsize
+
+## Wdh. Referenzvariablen
+
+\small
+
+::: columns
+:::: {.column width=40%}
+```java
+class SCHUELER {
+ private String name;
+ private AKTE akte;
+
+ void SCHUELER(String n,
+ double s)
+ {
+ name = n;
+
+ }
+}
+```
+::::
+
+:::: {.column width=60%}
+```java
+class AKTE {
+ public String spitzname;
+ private double notenschnitt;
+
+ public void AKTE(double s)
+ {
+ notenschnitt = s;
+ spitzname = "";
+ }
+}
+```
+::::
+:::
+
+\normalsize
+
+## Wdh. Referenzvariablen
+
+\small
+
+::: columns
+:::: {.column width=40%}
+```java
+class SCHUELER {
+ private String name;
+ private AKTE akte;
+
+ void SCHUELER(String n,
+ double s)
+ {
+ name = n;
+ akte = new AKTE(1.0);
+ }
+}
+```
+::::
+
+:::: {.column width=60%}
+```java
+class AKTE {
+ public String spitzname;
+ private double notenschnitt;
+
+ public void AKTE(double s)
+ {
+ notenschnitt = s;
+ spitzname = "";
+ }
+}
+```
+::::
+:::
+
+\normalsize
+
+## Arbeitsauftrag
+
+Arbeitszeit: 7min
+
+Kopiere die Vorlage des Projekts Schülerakte unter `Vorlagen/FIF/Schuelerakte` auf deinen USB-Stick.
+
+* Aufgabe 1: Vervollständige die Methode `ZusammenfassungAusgeben` in der Klasse `SCHUELER`.
+* Aufgabe 2: Vervollständige die Methode `SpitznameSetzen` in der Klasse `SCHUELER`.
+* Aufgebe 3: Vervollständige die Methode `NotenschnittSetzen` in der Klasse `SCHUELER`. Und merke dir deine Beobachtungen.
+
+## Wdh. Punktdiagram
+
+\begin{tikzpicture}[scale=0.5]
+ \begin{object}[text width=4cm]{s1}{0,0}
+ \instanceOf{SCHUELER}
+ \attribute{name : String}
+ \attribute{akte : AKTE}
+ \end{object}
+
+ \begin{object}[text width=4cm]{a1}{12,0}
+ \instanceOf{AKTE}
+ \attribute{spitzname : String}
+ \attribute{notenschnitt : double}
+ \end{object}
+
+ \only<2->{
+ \node[fill=black, circle, minimum size=0.075cm] (circle) at (1, -2.5) {};
+ \draw[line width=2pt, -latex] (circle) edge [bend left=15] (8, -0.5) {};
+ }
+
+\end{tikzpicture}
+
+\pause
+\pause
+
+\vspace{0.5cm}
+`<bezeichner>.<attribute>`
+`<bezeichner>.<methode>(<parameter>)`
+
+\pause
+
+### Beispiele in `SCHUELER`
+
+```java
+akte.spitzname = "J";
+akte.SpitznameSetzen("J");
+```
+
+## Datenkapselung
+
+\begin{center}
+\scalebox{0.82}{
+\input{capsule.tikz}
+}
+\end{center}
+
+## Datenkapselung
+
+### Merke
+
+Der Grundsatz der **Datenkapselung** besagt, dass nur ein Objekt selbst Zugriff auf seine Attribute haben sollte.
+
+\pause
+
+\vspace{0.75cm}
+
+Der Zugriff von außen sollte nur über durch das Objekt bereitgestellte Methoden erfolgen.
+
+## Zugriffsrechte
+
+Um den Zugriff auf Klasse, Methoden und Attribute zu steuern stellt Java folgende Schlüsselwörter, auch Zugriffsmodifikatoren genannt, bereit:
+
+\vspace{0.25cm}
+
+### Schlüsselwörter
+\pause
+`private // Zugriff nur innerhalb der selben Klasse`{.java} \pause
+`public // Uneingeschränkter Zugriff`{.java} \pause
+`protected // Zugriff nur aus dem gleichen Java-Paket`{.java}
+
+## Zugriffsrechte
+
+### Verwendung
+\small
+`<Schlüsselwort> <Datentyp> <Bezeichner>;`
+`<Schlüsselwort> <Rückgabetyp> <Bezeichner>(<Parameter>);`
+
+\pause
+
+### Beispiele in `SCHUELERAKTE`
+```java
+private double notenschnitt;
+public String spitzname;
+
+private void NotenschnittSetzen(double neuerSchnitt);
+```