mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-26 06:48:04 +02:00
Remove trailing spaces
The commands find . -type f -name '*.md' -exec sed --in-place 's/[[:space:]]\+$//' {} \+ and find . -type f -name '*.tex' -exec sed --in-place 's/[[:space:]]\+$//' {} \+ were used to do so.
This commit is contained in:
parent
c578b25d2f
commit
7740f0147f
538 changed files with 3496 additions and 3496 deletions
|
@ -1,5 +1,5 @@
|
|||
\documentclass[a4paper,landscape,9pt]{scrartcl}
|
||||
\usepackage[ngerman]{babel}
|
||||
\usepackage[ngerman]{babel}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{amssymb,amsmath,amsfonts}
|
||||
\usepackage{multicol}
|
||||
|
@ -14,7 +14,7 @@
|
|||
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
|
||||
\usepackage{calc}
|
||||
|
||||
\geometry{a4paper,left=10mm,right=10mm, top=1cm, bottom=2cm}
|
||||
\geometry{a4paper,left=10mm,right=10mm, top=1cm, bottom=2cm}
|
||||
|
||||
\usepackage{fancyhdr}
|
||||
\pagestyle{fancy}
|
||||
|
@ -26,7 +26,7 @@
|
|||
\begin{document}
|
||||
\title{Email-Liste}
|
||||
\author{Martin Thoma}
|
||||
|
||||
|
||||
\begin{tabularx}{\linewidth}{l|cc|X|X|X|X}
|
||||
&\mars & \venus & Vorname Nachname & Matrikelnummer & Studiengang & E-Mail Adresse\\
|
||||
\hline
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
\usepackage{algorithm,algpseudocode}
|
||||
\usepackage{minted} % needed for the inclusion of source code
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{shapes,snakes,calc,patterns}
|
||||
\usetikzlibrary{shapes,snakes,calc,patterns}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{menukeys}
|
||||
\usepackage{braket}
|
||||
|
@ -64,10 +64,10 @@
|
|||
\subsection{Formalien}
|
||||
\begin{frame}{Formalien}
|
||||
\begin{itemize}
|
||||
\item Die Folien werden online gestellt $ \Rightarrow $
|
||||
\item Die Folien werden online gestellt $ \Rightarrow $
|
||||
\textbf{Mitschreiben nicht nötig}
|
||||
\item $\rightarrow$ \href{http://martin-thoma.com/programmieren-tutorium}{martin-thoma.com/programmieren-tutorium}
|
||||
\item Fragen immer sofort stellen – und traut euch!\\
|
||||
\item Fragen immer sofort stellen – und traut euch!\\
|
||||
Wenn nicht hier, wo dann?
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -164,7 +164,7 @@
|
|||
\draw (2, 0) node[longName] (A) {Modul: Programmieren}
|
||||
(6, 0) node[explanation] (X) {
|
||||
\begin{minipage}{0.9\textwidth}
|
||||
\tiny
|
||||
\tiny
|
||||
\begin{itemize}
|
||||
\item 5 ECTS
|
||||
\end{itemize}
|
||||
|
@ -179,7 +179,7 @@
|
|||
(2,-3.5) node[algebraicName, purple] (H) {Übungsschein}
|
||||
(1.8,-4.35) node[explanation] (X) {
|
||||
\begin{minipage}{\textwidth}
|
||||
\tiny
|
||||
\tiny
|
||||
\begin{itemize} \itemsep-0.2em
|
||||
\item Muss bestanden werden
|
||||
\item Keine Note
|
||||
|
@ -190,7 +190,7 @@
|
|||
(6,-3.5) node[algebraicName, purple] (I) {Klausur}
|
||||
(5.8,-4.3) node[explanation] (X) {
|
||||
\begin{minipage}{\textwidth}
|
||||
\tiny
|
||||
\tiny
|
||||
\begin{itemize} \itemsep-0.2em
|
||||
\item Muss bestanden werden
|
||||
\item Abschlussnote ergibt Modulnote
|
||||
|
@ -302,7 +302,7 @@
|
|||
\item[$\Rightarrow$] Sicherungskopie für euch
|
||||
\item[$\Rightarrow$] Eine vergessene Deadline ist nicht ganz so ärgerlich
|
||||
\end{itemize}
|
||||
\item Rechnet nicht mit der Erreichbarkeit des Praktomaten
|
||||
\item Rechnet nicht mit der Erreichbarkeit des Praktomaten
|
||||
kurz vor der Deadline
|
||||
\item \textbf{Disclaimer nicht vergessen!}
|
||||
\end{itemize}
|
||||
|
@ -375,16 +375,16 @@
|
|||
\subsection{Begriffe}
|
||||
\begin{frame}{Begriffe}
|
||||
\begin{block}{JDK}
|
||||
Das Java Development Kit (JDK) ist eines der von
|
||||
Das Java Development Kit (JDK) ist eines der von
|
||||
Java-Entwicklern meistgenutzten Java-SDKs.\\
|
||||
$[\dots]$ Nun wird eine angepasste freie Version als ihr nunmehr
|
||||
$[\dots]$ Nun wird eine angepasste freie Version als ihr nunmehr
|
||||
offizieller Nachfolger unter dem Namen OpenJDK weitergeführt.
|
||||
\end{block}
|
||||
|
||||
\begin{block}{JRE}
|
||||
Die Java-Laufzeitumgebung (englisch: Java Runtime Environment, kurz JRE)
|
||||
ist die Laufzeitumgebung der Java-Technik. Mit ihr werden
|
||||
Programme (Java-Anwendungen) weitgehend unabhängig vom
|
||||
Die Java-Laufzeitumgebung (englisch: Java Runtime Environment, kurz JRE)
|
||||
ist die Laufzeitumgebung der Java-Technik. Mit ihr werden
|
||||
Programme (Java-Anwendungen) weitgehend unabhängig vom
|
||||
darunter liegenden Betriebssystem ausgeführt.
|
||||
\end{block}
|
||||
|
||||
|
|
|
@ -226,8 +226,8 @@
|
|||
\section{Praxis}
|
||||
\subsection{Aufgabe 1a)}
|
||||
\begin{frame}{Aufgabe 1a)}
|
||||
Entwerfen Sie eine Klasse Baby mit den Attributen Name, Gewicht,
|
||||
Größe und Lautstärke (eventuell fallen Ihnen weitere sinnvolle
|
||||
Entwerfen Sie eine Klasse Baby mit den Attributen Name, Gewicht,
|
||||
Größe und Lautstärke (eventuell fallen Ihnen weitere sinnvolle
|
||||
Attribute ein).
|
||||
\end{frame}
|
||||
|
||||
|
@ -256,7 +256,7 @@
|
|||
\begin{frame}{Aufgabe 1d)}
|
||||
Erweitern Sie die Klasse \texttt{Baby} um ein Attribut "`Geschlecht"'.\\
|
||||
|
||||
Jedes Mädchen ohne Taufe ({\tiny also ohne weitere Namenszuweisung})
|
||||
Jedes Mädchen ohne Taufe ({\tiny also ohne weitere Namenszuweisung})
|
||||
soll bei der Geburt ({\tiny also der Objekterstellung}) den Namen "`Anna"'
|
||||
bekommen, jeder Junge den Namen "`Bob"'.
|
||||
\end{frame}
|
||||
|
|
|
@ -202,9 +202,9 @@ Deklarieren und initialisieren:
|
|||
\begin{frame}{Antipattern: Yoda-Conditions}
|
||||
\includegraphics[width=60mm]{yoda-condition.png}\\
|
||||
\begin{quote}
|
||||
Using \myCode{if(constant == variable)} instead of
|
||||
\myCode{if(variable == constant)}, like \myCode{if(4 == foo)}.
|
||||
Because it's like saying ``if blue is the sky'' or ``if tall
|
||||
Using \myCode{if(constant == variable)} instead of
|
||||
\myCode{if(variable == constant)}, like \myCode{if(4 == foo)}.
|
||||
Because it's like saying ``if blue is the sky'' or ``if tall
|
||||
is the man''.
|
||||
\end{quote}
|
||||
Source: \href{http://www.codinghorror.com/blog/2012/07/new-programming-jargon.html}{codinghorror.com}\\
|
||||
|
@ -282,7 +282,7 @@ Source: \href{http://www.codinghorror.com/blog/2012/07/new-programming-jargon.ht
|
|||
\end{itemize}
|
||||
\end{block}
|
||||
\only<5->{
|
||||
Ab nun:
|
||||
Ab nun:
|
||||
\begin{itemize}
|
||||
\item Attribute sind (fast) immer private
|
||||
\item Methoden können auch private sein
|
||||
|
@ -304,7 +304,7 @@ Source: \href{http://www.codinghorror.com/blog/2012/07/new-programming-jargon.ht
|
|||
\end{alertblock}
|
||||
\only<2->{
|
||||
\begin{block}{Auch hierzu gibt es aber eine Lösung:}
|
||||
Mit \textbf{getter-Methoden} kann man den Lesezugriff auf Attribute
|
||||
Mit \textbf{getter-Methoden} kann man den Lesezugriff auf Attribute
|
||||
wieder erlauben.
|
||||
\end{block}
|
||||
}
|
||||
|
|
|
@ -128,9 +128,9 @@
|
|||
\item Viel (fremden) Code ansehen hilft
|
||||
\item Eigenen Code nach Jahren ansehen hilft
|
||||
\item JEDER Kommentar ist für Java-Entwickler gedacht
|
||||
\item[$\Rightarrow$] Kommentare à la "`Methode"' oder
|
||||
\item[$\Rightarrow$] Kommentare à la "`Methode"' oder
|
||||
"`Methodensignatur"' sind nutzlos!\\
|
||||
\item Javadoc-Kommentare sind für Entwickler, die nichts von
|
||||
\item Javadoc-Kommentare sind für Entwickler, die nichts von
|
||||
eurem Code sehen können, ihn aber dennoch nutzen wollen
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -154,7 +154,7 @@
|
|||
|
||||
\begin{frame}{Kommentare: Beispiel 2}
|
||||
\begin{itemize}
|
||||
\item Zeile 1 \& 2 bieten einem Entwickler nicht mehr Informationen
|
||||
\item Zeile 1 \& 2 bieten einem Entwickler nicht mehr Informationen
|
||||
$\Rightarrow$ nutzlos
|
||||
\item Sonst okay
|
||||
\item Bitte nicht \myCode{chainwheel0}, sondern \myCode{chainwheel}
|
||||
|
@ -263,7 +263,7 @@
|
|||
\subsection{Aussagekräftige Variablen!}
|
||||
\begin{frame}{Aussagekräftige Variablen!}
|
||||
In Zukunft:
|
||||
-1 P. bis -5 P. für Variablennamen wie "`Kr"' für Kettenräder oder
|
||||
-1 P. bis -5 P. für Variablennamen wie "`Kr"' für Kettenräder oder
|
||||
"`Pr"' für Preis!
|
||||
\end{frame}
|
||||
|
||||
|
@ -369,7 +369,7 @@
|
|||
\end{frame}
|
||||
\begin{frame}{Javadoc: Codierung}
|
||||
\begin{itemize}[<+->]
|
||||
\item \quem{} ist ein sicheres Zeichen, dass was bei der
|
||||
\item \quem{} ist ein sicheres Zeichen, dass was bei der
|
||||
Zeichenkodierung schief ging.
|
||||
\item Bitte verwendet \textbf{immer} UTF-8!
|
||||
\item Eclipse: \menu{Window > Preferences > General > Workspace > Text file encoding > UTF-8}
|
||||
|
@ -419,7 +419,7 @@ Keine Whitespaces nach
|
|||
Welche Klassen / Methoden brauche ich?
|
||||
\item \textbf{Konstrollstrukturen}:
|
||||
\begin{itemize}
|
||||
\item \myCode{if (<Bedingung>) \{ \dots \}}
|
||||
\item \myCode{if (<Bedingung>) \{ \dots \}}
|
||||
\item \myCode{while (<Bedingung>) \{ \dots \}}
|
||||
\item \myCode{for (<Initialisierung>, <Bedingung>, <Update>) \{\dots\}}
|
||||
\item \myCode{switch (<Variable>) \{case <Wert>:\}}
|
||||
|
@ -496,7 +496,7 @@ Keine Whitespaces nach
|
|||
\subsection{Wie werde ich besser?}
|
||||
\begin{frame}{Wie werde ich besser?}
|
||||
\begin{itemize}
|
||||
\item \href{http://projecteuler.net/}{ProjectEuler.net}:
|
||||
\item \href{http://projecteuler.net/}{ProjectEuler.net}:
|
||||
401 Aufgaben jeder Schwierigkeitsstufe
|
||||
\item Anderen Code anschauen
|
||||
\item Probleme am PC lösen
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
|
||||
\begin{block}{Ausgabe}
|
||||
myArray1: geh du alter sack\\
|
||||
myArray2: geh du alter sack
|
||||
myArray2: geh du alter sack
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
|
@ -106,7 +106,7 @@
|
|||
\begin{alertblock}{Lehre aus dem Quiz}
|
||||
Beim kopieren von Objekten (alles außer \myCode{boolean}, \myCode{byte},
|
||||
\myCode{int}, \myCode{long}, \myCode{float}, \myCode{double} -
|
||||
oder einfacher, alles was mit einem Großbuchstaben beginnt)
|
||||
oder einfacher, alles was mit einem Großbuchstaben beginnt)
|
||||
ist Vorsicht geboten.
|
||||
\end{alertblock}
|
||||
\end{frame}
|
||||
|
@ -120,7 +120,7 @@
|
|||
\subsection{Magic Numbers}
|
||||
\begin{frame}{Magic Numbers}
|
||||
\begin{alertblock}{Definition: Magic numbers}
|
||||
Unique values with unexplained meaning or multiple occurrences
|
||||
Unique values with unexplained meaning or multiple occurrences
|
||||
which could (preferably) be replaced with named constants.
|
||||
\end{alertblock}
|
||||
|
||||
|
@ -158,7 +158,7 @@
|
|||
|
||||
\subsection{Flughafenkürzel}
|
||||
\begin{frame}{Flughafenkürzel: Aufgabe}
|
||||
Wir haben ein Array mit IATA-Codes (Flughafenkürzel) gegeben und
|
||||
Wir haben ein Array mit IATA-Codes (Flughafenkürzel) gegeben und
|
||||
möchten den Inhalt auf der Konsole ausgeben.
|
||||
\end{frame}
|
||||
|
||||
|
@ -179,7 +179,7 @@
|
|||
\end{frame}
|
||||
|
||||
\begin{frame}{Flughafenkürzel: Umgekehrte Reihenfolge}
|
||||
Modifiziere das Programm so, dass die Kürzel in umgekehrter
|
||||
Modifiziere das Programm so, dass die Kürzel in umgekehrter
|
||||
Reihenfolge ausgegeben werden.
|
||||
\begin{block}{Lösung von vorhin}
|
||||
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{IataCode.java}
|
||||
|
@ -191,7 +191,7 @@
|
|||
\end{frame}
|
||||
|
||||
\begin{frame}{Flughafenkürzel: Jumping}
|
||||
Modifiziere das Programm so, dass nur jedes dritte Element
|
||||
Modifiziere das Programm so, dass nur jedes dritte Element
|
||||
ausgegeben wird.
|
||||
\begin{block}{Lösung von vorhin}
|
||||
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{IataCode.java}
|
||||
|
@ -237,9 +237,9 @@
|
|||
\begin{frame}{Praktomat}
|
||||
\begin{itemize}
|
||||
\item Fragen frühzeitig stellen!
|
||||
\item Wenn ihr Pakete verwendet, am Anfang eurer Dateien
|
||||
\item Wenn ihr Pakete verwendet, am Anfang eurer Dateien
|
||||
also \myCode{package AB\_2;} oder ähnliches steht,
|
||||
müsst ihr die korrekte Ordnerstruktur in den Praktomat
|
||||
müsst ihr die korrekte Ordnerstruktur in den Praktomat
|
||||
hochladen
|
||||
\item In Eclipse im Fenster "`Navigation"' den Ordner "`src"'
|
||||
auswählen
|
||||
|
|
|
@ -86,7 +86,7 @@
|
|||
\subsection{Nachbesprechung ÜB 2}
|
||||
\begin{frame}{Allgmeines}
|
||||
\begin{block}{Musterlösung}
|
||||
Inoffizielle Musterlösung von Simon und mir ist unter
|
||||
Inoffizielle Musterlösung von Simon und mir ist unter
|
||||
\href{http://goo.gl/BfA6i}{http://goo.gl/BfA6i} erhältlich.\\
|
||||
Bitte dort anschauen.
|
||||
\end{block}
|
||||
|
@ -114,19 +114,19 @@
|
|||
\begin{frame}{Allgemeines}
|
||||
\begin{block}{Genau lesen}
|
||||
\begin{itemize}[<+->]
|
||||
\item \textbf{A.1.1 Konstruktor von Bike}: "`Modifizieren Sie
|
||||
den Konstruktor der Klasse Bike, indem Sie aus der
|
||||
Signatur das Argument, nach dem bisher der Preis
|
||||
\item \textbf{A.1.1 Konstruktor von Bike}: "`Modifizieren Sie
|
||||
den Konstruktor der Klasse Bike, indem Sie aus der
|
||||
Signatur das Argument, nach dem bisher der Preis
|
||||
gesetzt wird, entfernen."'
|
||||
\item \textbf{A.1.2 Setter für Gears} "`Schreiben Sie den
|
||||
Konstruktor so um, dass er die Methode setSprockets
|
||||
benutzt, um einen konsistenten Anfangszustand zu
|
||||
\item \textbf{A.1.2 Setter für Gears} "`Schreiben Sie den
|
||||
Konstruktor so um, dass er die Methode setSprockets
|
||||
benutzt, um einen konsistenten Anfangszustand zu
|
||||
garantieren."'
|
||||
\item \textbf{A.2.1 Tribonacci-Folge}: "`Geben Sie \textbf{nur} die
|
||||
siebenunddreißigste Tribonacci-Zahl auf der Konsole
|
||||
\item \textbf{A.2.1 Tribonacci-Folge}: "`Geben Sie \textbf{nur} die
|
||||
siebenunddreißigste Tribonacci-Zahl auf der Konsole
|
||||
aus."'
|
||||
\item[$\Rightarrow$] Es werden automatische Tests durchgeführt.
|
||||
Stimmt die Ausgabe nicht exakt - also jedes einzelne
|
||||
Stimmt die Ausgabe nicht exakt - also jedes einzelne
|
||||
(Leer)zeichen -, schlägt der Test fehl.
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
@ -162,7 +162,7 @@
|
|||
Nicht jede Zahl kann als Gleitkomma-Zahl dargestellt werden:
|
||||
\includegraphics[height=50mm]{Gleitkommazahlen.png}\\
|
||||
\tiny{Quelle: \href{http://de.wikipedia.org/wiki/Datei:Gleitkommazahlen.svg}{de.wikipedia.org/wiki/Datei:Gleitkommazahlen.svg}}\\
|
||||
|
||||
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
@ -185,10 +185,10 @@
|
|||
\begin{itemize}[<+->]
|
||||
\item Es gibt für jede Teilaufgabe ein Punktekontingent
|
||||
\item Bearbeitet ihr eine Teilaufgabe nicht, ziehe ich alle Punkte ab
|
||||
\item Bearbeitet ihr einen Teil einer Teilaufgabe nicht, ziehe
|
||||
ich mindestens so viele Punkte ab, wie derjenige mit dem
|
||||
\item Bearbeitet ihr einen Teil einer Teilaufgabe nicht, ziehe
|
||||
ich mindestens so viele Punkte ab, wie derjenige mit dem
|
||||
höchstem Abzug abgezogen bekommen hat
|
||||
\item Wenn der Code nicht das tut, was gefordert wird, kann ich
|
||||
\item Wenn der Code nicht das tut, was gefordert wird, kann ich
|
||||
auch alles abziehen
|
||||
\item[$\Rightarrow$] Nein, es bringt keinen Vorteil
|
||||
\end{itemize}
|
||||
|
@ -219,7 +219,7 @@
|
|||
\begin{itemize}
|
||||
\item Pakete werden klein geschrieben
|
||||
\item Pakete können "`Unterpakete"' haben. Dies wird durch
|
||||
einen Punkt angedeutet:
|
||||
einen Punkt angedeutet:
|
||||
\begin{itemize}
|
||||
\item \href{http://docs.oracle.com/javase/7/docs/api/overview-summary.html}{Offizielle Pakete}:
|
||||
\item \href{http://docs.oracle.com/javase/7/docs/api/java/io/package-summary.html}{java.io}
|
||||
|
@ -237,7 +237,7 @@
|
|||
\myCode{public} & \cmark & \cmark & \cmark & \cmark \\
|
||||
\myCode{protected} & \cmark & \cmark & \cmark & \xmark \\
|
||||
no modifier & \cmark & \cmark & \xmark & \xmark \\
|
||||
\myCode{private} & \cmark & \xmark & \xmark & \xmark
|
||||
\myCode{private} & \cmark & \xmark & \xmark & \xmark
|
||||
\end{tabular}
|
||||
|
||||
\small{Weitere Informationen: \href{http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html}{Controlling Access to Members of a Class}}
|
||||
|
@ -245,7 +245,7 @@
|
|||
\begin{block}{Tipp}
|
||||
\myCode{private} macht fast immer Sinn. Wenn ihr nicht wisst,
|
||||
ob ihr \myCode{private} oder \myCode{protected} nehmen sollt,
|
||||
nehmt protected. Kein modifier macht selten Sinn. Das sieht
|
||||
nehmt protected. Kein modifier macht selten Sinn. Das sieht
|
||||
so aus, als ob ihr es dem Zufall überlasst.
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
@ -255,14 +255,14 @@
|
|||
Foreach \dots
|
||||
\begin{itemize}[<+->]
|
||||
\item wird in Java-Kreisen manchmal auch "`Enhanced for loop"' genannt
|
||||
\item geht alle Elemente einer
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html}{Collection}
|
||||
\item geht alle Elemente einer
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html}{Collection}
|
||||
durch zu gehen (genauer: \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html}{Iterable})
|
||||
\item sollte verwendet werden, wenn man es verwenden kann
|
||||
\item ist auch in der \href{http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html}{Dokumentation} (Nur in 1.5?)
|
||||
und im \href{http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html}{Tutorial}
|
||||
\item ist in der \href{http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html\#jls-14.14.2}{JLS SE7} spezifiziert
|
||||
\item ist Teil des \href{http://docs.oracle.com/javase/tutorial/extra/certification/javase-7-programmer1.html}{Programmer Level I Exams}
|
||||
\item ist Teil des \href{http://docs.oracle.com/javase/tutorial/extra/certification/javase-7-programmer1.html}{Programmer Level I Exams}
|
||||
für das "`Programmer Language Certification"'
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -302,7 +302,7 @@
|
|||
\end{itemize}
|
||||
\begin{alertblock}{Achtung!}
|
||||
Der Algorithmus muss modifiziert werden. Durch die Modifikationen entspricht
|
||||
der Algorithmus nicht mehr den Varianten, die sich im Internet finden lassen.
|
||||
der Algorithmus nicht mehr den Varianten, die sich im Internet finden lassen.
|
||||
Ohne diese Modifikationen kann ich euch keine Punkte geben!
|
||||
\end{alertblock}
|
||||
\end{itemize}
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
\end{itemize}
|
||||
\pause[\thebeamerpauses]
|
||||
\begin{alertblock}{Achtung}
|
||||
Trotzdem mit \myCode{abc.equals(def);} vergleichen! Nur so
|
||||
Trotzdem mit \myCode{abc.equals(def);} vergleichen! Nur so
|
||||
ist garantiert, dass ihr auf Gleichheit (und nicht nur auf
|
||||
"`Selbstheit"' vergleicht).
|
||||
\end{alertblock}
|
||||
|
@ -58,8 +58,8 @@
|
|||
\item Problem: Es tritt ein falsches Ergebnis auf, es ist
|
||||
aber nicht klar warum.
|
||||
\item Lösung: Man macht Zusicherungen (engl. assertions)
|
||||
\item Man überlegt sich also, welche Variablen an
|
||||
krischen Stellen welche Werte oder Beziehungen
|
||||
\item Man überlegt sich also, welche Variablen an
|
||||
krischen Stellen welche Werte oder Beziehungen
|
||||
zueinander haben sollen
|
||||
\end{itemize}
|
||||
\pause[\thebeamerpauses]
|
||||
|
@ -101,7 +101,7 @@
|
|||
\begin{itemize}[<+->]
|
||||
\item Ihr wollt euch Druckaufträge speichern
|
||||
\item Funktioniert mit Array
|
||||
\item Problem:
|
||||
\item Problem:
|
||||
\begin{itemize}
|
||||
\item Ihr belegt immer konstant viel Speicher
|
||||
\item Eventuell braucht ihr mehr, eventuell weniger Speicher
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
|
||||
\begin{frame}{Erklärung}
|
||||
\begin{itemize}
|
||||
\item Zeile 2 und 3: \myCode{sound} im Konstruktor von \myCode{Cat} ist eine
|
||||
\item Zeile 2 und 3: \myCode{sound} im Konstruktor von \myCode{Cat} ist eine
|
||||
lokale Variable, kein Attribut
|
||||
\item In Java werden nur Methoden vererbt
|
||||
\begin{itemize}
|
||||
|
@ -127,7 +127,7 @@
|
|||
\begin{frame}{Beispiel}
|
||||
Wo kann Vererbung nützlich sein?
|
||||
\begin{itemize}[<+->]
|
||||
\item Oberklasse Liste, Unterklassen SinglyLinkedList und
|
||||
\item Oberklasse Liste, Unterklassen SinglyLinkedList und
|
||||
DoubleLinkedList
|
||||
\begin{itemize}
|
||||
\item \myCode{contains()} ist gleich
|
||||
|
@ -135,7 +135,7 @@
|
|||
\item \myCode{remove()} ist unterschiedlich
|
||||
\end{itemize}
|
||||
\item Oberklasse Animal, Unterklassen Säugetier, Tiger, Schlange, Bär, \dots
|
||||
\item Brettspiele:
|
||||
\item Brettspiele:
|
||||
\begin{itemize}
|
||||
\item Klasse Spielbrett; Unterklassen: Schachbrett, Dame-Brett, Mensch-ärgere-dich-nicht
|
||||
\item Klasse Spielfigur; Unterklassen: Bauer, Dame, Springer, Turm
|
||||
|
@ -160,11 +160,11 @@
|
|||
|
||||
\begin{frame}{Allgemeines}
|
||||
\begin{block}{\href{http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html\#jls-8.4.8}{JLS 8.4.8}}
|
||||
A class C inherits from its direct superclass and direct
|
||||
superinterfaces all abstract and non-abstract methods of the
|
||||
superclass and superinterfaces that are public, protected, or
|
||||
declared with default access in the same package as C, and are
|
||||
neither overridden (§8.4.8.1) nor hidden (§8.4.8.2) by a
|
||||
A class C inherits from its direct superclass and direct
|
||||
superinterfaces all abstract and non-abstract methods of the
|
||||
superclass and superinterfaces that are public, protected, or
|
||||
declared with default access in the same package as C, and are
|
||||
neither overridden (§8.4.8.1) nor hidden (§8.4.8.2) by a
|
||||
declaration in the class.
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
@ -241,17 +241,17 @@
|
|||
\end{frame}
|
||||
\begin{frame}{Allgemeines}
|
||||
\begin{itemize}[<+->]
|
||||
\item \myCode{\href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html\#charAt(int)}{char charAt(int index)}}:
|
||||
\item \myCode{\href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html\#charAt(int)}{char charAt(int index)}}:
|
||||
Returns the char value at the specified index.
|
||||
\item \myCode{\href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html\#matches(java.lang.String)}{public boolean matches(String regex)}}
|
||||
Tells whether or not this string matches the given regular expression.
|
||||
\item \myCode{\href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html\#substring(int, int)}{String substring(int beginIndex,
|
||||
int endIndex)}} Returns a new string that is a substring of this string.
|
||||
int endIndex)}} Returns a new string that is a substring of this string.
|
||||
\end{itemize}
|
||||
\pause[\thebeamerpauses]
|
||||
\begin{block}{Eclipse-Tipp}
|
||||
Wenn Eclipse euch im Projektordner einen Fehler anzeigt, aber
|
||||
keine Datei fehlerhaft ist, solltet ihr mal einen
|
||||
keine Datei fehlerhaft ist, solltet ihr mal einen
|
||||
Blick in \menu{Window > Show View > Problem} werfen.
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
\item Eine Unterklasse kann alles, was die Oberklasse kann
|
||||
\item[$\rightarrow$] sie hat die gleichen Methoden, wenn auch eventuell überschrieben
|
||||
\item Eventuell ist uns die konkrete Klasse egal
|
||||
\item oder wir benötigen einen Kontainter für viele verschiedene
|
||||
\item oder wir benötigen einen Kontainter für viele verschiedene
|
||||
Objekte mit einer gemeinsamen Oberklasse
|
||||
\end{itemize}
|
||||
|
||||
|
@ -101,7 +101,7 @@
|
|||
\begin{itemize}
|
||||
\item Problem: Man schreibt genau eine verkettete Listen-Klasse
|
||||
für genau eine Klasse (z.B. "`Bike"'), obwohl
|
||||
die Logik (hinzufügen, entfernen, suchen) von der
|
||||
die Logik (hinzufügen, entfernen, suchen) von der
|
||||
Klasse unabhängig ist
|
||||
\item Lösung: Generics
|
||||
\end{itemize}
|
||||
|
@ -119,14 +119,14 @@
|
|||
\subsection{Praxis}
|
||||
\begin{frame}{Praxis}
|
||||
\begin{block}{Arbeitsauftrag}
|
||||
Programmiert die Einfach-verkettete Liste um, sodass sie
|
||||
Programmiert die Einfach-verkettete Liste um, sodass sie
|
||||
nirgends mehr "`Bike"' sondern nur noch Generics verwendet.
|
||||
\end{block}{Arbeitsauftrag}
|
||||
|
||||
\begin{exampleblock}{Hinweis}
|
||||
\begin{itemize}
|
||||
\item URL für die Bike-Version: \href{http://goo.gl/RoiBC}{http://goo.gl/RoiBC}
|
||||
\item Wer nur Zettel und Papier hat, implementiert die "`Node.java"'
|
||||
\item Wer nur Zettel und Papier hat, implementiert die "`Node.java"'
|
||||
komplett neu und "`SinglyLinkedList.java"' mindestens mit "`add()"'
|
||||
\end{itemize}
|
||||
\end{exampleblock}
|
||||
|
@ -173,7 +173,7 @@
|
|||
|
||||
Welche Bedeutung für die Laufzeit haben Generics?
|
||||
\end{block}
|
||||
|
||||
|
||||
\begin{overprint}
|
||||
\onslide<1>
|
||||
\begin{itemize}
|
||||
|
@ -182,7 +182,7 @@
|
|||
Gründe warum der kompilierte Code mit Generics
|
||||
\textbf{schneller} läuft als ohne
|
||||
\item Generics haben \textbf{keinen Einfluss} auf die Laufzeit
|
||||
\item Die erhöhte Flexibilität und Typsicherheit bedeutet,
|
||||
\item Die erhöhte Flexibilität und Typsicherheit bedeutet,
|
||||
dass der Compiler für jeden konkreten Typen Code aus
|
||||
dem generischen Code erstellen mus. Das bedeutet,
|
||||
die Programme sind \textbf{etwas langsamer}
|
||||
|
@ -218,9 +218,9 @@
|
|||
\begin{itemize}
|
||||
\item Zeile 2 ist ok
|
||||
\item Zeile 3 verursacht einen Laufzeitfehler
|
||||
\item Der Rückgabewert der Methode \myCode{getElement}
|
||||
in \myCode{Basket<Fruit>} ist \myCode{Fruit}.
|
||||
Man kann eine \myCode{Fruit}-Variable
|
||||
\item Der Rückgabewert der Methode \myCode{getElement}
|
||||
in \myCode{Basket<Fruit>} ist \myCode{Fruit}.
|
||||
Man kann eine \myCode{Fruit}-Variable
|
||||
keiner \myCode{Apple}-Variable ohne cast zuweisen.
|
||||
\end{itemize}
|
||||
\end{overprint}
|
||||
|
|
|
@ -97,10 +97,10 @@
|
|||
\item \myCode{List<? extends Fruit> myList} kann als Elemente
|
||||
\myCode{Fruit} und \myCode{Apple} haben, nicht jedoch
|
||||
\myCode{Object}
|
||||
\item Hinweis: "`extends"' ist hier nicht exakt das gleiche
|
||||
\item Hinweis: "`extends"' ist hier nicht exakt das gleiche
|
||||
wie bei der Vererbung. Es kann entweder wirklich "`extends"'
|
||||
oder "`implements"' bedeuten
|
||||
\item Sowohl in \myCode{List<Fruit>} als auch in
|
||||
\item Sowohl in \myCode{List<Fruit>} als auch in
|
||||
\myCode{List<? extends Fruit>} können
|
||||
\myCode{Fruit} und \myCode{Apple} beinhalten
|
||||
\end{itemize}
|
||||
|
@ -150,7 +150,7 @@
|
|||
\subsection{Quellen und Ressourcen}
|
||||
\begin{frame}{Quellen und Ressourcen}
|
||||
\begin{itemize}
|
||||
\item \href{http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html}{JavaDoc Tutorial - Wildcards}
|
||||
\item \href{http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html}{JavaDoc Tutorial - Wildcards}
|
||||
\item \href{http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html}{JavaDoc Tutorial - Wildcards} (extra)
|
||||
\item \href{http://stackoverflow.com/q/3009745/562769}{What does the question mark in Java generics' type parameter mean?}
|
||||
\item \href{http://stackoverflow.com/q/12340808/562769}{What's the difference between List<Object> and List<?>}
|
||||
|
@ -164,7 +164,7 @@
|
|||
\subsection{Allgemein}
|
||||
\begin{frame}{Allgemein}
|
||||
\begin{itemize}[<+->]
|
||||
\item Man will ein beliebiges Objekt mit dem momentanen
|
||||
\item Man will ein beliebiges Objekt mit dem momentanen
|
||||
Objekt auf Gleichheit vergleichen
|
||||
\item Dazu nutzt man \myCode{myObject.equals(otherObject);}
|
||||
\item \myCode{myObject} muss dann die \myCode{equals(Object obj)} implementieren
|
||||
|
@ -196,7 +196,7 @@
|
|||
\begin{itemize}[<+->]
|
||||
\item \dots sind Objekte vom Typ Throwable
|
||||
\item \dots unterbrechen den normalen Ablauf eines Programms
|
||||
\item Mit dem Schlüsselwort \myCode{throw} werden Exceptions
|
||||
\item Mit dem Schlüsselwort \myCode{throw} werden Exceptions
|
||||
geworfen und mit \myCode{catch} kann man sie abfangen.
|
||||
\end{itemize}
|
||||
|
||||
|
@ -254,7 +254,7 @@
|
|||
|
||||
Gründe:
|
||||
\begin{itemize}
|
||||
\item Beim lesen eures Codes wird klarer, wo das Problem
|
||||
\item Beim lesen eures Codes wird klarer, wo das Problem
|
||||
auftreten kann
|
||||
\item Effizienz
|
||||
\end{itemize}
|
||||
|
@ -297,7 +297,7 @@
|
|||
|
||||
\begin{frame}{Aufgaben}
|
||||
\begin{block}{Klasse "`Disc"'}
|
||||
Schreiben Sie zunächst eine Klasse Disc, die eine gelochte
|
||||
Schreiben Sie zunächst eine Klasse Disc, die eine gelochte
|
||||
Scheibe repräsentiert und als Attribut einen Durchmesser hat.
|
||||
\end{block}
|
||||
|
||||
|
@ -313,22 +313,22 @@
|
|||
|
||||
\begin{frame}{Aufgaben}
|
||||
\begin{block}{Methode push}
|
||||
Die Methode push(Disc d) legt die Scheibe d auf den Stab,
|
||||
Die Methode push(Disc d) legt die Scheibe d auf den Stab,
|
||||
falls dieser noch nicht voll ist und
|
||||
der Durchmesser der Scheibe d kleiner ist als der Durchmesser
|
||||
der Durchmesser der Scheibe d kleiner ist als der Durchmesser
|
||||
der obersten Scheibe des Stabes. Wird
|
||||
die Scheibe erfolgreich auf den Stab gelegt, so ist der
|
||||
die Scheibe erfolgreich auf den Stab gelegt, so ist der
|
||||
Rückgabewert der Methode true, andernfalls
|
||||
false.
|
||||
\end{block}
|
||||
|
||||
\begin{block}{Methode pop}
|
||||
Die Methode pop() entfernt die oberste Scheibe des Stabes und
|
||||
Die Methode pop() entfernt die oberste Scheibe des Stabes und
|
||||
liefert diese als Rückgabewert. Falls
|
||||
der Stab leer ist, soll der Rückgabewert null sein.
|
||||
\end{block}
|
||||
|
||||
Schreiben Sie, falls nötig, weitere Schnittstellen
|
||||
Schreiben Sie, falls nötig, weitere Schnittstellen
|
||||
(z.B. eine Methode size()) und toString()-Methoden.
|
||||
\end{frame}
|
||||
|
||||
|
|
|
@ -33,10 +33,10 @@
|
|||
\begin{block}{Compiler-Fehler}
|
||||
{\small
|
||||
Exception in thread "main" java.lang.Error: Unresolved compilation problem:\\
|
||||
Bound mismatch: The generic method \myCode{sort(List<T>)} of
|
||||
type Collections is not applicable for the arguments
|
||||
Bound mismatch: The generic method \myCode{sort(List<T>)} of
|
||||
type Collections is not applicable for the arguments
|
||||
(\myCode{List<List<String$>>$}).\\
|
||||
The inferred type \myCode{List<String>} is not a valid substitute for
|
||||
The inferred type \myCode{List<String>} is not a valid substitute for
|
||||
the bounded parameter \myCode{<T extends Comparable<? super T$>>$}\\
|
||||
at Main.main(Main.java:18)}
|
||||
\end{block}
|
||||
|
@ -49,10 +49,10 @@
|
|||
\begin{block}{Answer}
|
||||
I wouldn't implement clone().
|
||||
|
||||
But it makes sense to implement \myCode{equals()},
|
||||
\myCode{hashCode()}, and
|
||||
\myCode{toString()} to provide the default behavior for all subclasses.
|
||||
Children can choose to use it if they add no new class
|
||||
But it makes sense to implement \myCode{equals()},
|
||||
\myCode{hashCode()}, and
|
||||
\myCode{toString()} to provide the default behavior for all subclasses.
|
||||
Children can choose to use it if they add no new class
|
||||
members or supplement as needed.
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
@ -136,7 +136,7 @@
|
|||
\item[$\rightarrow$] Bei \myCode{double} und \myCode{float} den Epsilon-Vergleich machen!
|
||||
\item Sonst vergleicht man Strings
|
||||
\item[$\rightarrow$] \myCode{myString.compareTo(myOtherString)}
|
||||
\item Die JavaDoc von \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html\#compareTo\%28T\%29}{compareTo(other)}
|
||||
\item Die JavaDoc von \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html\#compareTo\%28T\%29}{compareTo(other)}
|
||||
sind weniger mathematisch formuliert
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -157,7 +157,7 @@
|
|||
\item Countingsort
|
||||
\end{itemize}
|
||||
|
||||
Implementierungen und Vergleiche dieser und weiterer Algorithmen sind
|
||||
Implementierungen und Vergleiche dieser und weiterer Algorithmen sind
|
||||
\href{http://martin-thoma.com/ubersicht-uber-sortieralgorithmen/}{hier}
|
||||
zu finden.
|
||||
|
||||
|
@ -194,7 +194,7 @@
|
|||
\begin{itemize}[<+->]
|
||||
\item maximal: $3^{7 \cdot 6} = 3^{42} = 109418989131512359209 \approx 109 \cdot 10^{18}$
|
||||
\item minimal: schwer zu sagen
|
||||
\item Idee: Brute-Force
|
||||
\item Idee: Brute-Force
|
||||
\begin{itemize}
|
||||
\item Alle möglichen Spielentscheidungen durchgehen
|
||||
\item Kommt man auf eine bereits bekannte Situation, ist es keine neue
|
||||
|
@ -248,11 +248,11 @@
|
|||
\end{block}
|
||||
|
||||
\begin{block}{Antwort}
|
||||
Eine Hash-Funktion $h$ bildet von einem sehr großem
|
||||
Eine Hash-Funktion $h$ bildet von einem sehr großem
|
||||
Definitionsbereich auf einen deutlich kleineren Wertebereich
|
||||
ab.
|
||||
\end{block}
|
||||
|
||||
|
||||
\pause
|
||||
|
||||
\begin{itemize}[<+->]
|
||||
|
@ -271,12 +271,12 @@
|
|||
\pause
|
||||
|
||||
\begin{block}{Bedingung 1}
|
||||
Whenever it is invoked on the same object more than once
|
||||
during an execution of a Java application, the hashCode
|
||||
method \textbf{must consistently return the same integer},
|
||||
provided no information used in equals comparisons on the
|
||||
object is modified. This integer need not remain consistent
|
||||
from one execution of an application to another execution of
|
||||
Whenever it is invoked on the same object more than once
|
||||
during an execution of a Java application, the hashCode
|
||||
method \textbf{must consistently return the same integer},
|
||||
provided no information used in equals comparisons on the
|
||||
object is modified. This integer need not remain consistent
|
||||
from one execution of an application to another execution of
|
||||
the same application.
|
||||
\end{block}
|
||||
{\tiny source: \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html\#hashCode()}{JavaDoc}}
|
||||
|
@ -284,8 +284,8 @@
|
|||
|
||||
\begin{frame}{hashCode() in Java}
|
||||
\begin{block}{Bedingung 2}
|
||||
If two objects are equal according to the equals(Object)
|
||||
method, then calling the hashCode method on each of the two
|
||||
If two objects are equal according to the equals(Object)
|
||||
method, then calling the hashCode method on each of the two
|
||||
objects \textbf{must} produce the same integer result.
|
||||
\end{block}
|
||||
{\tiny source: \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html\#hashCode()}{JavaDoc}}
|
||||
|
@ -304,12 +304,12 @@
|
|||
|
||||
\begin{frame}{hashCode() in Java}
|
||||
\begin{block}{Klarstellung 2}
|
||||
It is \textbf{not required} that if two objects are unequal according
|
||||
to the equals(java.lang.Object) method, then calling the
|
||||
hashCode method on each of the two objects must produce
|
||||
It is \textbf{not required} that if two objects are unequal according
|
||||
to the equals(java.lang.Object) method, then calling the
|
||||
hashCode method on each of the two objects must produce
|
||||
distinct integer results.\\
|
||||
However, the programmer should be
|
||||
aware that producing distinct integer results for unequal
|
||||
However, the programmer should be
|
||||
aware that producing distinct integer results for unequal
|
||||
objects may improve the performance of hash tables.
|
||||
\end{block}
|
||||
{\tiny source: \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html\#hashCode()}{JavaDoc}}
|
||||
|
@ -350,7 +350,7 @@
|
|||
Unterklassen bilden.
|
||||
\end{block}
|
||||
|
||||
Abstrakte Klassen
|
||||
Abstrakte Klassen
|
||||
\begin{itemize}[<+->]
|
||||
\item \dots müssen keine abstrakten Methoden beinhalten\\
|
||||
{\tiny Quelle: \href{http://stackoverflow.com/q/4811678/562769}{Defining an abstract class without any abstract methods}}
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
\section{Überladung}
|
||||
\subsection{Musterlösung}
|
||||
\begin{frame}{Musterlösung}
|
||||
Eine Musterlösung zu Blatt 5 ist
|
||||
Eine Musterlösung zu Blatt 5 ist
|
||||
\href{https://github.com/MartinThoma/prog-ws1213/tree/master/Blatt-05/tutor-solution/Blatt5/src/mediabib}{hier}.
|
||||
\end{frame}
|
||||
|
||||
|
@ -90,10 +90,10 @@
|
|||
\item \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html\#signum(double)}{Math.signum(double)},
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html\#signum(float)}{Math.signum(float)}
|
||||
\item PrintStream:
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html\#println()}{println();},
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html\#println()}{println();},
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html\#println(boolean)}{println(boolean);},
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html\#println(char)}{println(char);} \dots
|
||||
\item Interface List:
|
||||
\item Interface List:
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/util/List.html\#toArray()}{Object[] toArray();},
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/util/List.html\#toArray(T[])}{<T> T[] toArray(T[] a)}
|
||||
\end{itemize}
|
||||
|
@ -121,7 +121,7 @@
|
|||
\begin{itemize}
|
||||
\item \href{http://en.wikipedia.org/wiki/Loose_coupling}{Loose coupling} (Lose Kopplung)
|
||||
\item Loose binding - nicht weit verbreitet, vermutlich falscher Begriff
|
||||
\item \href{http://en.wikipedia.org/wiki/Dynamic_dispatch}{Dynamic dispatch}:
|
||||
\item \href{http://en.wikipedia.org/wiki/Dynamic_dispatch}{Dynamic dispatch}:
|
||||
Laut Wikipedia das gleiche wie "`dynamic binding"'.
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -199,7 +199,7 @@
|
|||
Die Annotation \myCode{@Override} \dots
|
||||
\begin{itemize}[<+->]
|
||||
\item Sollte verwendet werden, damit der Compiler euch warnen
|
||||
kann, wenn ihr nichts überschreibt
|
||||
kann, wenn ihr nichts überschreibt
|
||||
\item[$\Rightarrow$] Tippfehler werden unwahrscheinlicher
|
||||
\item Anderen ist klar, dass euch klar war, dass ihr etwas
|
||||
überschreibt
|
||||
|
@ -284,9 +284,9 @@
|
|||
\subsection{Allgemeines}
|
||||
\begin{frame}{Allgemeines}
|
||||
\begin{itemize}[<+->]
|
||||
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html}{Dictionary}
|
||||
is obsolete. New implementations should implement the
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/util/Map.html}{Map}
|
||||
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html}{Dictionary}
|
||||
is obsolete. New implementations should implement the
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/util/Map.html}{Map}
|
||||
interface, rather than extending Dictionary.
|
||||
\item Telefonbuch-Anwendungsfälle
|
||||
\begin{itemize}
|
||||
|
@ -295,12 +295,12 @@
|
|||
\item Schlüssel ist eindeutig, Wert darfs mehrfach geben (sowohl identisch als auch gleich sind ok)
|
||||
\end{itemize}
|
||||
\item Interface Map links vom \myCode{=}
|
||||
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html}{HashMap}:
|
||||
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html}{HashMap}:
|
||||
\begin{itemize}
|
||||
\item makes no guarantees as to the order of the map
|
||||
\item $\mathcal{O}(1)$ für \myCode{get} und \myCode{put}
|
||||
\end{itemize}
|
||||
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html}{TreeMap}:
|
||||
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html}{TreeMap}:
|
||||
\begin{itemize}
|
||||
\item sorted according to the natural ordering of its keys
|
||||
\item $\mathcal{O}(\log n)$ für \myCode{containsKey}, \myCode{get}, \myCode{put} und \myCode{remove}
|
||||
|
@ -344,7 +344,7 @@ http://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhash
|
|||
ActionLister sind \dots
|
||||
\begin{itemize}[<+->]
|
||||
\item ein weit verbreitetes Konzept
|
||||
\item Objekte, die auf bestimmte Aktionen warten und
|
||||
\item Objekte, die auf bestimmte Aktionen warten und
|
||||
\begin{itemize}
|
||||
\item dann was machen
|
||||
\item die Aktion "`delegieren"'
|
||||
|
|
|
@ -70,10 +70,10 @@
|
|||
|
||||
\begin{frame}{Quiz}
|
||||
Wie löst man das Problem:?
|
||||
|
||||
|
||||
Mit
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html}{AtomicLong}
|
||||
aus
|
||||
aus
|
||||
\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{java.util.concurrent}
|
||||
\end{frame}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue