Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

📚 The CoCalc Library - books, templates and other resources

132940 views
License: OTHER
1
\documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer}
2
\usepackage{../templates/myStyle}
3
4
\begin{document}
5
\title{\titleText}
6
\subtitle{JUnit, Vererbung, toString(), Interfaces}
7
\author{\tutor}
8
\date{\today}
9
\subject{Programmieren}
10
11
\frame{\titlepage}
12
13
\frame{
14
\frametitle{Inhaltsverzeichnis}
15
\setcounter{tocdepth}{1}
16
\tableofcontents
17
\setcounter{tocdepth}{2}
18
}
19
20
\section{Einleitung}
21
\subsection{Quiz}
22
\begin{frame}{Quiz: Vererbung}
23
\begin{minipage}[b]{0.45\linewidth}
24
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Animal.java, frame=lines]{java}{Animal.java}
25
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Jungle.java, frame=lines]{java}{Jungle.java}
26
\end{minipage}
27
\hspace{0.5cm}
28
\begin{minipage}[b]{0.45\linewidth}
29
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Tiger.java, frame=lines]{java}{Tiger.java}
30
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Cat.java, frame=lines]{java}{Cat.java}
31
\begin{itemize}
32
\item Gibt es einen Compiler-Fehler?
33
\item Gibt es einen Laufzeit-Fehler?
34
\item Gibt es eine Ausgabe? Welche?
35
\end{itemize}
36
\end{minipage}
37
\end{frame}
38
39
\begin{frame}{Quiz: Antwort}
40
\begin{minipage}[b]{0.45\linewidth}
41
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Animal.java, frame=lines]{java}{Animal.java}
42
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Jungle.java, frame=lines]{java}{Jungle.java}
43
\end{minipage}
44
\hspace{0.5cm}
45
\begin{minipage}[b]{0.45\linewidth}
46
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Tiger.java, frame=lines]{java}{Tiger.java}
47
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Cat.java, frame=lines]{java}{Cat.java}
48
\begin{itemize}
49
\item null
50
\item Cat:null
51
\item Cat:null
52
\item null
53
\item null
54
\end{itemize}
55
\end{minipage}
56
\end{frame}
57
58
\begin{frame}{Erklärung}
59
\begin{itemize}
60
\item Zeile 2 und 3: \myCode{sound} im Konstruktor von \myCode{Cat} ist eine
61
lokale Variable, kein Attribut
62
\item In Java werden nur Methoden vererbt
63
\begin{itemize}
64
\item Klassen: Signatur und Implementierung
65
\item Interfaces: Nur Signatur
66
\end{itemize}
67
\end{itemize}
68
69
Mehr dazu später
70
\end{frame}
71
72
\section{JUnit}
73
\subsection{Allgemeines}
74
\begin{frame}{JUnit: Allgemeines}
75
JUnit \dots
76
\begin{itemize}[<+->]
77
\item ist ein Java-Paket
78
\item ist ein Framework zum Testen von Java-Programmen
79
\item ist SEHR verbreitet
80
\item dient der Erstellung von Unit-Tests
81
\item wurde von Erich Gamma und Kent Beck erstellt
82
\end{itemize}
83
\end{frame}
84
85
\subsection{Beispiel}
86
\begin{frame}{JUnit: Beispiel}
87
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny, label=LevenshteinCompilationTest.java, frame=lines]{java}{LevenshteinCompilationTest.java}
88
\end{frame}
89
90
\framedgraphic{Eclipse: JUnit}{Eclipse-JUnit-new-test.png}
91
\framedgraphic{Eclipse: JUnit}{Eclipse-JUnit-project-explorer.png}
92
\framedgraphic{Eclipse: JUnit}{Eclipse-JUnit-execution-button.png}
93
\framedgraphic{Eclipse: JUnit}{Eclipse-JUnit-execution-result.png}
94
\framedgraphic{Eclipse: JUnit}{Eclipse-JUnit-detailed-results.png}
95
\framedgraphic{Eclipse: JUnit}{Eclipse-JUnit-new-filter-trace.png}
96
97
\subsection{Fehler}
98
\begin{frame}{JUnit: Fehler}
99
\begin{alertblock}{Fehler}
100
The import org.junit cannot be resolved
101
\end{alertblock}
102
\begin{block}{Lösung}
103
\begin{itemize}
104
\item \href{https://github.com/KentBeck/junit/downloads}{Hier} junit-4.11.jar mit Hamcrest herunterladen
105
\item \menu{Project > Properties > Java Build Path > Libraries > Add External JARs...}
106
\item \texttt{junit-4.11.jar} auswählen
107
\item Auf OK klicken
108
\end{itemize}
109
\end{block}
110
\end{frame}
111
112
\section{Vererbung}
113
\subsection{Allgemeines}
114
\begin{frame}{Allgemeines}
115
Vererbung \dots
116
\begin{itemize}[<+->]
117
\item ist ein Schlüsselelement der OOP
118
\item ist in Java eingeschränkt: Eine Klasse erbt in Java
119
von genau einer anderen Klasse
120
\begin{itemize}
121
\item alle Klassen erben von \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html}{Object}
122
\end{itemize}
123
\item dient der Spezialisierung
124
\end{itemize}
125
\end{frame}
126
127
\begin{frame}{Beispiel}
128
Wo kann Vererbung nützlich sein?
129
\begin{itemize}[<+->]
130
\item Oberklasse Liste, Unterklassen SinglyLinkedList und
131
DoubleLinkedList
132
\begin{itemize}
133
\item \myCode{contains()} ist gleich
134
\item \myCode{append()} ist unterschiedlich
135
\item \myCode{remove()} ist unterschiedlich
136
\end{itemize}
137
\item Oberklasse Animal, Unterklassen Säugetier, Tiger, Schlange, Bär, \dots
138
\item Brettspiele:
139
\begin{itemize}
140
\item Klasse Spielbrett; Unterklassen: Schachbrett, Dame-Brett, Mensch-ärgere-dich-nicht
141
\item Klasse Spielfigur; Unterklassen: Bauer, Dame, Springer, Turm
142
\item Klasse Spiellogik; Unterklassen: DameLogik, SchachLogik
143
\end{itemize}
144
\end{itemize}
145
\end{frame}
146
147
\framedgraphic{Beispiel}{Klassendiagramm.pdf}
148
149
\begin{frame}{Vererbung: Beispiel in Java}
150
\begin{minipage}[b]{0.45\linewidth}
151
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Animal.java, frame=lines]{java}{Animal.java}
152
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Jungle.java, frame=lines]{java}{Jungle.java}
153
\end{minipage}
154
\hspace{0.5cm}
155
\begin{minipage}[b]{0.45\linewidth}
156
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Tiger.java, frame=lines]{java}{Tiger.java}
157
\inputminted[linenos=false, numbersep=5pt, tabsize=4, fontsize=\tiny, label=Cat.java, frame=lines]{java}{Cat.java}
158
\end{minipage}
159
\end{frame}
160
161
\begin{frame}{Allgemeines}
162
\begin{block}{\href{http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html\#jls-8.4.8}{JLS 8.4.8}}
163
A class C inherits from its direct superclass and direct
164
superinterfaces all abstract and non-abstract methods of the
165
superclass and superinterfaces that are public, protected, or
166
declared with default access in the same package as C, and are
167
neither overridden (§8.4.8.1) nor hidden (§8.4.8.2) by a
168
declaration in the class.
169
\end{block}
170
\end{frame}
171
172
\section{toString()}
173
\subsection{Allgemeines}
174
\begin{frame}{toString()}
175
\begin{itemize}[<+->]
176
\item Jedes Objekt hat eine Methode \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html\#toString()}{toString()}
177
\item Diese wird von \myCode{Object} vererbt
178
\item und \st{kann} sollte überschrieben werden
179
\end{itemize}
180
\end{frame}
181
182
\begin{frame}{Information aus den Javadoc}
183
Wie sollte toString() aussehen?
184
\begin{itemize}
185
\item Eine kurze textuelle Repräsentation des Objekts
186
\item Soll von Menschen gelesen werden
187
\item Per Standard: \myCode{getClass().getName() + '@' + Integer.toHexString(hashCode())}
188
\end{itemize}
189
\end{frame}
190
191
\begin{frame}{Beispiel}
192
\inputminted[linenos=true, numbersep=5pt, tabsize=4, label=Node.java, frame=lines]{java}{Node.java}
193
\end{frame}
194
195
\section{Interfaces}
196
\subsection{Allgemeines}
197
\begin{frame}{Interfaces: Allgemeines}
198
\begin{itemize}[<+->]
199
\item auf Deutsch: Schnittstelle
200
\item es werden nur Methodensignaturen vererbt
201
\item die Implementierung muss komplett selbst durchgeführt werden!
202
\item wird wie Klassen in einer eigenen "`MeinInterface.java"' Datei gespeichert
203
\end{itemize}
204
\pause[\thebeamerpauses]
205
\begin{block}{Namenskonvention}
206
Der Name einer Schnittstelle endet oft mit -able.
207
\end{block}
208
\end{frame}
209
210
\subsection{Beispiel}
211
\begin{frame}{Interfaces: Beispiel}
212
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=Bicycle.java, frame=lines]{java}{Bicycle.java}
213
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\small, label=ACMEBicycle.java, frame=lines]{java}{ACMEBicycle.java}
214
\small{Quelle: \href{http://docs.oracle.com/javase/tutorial/java/concepts/interface.html}{docs.oracle.com}: What Is an Interface?}\\
215
Weitere Informationen: \href{http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html}{docs.oracle.com}: Interfaces
216
\end{frame}
217
218
\subsection{Real World Examples}
219
\begin{frame}{Real World Examples}
220
\begin{itemize}
221
\item \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html}{Comperable}: Vergleichen mit \myCode{<}
222
\item \href{http://docs.oracle.com/javase/7/docs/api/java/util/List.html}{List}: Viele Listenoperationen
223
\item \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html}{Iterable}: foreach
224
\item \href{http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html}{Serializable}: Speichern / verschicken übers Netzwerk
225
\item \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html}{Runnable}: Multithreading
226
\end{itemize}
227
\end{frame}
228
229
\subsection{Weitere Informationen}
230
\begin{frame}{Interfaces: Weitere Informationen}
231
\begin{itemize}
232
\item \href{http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html}{JLS 7}
233
\item \href{http://openbook.galileodesign.de/javainsel5/javainsel06_010.htm}{Galileo openbook}
234
\end{itemize}
235
\end{frame}
236
237
\section{Nachbesprechung ÜB 3}
238
\subsection{Allgemeines}
239
\begin{frame}{Allgemeines}
240
Lösungen sind \href{https://github.com/MartinThoma/prog-ws1213/tree/master/Blatt-03}{hier} zu finden.
241
\end{frame}
242
\begin{frame}{Allgemeines}
243
\begin{itemize}[<+->]
244
\item \myCode{\href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html\#charAt(int)}{char charAt(int index)}}:
245
Returns the char value at the specified index.
246
\item \myCode{\href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html\#matches(java.lang.String)}{public boolean matches(String regex)}}
247
Tells whether or not this string matches the given regular expression.
248
\item \myCode{\href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html\#substring(int, int)}{String substring(int beginIndex,
249
int endIndex)}} Returns a new string that is a substring of this string.
250
\end{itemize}
251
\pause[\thebeamerpauses]
252
\begin{block}{Eclipse-Tipp}
253
Wenn Eclipse euch im Projektordner einen Fehler anzeigt, aber
254
keine Datei fehlerhaft ist, solltet ihr mal einen
255
Blick in \menu{Window > Show View > Problem} werfen.
256
\end{block}
257
\end{frame}
258
259
\section{Abspann}
260
\subsection{Kommende Tutorien}
261
\begin{frame}{Kommende Tutorien}
262
\begin{itemize}
263
\item[5.] 17.12.2012: Generics?, Video "`Library"' zeigen
264
\item[-] 24.12.2012: Heiligabend - \href{http://www.fmc.uni-karlsruhe.de/faq/wann-sind-die-weihnachtsferien}{Kein Tutorium}
265
\item[-] 31.12.2012: Silvester - Kein Tutorium
266
\item[4.] 07.01.2013
267
\item[3.] 14.01.2013
268
\item[2.] 21.01.2013
269
\item[1.] 28.01.2013: Abschlussprüfunsvorbereitung
270
\item[0.] 04.02.2013: Abschlussprüfunsvorbereitung
271
\item[-] 10.02.2013: Ende der Vorlesungszeit des WS 2012/2013 (\href{http://www.kit.edu/studieren/2873.php}{Quelle})
272
\end{itemize}
273
\end{frame}
274
275
\framedgraphic{Beware of physicist fathers}{../images/Beware-of-physicist-fathers.png}
276
277
\end{document}
278
279