diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-04-19 19:02:51 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-04-19 19:02:51 +0200 |
| commit | 0f29f3954fdb5326367e47be407e0bba0fa9ab98 (patch) | |
| tree | 2ee105207db4679ec49a1313bb096e072db50dd0 | |
| parent | c38d85decda449be5b7e557f6052d8ed3bd41cdc (diff) | |
| download | unterricht-0f29f3954fdb5326367e47be407e0bba0fa9ab98.tar.gz unterricht-0f29f3954fdb5326367e47be407e0bba0fa9ab98.zip | |
add upcoming lesson in 10b
| -rw-r--r-- | Info/25_26/04/20/10b/schedule.md | 22 | ||||
| -rw-r--r-- | Info/25_26/04/20/10b/slides.md | 165 | ||||
| l--------- | Info/25_26/04/20/10b/topic1 | 1 | ||||
| l--------- | Info/25_26/04/20/10b/topic2 | 1 |
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 |
