aboutsummaryrefslogtreecommitdiff
path: root/Info/10/2/Polymorphismus/handout.tex
blob: b3b9bc704ea77925b4d8388df65cca5b093d2b79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
\documentclass{handout}

\setlength\parindent{0pt}

\begin{document}

\textbf{AUFGABE 0:} Mache dich kurz mit dem Projekt Tierheim in der Online-IDE vertraut. \\
Wie wird das Konzept der Vererbung im Code realisiert? \\[5mm]

Wie wird der Konstruktor der Klasse Katze implementiert? \\[5mm]

Welche Objekte sind bereits vorhanden? Führe das Programm aus. \\[5mm]

\textbf{AUFGABE 1:} Überlege dir wie du unterschiedliche Tiere im Tierheim speicherst und setze deine Überlegung um. \\
Welches Referenzattribut benötigt die Klasse Tierheim? \\[5mm]

\textbf{AUFGABE 2:} Begründe warum Pluto (Objekt der Klasse Hund) nicht ins Tierheim aufgenommen werden kann. \\[5mm]

\begin{multicols}{2}
\begin{tikzpicture}[scale=0.45]
  \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]{h1}{12,0}
    \instanceOf{Tier}
    \attribute{name="Wolle"}
    \attribute{geschlecht="ungewiss"}
  \end{object}

  \begin{object}[text width=4cm]{t1}{12,5}
    \instanceOf{Hund}
    \attribute{name="Pluto" }
    \attribute{geschlecht="maennlich"}
    \attribute{rasse="comic"}
  \end{object}

  \node[fill=black, circle, minimum size=0.05cm] (circle) at (2.2, -1.4) {};
  \draw[line width=2pt, -latex, draw=blue!80] (circle) edge [bend left=30] (8, 4.5) {};
  \node[fill=black, circle, minimum size=0.05cm] (circle2) at (2.2, -2.35) {};
  \draw[line width=2pt, -latex, draw=red!80] (circle2) edge [bend right=15] (8, -0.5) {};
\end{tikzpicture}

\columnbreak

Polymorphismus \textit{ist die Eigenschaft, dass ein \textbf{Referenzattribut} nicht nur Objekte der als Datentyp angegebenen Klasse referenzieren kann, sondern auch Objekte \textbf{aller} zu dieser Klasse existierenden \textbf{Unterklassen}.}

\textit{Wird ein Objekt einer \textbf{Unterklasse} über dieses Referenzattribut referenziert, so werden Attribute und Methoden verwendet, wie sie in \textbf{seiner Klasse} bekannt sind (und nicht die überschriebenen Methoden der Oberklasse).}
\end{multicols}


\textbf{AUFGABE 3:} Vervollständige die Klasse Hund als Spezialisierung der Klasse Tier.

\textbf{AUFGABE 4:} Implementiere die Methode \texttt{Tierheim.besuchen()} und überlege dir welche Ausgaben das Programm machen wird. Überprüfe deine Vermutung in dem du das Programm ausführst.
\end{document}