aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Info/25_26/04/20/10b/schedule.md22
-rw-r--r--Info/25_26/04/20/10b/slides.md165
l---------Info/25_26/04/20/10b/topic11
l---------Info/25_26/04/20/10b/topic21
4 files changed, 189 insertions, 0 deletions
diff --git a/Info/25_26/04/20/10b/schedule.md b/Info/25_26/04/20/10b/schedule.md
new file mode 100644
index 00000000..9daa226b
--- /dev/null
+++ b/Info/25_26/04/20/10b/schedule.md
@@ -0,0 +1,22 @@
+---
+lang: de
+geometry: margin=2cm
+---
+# Wiederholung
+
+* **Klasse**: 10b
+* **Datum**: 20.04
+
+## Lernziele
+
+## Verlaufplan
+
+---------------------------------------------------------------------------------------------------
+Zeit Phase Unterrichtsgeschehen Ziel Methode Medien
+----- --------------- -------------------------------------------- ----------- ---------- ---------
+5 Orga
+
+30 Wiederholung Polymorphismus
+
+30 Datenkapselung Wiederholung / Ampel Projekt
+---------------------------------------------------------------------------------------------------
diff --git a/Info/25_26/04/20/10b/slides.md b/Info/25_26/04/20/10b/slides.md
new file mode 100644
index 00000000..7465c3a2
--- /dev/null
+++ b/Info/25_26/04/20/10b/slides.md
@@ -0,0 +1,165 @@
+---
+author: Florian Fischer
+theme: metropolis
+aspectratio: 169
+header-includes: |
+ \usepackage{bm}
+ \usepackage{import}
+---
+
+## Orga
+
+* Nächste Woche Kurzarbeit (**Heute**):
+ * (Referenzattribute) Grundwissen
+ * Felder / Arrays
+ * **Datenkapselung**
+ * **Polymorphismus**
+
+Mehr Silent Teacher Aufgaben unter:
+
+\link{https://informatik10-hap.web.app}
+
+## \faIcon{chalkboard-teacher} Wiederholung: Datenkapselung
+
+\begin{center}
+\scalebox{0.75}{
+\subimport{topic1}{capsule.tikz}
+}
+\end{center}
+
+## Datenkapselung
+
+\begin{merke}
+
+Der Grundsatz der \boldred{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 \boldred{Methoden} erfolgen.
+
+\end{merke}
+
+## 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 in Deklarationen
+\small
+**Attribute:** `<Schlüsselwort> <Datentyp> <Bezeichner>;`
+**Methoden:** `<Schlüsselwort> <Rückgabetyp> <Bezeichner>(<Parameter>) {...}`
+
+\pause
+
+### Beispiele in `SCHUELERAKTE`
+```java
+private double notenschnitt;
+public String spitzname;
+
+private void NotenschnittSetzen(double neuerSchnitt) {...}
+```
+
+## \faIcon{desktop} Arbeitsauftrag: Ampelschaltung \hfill{} 25min
+
+Eine Ampel besteht aus drei Lampen; die Phasen rot – rotgelb – grün – gelb wiederholen sich zyklisch.
+
+**Öffne** den Workspace Ampelschaltung.
+
+1. Vervollständige die Klasse `Ampel` um das fehlende Referenzattribut und die weiteren Methoden für die Ampelphasen.
+2. Vergib in den Klassen `Ampel` und `Lampe` passende Zugriffsrechte für Attribute und Methoden.
+3. Momentan besteht die Gefahr, dass die Ampel durch eine fehlerhafte Botschaft von außen in eine falsche Phase umschaltet (z.B. direkt von rot nach grün).
+Definiere eine Methode `Weiterschalten`, die abhängig von der aktuellen Phase in die korrekte Folgephase schaltet.
+Verhindere durch die Vergabe von **Zugriffsrechten**, dass Methoden für die einzelnen Phasen direkt aufgerufen werden können.
+
+## \faIcon{desktop}/\faIcon{pencil-alt} Arbeitsauftrag Tierheimverwaltung \hfill 15min
+
+\let\tightlist\relax
+* **AUFGABE 0:** Öffne das Projekt **Tierheim** und mache dich kurz damit vertraut.
+* **AUFGABE 1:** Überlege dir, wie du unterschiedliche Tiere im Tierheim speicherst und setze deine Überlegung um
+* **AUFGABE 2:** Begründe warum Pluto (Objekt der Klasse Hund) nicht ins Tierheim aufgenommen werden kann
+
+## Polymorphismus
+
+> ... ist die Eigenschaft, dass ein **Referenzattribut** nicht nur Objekte der als Datentyp angegebenen Klasse referenzieren kann, sondern auch Objekte **aller** zu dieser Klasse existierenden **Unterklassen**.
+
+## Polymorphismus
+
+\begin{tikzpicture}[scale=0.5]
+ \begin{object}[text width=3.5cm]{th1}{0,0.5}
+ \instanceOf{Tierheim}
+ \attribute{tiere[0]}
+ \attribute{tiere[1]}
+ \attribute{...}
+ \end{object}
+
+ \begin{object}[text width=4cm]{t1}{12,0}
+ \instanceOf{Tier}
+ \attribute{name="Wolle"}
+ \attribute{geschlecht="ungewiss"}
+ \end{object}
+
+ \begin{object}[text width=4cm]{h1}{12,5}
+ \instanceOf{Hund}
+ \attribute{name="Pluto" }
+ \attribute{geschlecht="maennlich"}
+ \attribute{rasse="comic"}
+ \end{object}
+
+ \only<2->{
+ \node[fill=black, circle, minimum size=0.075cm] (circle) at (2.2, -2.35) {};
+ \draw[line width=2pt, -latex] (circle) edge [bend right=15] (8, -0.5) {};
+ }
+ \only<3> {
+ \node[fill=black, circle, minimum size=0.075cm] (circle2) at (2.2, -1.4) {};
+ \draw[line width=2pt, -latex] (circle2) edge [bend left=30] (8, 4.5) {};
+ }
+\end{tikzpicture}
+
+## \faIcon{desktop}/\faIcon{pencil-alt} Arbeitsauftrag Tierheimverwaltung Fortsetzung
+
+\let\tightlist\relax
+* **AUFGABE 3:** Vervollständige die Klasse `Hund` als Spezialisierung der Klasse `Tier`
+* **AUFGABE 4:** Implementiere die Methode `Tierheim.besuchen()`{.java} und überlege dir welche Ausgaben das Programm machen wird. Überprüfe deine Vermutung in dem du das Programm ausführst.
+
+## \faIcon{pencil-alt} Polymorphismus
+
+> ... ist die Eigenschaft, dass ein **Referenzattribut** nicht nur Objekte der als Datentyp angegebenen Klasse referenzieren kann, sondern auch Objekte **aller** zu dieser Klasse existierenden **Unterklassen**.
+
+\vspace{1cm}
+
+> Wird ein **Objekt einer Unterklasse** über dieses Referenzattribut referenziert, so werden Attribute und Methoden verwendet, wie sie in **dessen Klasse** bekannt sind (und nicht die überschriebenen Methoden der Oberklasse).
+
+\pause
+
+\begin{tikzpicture}[overlay, remember picture]
+ \node[rotate=-20,scale=3] at (12, -0.5) {\Huge \boldred{!}};
+\end{tikzpicture}
+
+## \faIcon{chalkboard-teacher} Beispiel: Polymorphismus
+
+Was gibt dieses Programm aus?
+
+```java
+Tier pluto = new Hund("pluto", "maennlich", "comic");
+pluto.gibLaut();
+```
+
+\pause
+
+::: {.block}
+### Ausgabe
+`Wuff`
+:::
+
+Da der **Polymorphismus** dafür sorgt, dass die Methode ausgeführt wird, so wie sie in der Unterklasse `Hund` bekannt ist.
diff --git a/Info/25_26/04/20/10b/topic1 b/Info/25_26/04/20/10b/topic1
new file mode 120000
index 00000000..0fe9095b
--- /dev/null
+++ b/Info/25_26/04/20/10b/topic1
@@ -0,0 +1 @@
+../../../../10/2/Datenkapselung \ No newline at end of file
diff --git a/Info/25_26/04/20/10b/topic2 b/Info/25_26/04/20/10b/topic2
new file mode 120000
index 00000000..96d5be61
--- /dev/null
+++ b/Info/25_26/04/20/10b/topic2
@@ -0,0 +1 @@
+../../../../10/2/Polymorphismus \ No newline at end of file