From 820f2d151be22f49fc646950fff5daefebb0bc59 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Wed, 19 Apr 2023 15:00:42 +0200 Subject: Datenkapselung: improve slides, and fix first task description * Make slides 16:9 and adapt the capsular slide * Fix typo in task 1 * Separate task 1 for classes using the BlueJ and Online-IDE --- Info/10/2/Datenkapselung/slides-bank.md | 15 +- Info/10/2/Datenkapselung/slides-einfuehrung.md | 164 +++++++++++++++ Info/10/2/Datenkapselung/slides-erarbeitung.md | 97 +++++++++ Info/10/2/Datenkapselung/slides-spielautomat.md | 15 +- Info/10/2/Datenkapselung/slides.md | 260 ------------------------ 5 files changed, 289 insertions(+), 262 deletions(-) create mode 100644 Info/10/2/Datenkapselung/slides-einfuehrung.md create mode 100644 Info/10/2/Datenkapselung/slides-erarbeitung.md delete mode 100644 Info/10/2/Datenkapselung/slides.md diff --git a/Info/10/2/Datenkapselung/slides-bank.md b/Info/10/2/Datenkapselung/slides-bank.md index 48c6a12f..852795f7 100644 --- a/Info/10/2/Datenkapselung/slides-bank.md +++ b/Info/10/2/Datenkapselung/slides-bank.md @@ -1,6 +1,7 @@ --- author: Florian Fischer theme: Rochester +aspectratio: 169 header-includes: | \usepackage[school]{pgf-umlcd} \usepackage{unicode-math} @@ -8,10 +9,22 @@ header-includes: | \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.md +slides-erarbeitung.md ``` diff --git a/Info/10/2/Datenkapselung/slides-einfuehrung.md b/Info/10/2/Datenkapselung/slides-einfuehrung.md new file mode 100644 index 00000000..2174a3bb --- /dev/null +++ b/Info/10/2/Datenkapselung/slides-einfuehrung.md @@ -0,0 +1,164 @@ +--- +author: Florian Fischer +theme: Rochester +aspectratio: 169 +header-includes: | + \usepackage[school]{pgf-umlcd} + \usepackage{unicode-math} + \usepackage{tikz} + \usetikzlibrary{calc} +--- + +## Wdh. Klassendiagramm + + + + + + + + + + + + + + + + + + + + +\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 diff --git a/Info/10/2/Datenkapselung/slides-erarbeitung.md b/Info/10/2/Datenkapselung/slides-erarbeitung.md new file mode 100644 index 00000000..462f3a11 --- /dev/null +++ b/Info/10/2/Datenkapselung/slides-erarbeitung.md @@ -0,0 +1,97 @@ +--- +author: Florian Fischer +theme: Rochester +aspectratio: 169 +header-includes: | + \usepackage[school]{pgf-umlcd} + \usepackage{unicode-math} + \usepackage{tikz} + \usetikzlibrary{calc} +--- + +## 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} +`.` +`.()` + +\pause + +### Beispiele in `SCHUELER` + +```java +akte.spitzname = "J"; +akte.SpitznameSetzen("J"); +``` + +## Datenkapselung + +\begin{center} +\scalebox{0.75}{ +\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 +` ;` +` ();` + +\pause + +### Beispiele in `SCHUELERAKTE` +```java +private double notenschnitt; +public String spitzname; + +private void NotenschnittSetzen(double neuerSchnitt); +``` diff --git a/Info/10/2/Datenkapselung/slides-spielautomat.md b/Info/10/2/Datenkapselung/slides-spielautomat.md index 8151813a..578dee99 100644 --- a/Info/10/2/Datenkapselung/slides-spielautomat.md +++ b/Info/10/2/Datenkapselung/slides-spielautomat.md @@ -1,6 +1,7 @@ --- author: Florian Fischer theme: Rochester +aspectratio: 169 header-includes: | \usepackage[school]{pgf-umlcd} \usepackage{unicode-math} @@ -9,9 +10,21 @@ header-includes: | --- +```{.include} +slides-einfuehrung.md +``` + +## 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`. +* Aufgabe 3: Vervollständige die Methode `NotenschnittSetzen` in der Klasse `SCHUELER`. Und merke dir d eine Beobachtungen. ```{.include} -slides.md +slides-erarbeitung.md ``` diff --git a/Info/10/2/Datenkapselung/slides.md b/Info/10/2/Datenkapselung/slides.md deleted file mode 100644 index 66e9ba84..00000000 --- a/Info/10/2/Datenkapselung/slides.md +++ /dev/null @@ -1,260 +0,0 @@ ---- -author: Florian Fischer -theme: Rochester -header-includes: | - \usepackage[school]{pgf-umlcd} - \usepackage{unicode-math} - \usepackage{tikz} - \usetikzlibrary{calc} ---- - -## Wdh. Klassendiagramm - - - - - - - - - - - - - - - - - - - - -\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} -`.` -`.()` - -\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 -` ;` -` ();` - -\pause - -### Beispiele in `SCHUELERAKTE` -```java -private double notenschnitt; -public String spitzname; - -private void NotenschnittSetzen(double neuerSchnitt); -``` -- cgit v1.2.3