diff --git a/verfahren.pdf b/verfahren.pdf index 7a5752e..6b8ebe5 100644 Binary files a/verfahren.pdf and b/verfahren.pdf differ diff --git a/verfahren.tex b/verfahren.tex index 4d793f2..2fe4cbb 100644 --- a/verfahren.tex +++ b/verfahren.tex @@ -139,10 +139,34 @@ \end{enumerate} \subsection{Einfachvererbung} - -\subsubsection{Dynamischer Methodenaufruf} - -\subsubsection{Casts/Typprüfung zur Laufzeit} +\begin{itemize} + \item Attribute aus Oberklasse \texttt{O} liegen auch in Unterklasse \texttt{U} am selben statischen Offset zum Objektanfang $\rightarrow$ einfacher, statischer Zugriff + \item Objekt enthält Zeiger auf Klassendeskriptor + \item Klassendeskriptor enthält:\begin{itemize} + \item V-Table mit Adressen der Funktionen(Indizes in Tabelle wie Attribute) + \item Verweis auf Klassendeskriptor der Elternklasse + \end{itemize} + \item Dynamischer Methodenaufruf: \begin{enumerate} + \item Verfolgung des Zeigers zum Klassendeskriptor + \item Index in V-Table im Klassendeskriptor ist für auszuführende Methode bereits vom Compiler bekannt + \item Indirekter Sprung + \end{enumerate} + \item Casts: \begin{itemize} + \item Upcasts können vom Übersetzer verifiziert werden + \item Downcasts müssen zur Laufzeit überprüft werden:\begin{itemize} + \item ohne Display: \begin{enumerate} + \item Verfolgung des Zeigers zum Klassendeskriptor + \item Vergleich des Klassendeskriptors des Objekts mit Klassendeskriptor der Zielklasse + \item Solange keine Übereinstimmung, Vergleich mit Klassendeskriptor der Elternklasse + \item Beim Erreichen von gesuchtem Klassendeskriptor ist Casts erlaubt, ansonsten Laufzeitfehler + \end{enumerate} + \item mit Display: \begin{enumerate} + \item (maximale) Vererbungstiefe statisch feststellbar $\rightarrow$ pro Klasse kann Array aus Oberklassen angelegt werden + \item Zur Überprüfung in Array vergleichen, ob an (statisch aus der Schachtelungstiefe bekannter) Position der Zielklasse wirklich Zielklasse eingetragen ist + \end{enumerate} + \end{itemize} + \end{itemize} +\end{itemize} \subsection{Interfaces}