Skip to content
This repository was archived by the owner on Apr 21, 2018. It is now read-only.

Commit 7d5c255

Browse files
committed
So far so good
1 parent a42219a commit 7d5c255

4 files changed

Lines changed: 367 additions & 0 deletions

File tree

1.54 KB
Loading

wise1617/img/dividebyzero.jpg

103 KB
Loading

wise1617/img/dt161111.jpg

316 KB
Loading

wise1617/slides-04.tex

Lines changed: 367 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,367 @@
1+
%%
2+
%% kit-prog-tutorial
3+
%%
4+
%% Slides for my Java programming tutorial at KIT using LaTeX beamer.
5+
%%
6+
%% Copyright (c) 2015-2016 YouniS Bensalah <[email protected]>
7+
%%
8+
%% This work is released to the public domain.
9+
%% For the full copyright and license information, please view the LICENSE file.
10+
%%
11+
12+
\documentclass[18pt]{beamer}
13+
14+
\usepackage{templates/beamerthemekit}
15+
16+
\usepackage[utf8]{inputenc}
17+
\usepackage{hyperref}
18+
\usepackage{listings}
19+
20+
\titleimage{road}
21+
22+
\newcommand{\tagline}{A closer look at Methods and Constructors}
23+
\newcommand{\quotes}[1]{``#1''}
24+
25+
\title[Programmieren\hspace{2.5pt}--\hspace{2.5pt}\tagline]{\tagline}
26+
\subtitle{Programmieren~\textbar~Tutorium 32}
27+
28+
\author{YouniS Bensalah}
29+
\date{21. November 2016}
30+
31+
\institute{Chair for Software Design and Quality}
32+
33+
\usepackage[citestyle=authoryear,bibstyle=numeric,hyperref,backend=biber]{biblatex}
34+
\addbibresource{templates/example.bib}
35+
\bibhang1em
36+
37+
\begin{document}
38+
39+
% remove annoying figure prefix in caption
40+
\setbeamertemplate{caption}{\raggedright\insertcaption\par}
41+
42+
\selectlanguage{english}
43+
44+
\begin{frame}
45+
\titlepage
46+
\end{frame}
47+
48+
% \begin{frame}{Heute}
49+
% \tableofcontents
50+
% \end{frame}
51+
52+
\section{Organisatorisches}
53+
54+
\begin{frame}{Prüfungsanmeldung}
55+
\begin{itemize}
56+
\item Im \textbf{Studiportal} anmelden
57+
\begin{itemize}
58+
\item \texttt{https://campus.studium.kit.edu}
59+
60+
\end{itemize}
61+
\end{itemize}
62+
\begin{itemize}
63+
\item \textbf{CAS} $\rightarrow$ Anmeldung online (Info, InWi)
64+
\item \textbf{HISPOS} $\rightarrow$ Anmeldung entweder online oder über blauen Schein
65+
\begin{itemize}
66+
\item \alert{Sehr zeitnah im Studienbüro vorbeigehen!}
67+
\end{itemize}
68+
\end{itemize}
69+
\end{frame}
70+
71+
\begin{frame}{Praktomat}
72+
\begin{itemize}
73+
\item Im \textbf{Praktomat} anmelden
74+
\begin{itemize}
75+
\item \url{https://praktomat.cs.kit.edu/2016_WS}
76+
\end{itemize}
77+
\item \alert{\textbf{Hier gebt ihr die Übungsaufgaben ab!!!!!!!1!!?????????????}}
78+
\item Login via KIT-Account (uxxxx)
79+
\item Zugang von außerhalb über VPN
80+
\begin{itemize}
81+
\item \url{https://www.scc.kit.edu/dienste/vpn.php}
82+
\end{itemize}
83+
\end{itemize}
84+
85+
\end{frame}
86+
87+
\begin{frame}{ILIAS}
88+
\begin{itemize}
89+
\item Im \textbf{ILIAS} anmelden
90+
\begin{itemize}
91+
\item \url{https://ilias.studium.kit.edu}
92+
\end{itemize}
93+
\item \textbf{Forum zu Vorlesung und Übungsaufgaben}
94+
\item Login via KIT-Account (uxxxx)
95+
\item \alert{Kurs \textit{Programmieren} beitreten!}
96+
\end{itemize}
97+
\end{frame}
98+
99+
100+
101+
\section{Methoden}
102+
103+
\begin{frame}{Methoden}
104+
\begin{itemize}
105+
\item \textbf{Methoden beschreiben das Verhalten von Objekten}
106+
\pause
107+
\item Alle Objekte vom gleichen Typ können die gleichen Funktionen ausführen
108+
\begin{itemize}
109+
\item \textit{Alle Ampeln können von Rot auf Grün schalten}
110+
\end{itemize}
111+
\pause
112+
\vspace{.2in}
113+
\item Methoden können\dots
114+
\begin{itemize}
115+
\item Berechnungen durchführen
116+
\item Werte züruckgeben
117+
\item den Zustand eines Objekts verändern
118+
\end{itemize}
119+
\end{itemize}
120+
\end{frame}
121+
122+
\begin{frame}{This}
123+
\begin{itemize}
124+
\item \texttt{this}
125+
\begin{itemize}
126+
\item Referenz auf aktuelles Objekt
127+
\item Sichtbar in jeder (nicht-statischen) Methode
128+
\item Vordefiniert!
129+
\item Erlaubt Zugriff auf Attribute und Methoden des aktuellen Objekts
130+
\item Explizite Unterscheidung zwischen Attributen und lokalen Variablen
131+
\end{itemize}
132+
\end{itemize}
133+
\end{frame}
134+
135+
\begin{frame}[fragile]{This}
136+
\begin{exampleblock}{}
137+
\begin{lstlisting}[language=Java,basicstyle=\Huge]
138+
this.name
139+
\end{lstlisting}
140+
\end{exampleblock}
141+
\end{frame}
142+
143+
144+
\begin{frame}[fragile]{This}
145+
\begin{exampleblock}{}
146+
\begin{lstlisting}[language=Java]
147+
public void sayName() {
148+
System.out.println(this.name);
149+
}
150+
\end{lstlisting}
151+
\end{exampleblock}
152+
\end{frame}
153+
154+
\begin{frame}{Parameter}
155+
\begin{itemize}
156+
\item Ein Parameter
157+
\begin{itemize}
158+
\item ist eine Variable
159+
\item enthält an Methode übergebenen Wert
160+
\end{itemize}
161+
\item Eine Methode kann 0, 1 oder mehrere Parameter haben
162+
\end{itemize}
163+
\end{frame}
164+
165+
\begin{frame}{Formaler vs. aktueller Parameter}
166+
\begin{itemize}
167+
\item \textbf{Formaler Parameter}
168+
\begin{itemize}
169+
\item Bezeichner, der in einer Methode verwendet wird
170+
\item $x$ ist formaler Parameter in $f(x) := e^x$
171+
\end{itemize}
172+
\vspace{.2in}
173+
\item \textbf{Aktueller Parameter}
174+
\begin{itemize}
175+
\item Tatsächlicher Wert, der an die Methode durch den Aufrufer übergeben wird
176+
\item $42$ ist aktueller Parameter in $f(42)$
177+
\end{itemize}
178+
\end{itemize}
179+
\end{frame}
180+
181+
\begin{frame}[fragile]{Formaler vs. aktueller Parameter}
182+
\begin{exampleblock}{}
183+
\begin{lstlisting}[language=Java]
184+
// something: formaler parameter
185+
public void say(String something) {
186+
System.out.println(something);
187+
}
188+
\end{lstlisting}
189+
\end{exampleblock}
190+
\begin{exampleblock}{}
191+
\begin{lstlisting}[language=Java]
192+
String name = "Steve";
193+
// name: aktueller parameter
194+
student.say(name);
195+
\end{lstlisting}
196+
\end{exampleblock}
197+
\end{frame}
198+
199+
\begin{frame}[fragile]{Rückgabewert}
200+
\begin{itemize}
201+
\item Eine Methode \textit{kann} einen Rückgabewert liefern
202+
\item Rückgabetyp \texttt{void} $\rightarrow$ \textbf{kein} Rückgabewert
203+
\end{itemize}
204+
\begin{exampleblock}{}
205+
\begin{lstlisting}[language=Java]
206+
public int getHeight() {
207+
return this.height;
208+
}
209+
210+
public void setWidth(int w) {
211+
this.width = w;
212+
}
213+
\end{lstlisting}
214+
\end{exampleblock}
215+
\end{frame}
216+
217+
\section{Konstruktoren}
218+
219+
\begin{frame}{Konstruktoren}
220+
\begin{itemize}
221+
\item Ein \textbf{Konstruktor} ist eine spezielle \textbf{Methode}, die beim \textbf{Erstellen eines neuen Objekts} (\texttt{new}) aufgerufen wird
222+
\item \textbf{Attribute} sollen \textbf{initialisiert} werden
223+
\item Das neue Objekt startet in \textbf{gültigem Zustand}
224+
\end{itemize}
225+
\end{frame}
226+
227+
\begin{frame}{Default-Konstruktor}
228+
\begin{itemize}
229+
\item Java stellt für jede Klasse zunächst einen \textbf{Default-Konstruktor} zur Verfügung
230+
\item Keine Argumente!
231+
\item Alle Attribute werden mit \textit{Null} initialisiert
232+
\end{itemize}
233+
234+
\end{frame}
235+
236+
\begin{frame}[fragile]{Default Values}
237+
\textbf{Null?}
238+
\vspace{.2in}
239+
\begin{itemize}
240+
\item \texttt{byte}, \texttt{short}, \texttt{int} $\rightarrow$ \texttt{0}
241+
\item \texttt{long} $\rightarrow$ \texttt{0l}
242+
\item \texttt{float} $\rightarrow$ \texttt{0.0f}
243+
\item \texttt{double} $\rightarrow$ \texttt{0.0d}
244+
\item \texttt{char} $\rightarrow$ \texttt{'\textbackslash u0000'}
245+
\item \texttt{boolean} $\rightarrow$ \texttt{false}
246+
\item Objekte $\rightarrow$ \texttt{null}
247+
\end{itemize}
248+
249+
\end{frame}
250+
251+
\begin{frame}[fragile]{Default-Konstruktor}
252+
\begin{exampleblock}{}
253+
\begin{lstlisting}[language=Java]
254+
class Cat {}
255+
256+
// call default constructor
257+
Cat garfield = new Cat();
258+
\end{lstlisting}
259+
\end{exampleblock}
260+
\end{frame}
261+
262+
263+
\begin{frame}[fragile]{Default-Konstruktor}
264+
\begin{exampleblock}{}
265+
\begin{lstlisting}[language=Java,basicstyle=\scriptsize]
266+
class AmazonProduct {
267+
268+
private double price;
269+
private int quantity;
270+
private String identifier;
271+
private boolean primeEligible;
272+
273+
public void display() {
274+
System.out.println("Price: " + this.price);
275+
System.out.println("Quantity: " + this.quantity);
276+
System.out.println("Identifier: " + this.identifier);
277+
System.out.println("Prime eligible: " + this.primeEligible);
278+
}
279+
280+
}
281+
\end{lstlisting}
282+
283+
\end{exampleblock}
284+
285+
\end{frame}
286+
287+
\begin{frame}[fragile]{Default-Konstruktor}
288+
\begin{exampleblock}{}
289+
\begin{lstlisting}[language=Java]
290+
(new AmazonProduct()).display();
291+
\end{lstlisting}
292+
\end{exampleblock}
293+
294+
\begin{exampleblock}{}
295+
\begin{lstlisting}
296+
Price: 0.0
297+
Quantity: 0
298+
Identifier: null
299+
Prime eligible: false
300+
\end{lstlisting}
301+
\end{exampleblock}
302+
\end{frame}
303+
304+
\begin{frame}{Konstruktoren}
305+
\center
306+
\Huge{Ich will aber meinen eigenen Konstruktor definieren!}
307+
\end{frame}
308+
309+
\begin{frame}{Eigenen Konstruktor definieren}
310+
\begin{itemize}
311+
\item Konstruktoren sind doch \textbf{Methoden}!
312+
\pause
313+
\item \textit{Also Definition wie bei Methoden?}
314+
\pause
315+
\item Fast!
316+
\begin{itemize}
317+
\item Kein Rückgabetyp!
318+
\item Nein, auch nicht \texttt{void}
319+
\item Name der Methode $==$ Name der Klasse
320+
\end{itemize}
321+
\end{itemize}
322+
\end{frame}
323+
324+
\begin{frame}[fragile]{title}
325+
\begin{exampleblock}{}
326+
\begin{lstlisting}[language=Java]
327+
class Cat {
328+
private int lives;
329+
330+
public Cat() {
331+
this.lives = 9;
332+
}
333+
}
334+
\end{lstlisting}
335+
336+
\end{exampleblock}
337+
338+
\end{frame}
339+
340+
341+
342+
\section{Overloading}
343+
344+
\begin{frame}{Overloading}
345+
body
346+
\end{frame}
347+
348+
\appendix
349+
350+
\beginbackup
351+
352+
\begin{frame}{Fragen?}
353+
\begin{figure}
354+
\includegraphics[scale=.32]{img/Question-Rage-Face.jpg}
355+
\end{figure}
356+
\end{frame}
357+
358+
\begin{frame}{Bis nächste Woche!}
359+
\begin{figure}
360+
\includegraphics[scale=.32]{img/dt161111.jpg}
361+
\caption{\footnotesize{dilbert.com}}
362+
\end{figure}
363+
\end{frame}
364+
365+
\backupend
366+
367+
\end{document}

0 commit comments

Comments
 (0)