\documentclass{handout} \csname endofdump\endcsname \usepackage{minted} \usepackage{wrapfig} \geometry{top=0.5cm} \setlength\parindent{10pt} \title{Polymorphismus} \begin{document} \begin{multicols}{2} \textbf{AUFGABE 0:} \begin{itemize} \item Öffne das Projekt \textbf{Tierheim} und mache dich kurz damit vertraut. \item Erkläre wie das Konzept der Vererbung im Code realisiert wird? \item Markiere die in der Klasse \texttt{Katze} verwendeten Schlüsselwörter der Vererbung? \item Gib an welche Objekte beim Ausführen der \texttt{main}-Methode der Klasse \texttt{Tierheim} erzeugt werden? Führe die Methode aus. \end{itemize} \columnbreak \begin{minted}{java} class Katze extends Tier { public Katze(String neuerName, String neuesGeschlecht) { super(neuerName, neuesGeschlecht); } public void lautAusgeben() { System.out.println("Miau!Miau!"); } } \end{minted} \end{multicols} \vspace{-1mm} \noindent\textbf{AUFGABE 1:} Überlege dir wie du unterschiedliche Tiere im Tierheim speicherst und setze deine Überlegung um. Welches Referenzattribut benötigt die Klasse \texttt{Tierheim}? \\[1mm] \kariert{3} \noindent\textbf{AUFGABE 2:} Begründe warum Pluto (Objekt der Klasse \texttt{Hund}) nicht ins Tierheim aufgenommen werden kann. \\[1mm] \kariert{7} \begin{defbox}{Polymorphismus} % \begin{tabularx}{\textwidth}{p{0.35\textwidth} p{0.03\textwidth} p{0.6\textwidth}} % \vspace{0.1mm} \begin{wrapfigure}{4}{0.55\textwidth} \begin{tikzpicture}[scale=0.45] \begin{object}[text width=3.5cm]{th1}{0,3.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,6.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.7, 1.6) {}; \draw[line width=2pt, -latex, draw=blue!80] (circle) edge [bend left=30] (8, 6) {}; \node[fill=black, circle, minimum size=0.05cm] (circle2) at (2.7, 0.55) {}; \draw[line width=2pt, -latex, draw=red!80] (circle2) edge [bend right=15] (8, -0.5) {}; \end{tikzpicture}% \\ % \end{tabularx} \end{wrapfigure} ... 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}.% & & \vspace{2mm} Wird ein Objekt einer \textbf{Unterklasse} über dieses Referenzattribut referenziert, so werden Attribute und Methoden verwendet, wie sie in \textbf{dessen Klasse} bekannt sind (und nicht die überschriebenen Methoden der Oberklasse). \end{defbox} \noindent\textbf{AUFGABE 3:} Vervollständige die Klasse \texttt{Hund} als Spezialisierung der Klasse \texttt{Tier}.\\ \noindent\textbf{AUFGABE 4:} \begin{itemize} \item Implementiere die Methode \mintinline{java}{Tierheim.besuchen()}. \item Überlege dir welche Ausgaben das Programm machen wird. \begin{tcolorbox}[title=Ausgabe] \psolution{\Large Wuff} \hrule \end{tcolorbox} \item Überprüfe deine Vermutung in dem du das Programm ausführst. \end{itemize} \end{document}