comparison detailed-observer.tex @ 28:ddd8378a539e

did lot of working on detailed-observer
author meillo@marmaro.de
date Thu, 05 Jul 2007 07:53:15 +0200
parents a7ab86cddfad
children f3b4061ec3b4
comparison
equal deleted inserted replaced
27:c5c50818b3d9 28:ddd8378a539e
1 % @file 1 % @file
2 % @brief Referat DesignPattern `Observer' 2 % @brief Referat DesignPatterns `Observer'
3 % @author markus schnalke <meillo@marmaro.de> 3 % @author markus schnalke <meillo@marmaro.de>
4 % @since 2007-05-30 4 % @since 2007-05-30
5 5
6 6
7 \documentclass{beamer} 7 \documentclass[a4paper]{scrartcl}
8 8
9 9 \usepackage[utf8]{inputenc}
10 \usepackage[T1]{fontenc}
11 \usepackage[latin1]{inputenc}
12 \usepackage{ngerman} 10 \usepackage{ngerman}
13 \usepackage{graphicx} 11 \usepackage{graphicx}
14 \usepackage[automark]{scrpage2} 12 \usepackage[automark]{scrpage2}
15 \input{Style01} 13
16 14 \setkomafont{sectioning}{\normalfont\normalcolor\bfseries}
17 15 \setlength{\parindent}{0em}
16 \setlength{\parskip}{1.0ex plus 1.0ex minus 0.5ex}
17 \pagestyle{scrheadings}
18 \setcounter{tocdepth}{2}
18 19
19 \begin{document} 20 \begin{document}
20 21
21 22
22 \title{Design Pattern ``Observer''} 23
23 \date{\today} 24
24 25
25 \author{Markus Schnalke} 26 %%%% Titlepage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26 27 \begin{titlepage}
27 %\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 28 \title{Observer-Pattern}
28 29 \author{Markus Schnalke}
29 \frame{ 30 \date{2007-07-04}
30 \titlepage 31
31 } 32
32 33 \thispagestyle{empty}
33 34
34 35
35 36 \begin{flushright}
36 37
37 \section[Outline]{} 38 \rule[8cm]{0cm}{0cm}
38 \frame{ 39 {\Huge Design Pattern\\ \textbf{Observer}}
39 \tableofcontents 40
40 } 41 \rule[2cm]{0cm}{0cm}
41 42 \textsc{Markus Schnalke\\MatNr: 039131}
42 43
43 44 \end{flushright}
44 45
45 \section{Vorgehensweise} 46
46 47
47 \frame{ \frametitle{Von der anderen Seite} 48 \rule[7cm]{0cm}{0cm}
48 49
49 \begin{block}{Gründe} 50 \textit{Dies ist meine Ausarbeitung zum Design Pattern ``Observer'' im Rahmen der Vorlesung Softwaretechnik im Studiengang Wirtschaftsinformatik an der Hochschule Ulm.}
50 Design Pattern sind so etwas wie ``Best Practices'' (also bewährte 51
51 Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit} 52 {\tiny Dieses Dokument darf gerne zitiert, kopiert und weitergegeben werden. Ich bitte nur darum meinen Namen und einen Verweis auf meine Website (http://marmaro.de) zu erwähnen --- danke! }
52 \end{block} 53
53 \pause 54
54 \begin{block}{Meine Vorgehensweise} 55 \end{titlepage}
55 Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass 56
56 das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das 57
57 bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden 58
58 sollte. 59
59 \end{block} 60 \tableofcontents
60 61
61 % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag 62
62 63
63 } 64
64 65
65 66
66 \section{Erarbeitung des Observers} 67
67 68
68 \frame{ \frametitle{Ein Beispiel} 69
69 70
70 \begin{block}{Die Situation} 71
71 \begin{itemize} 72
72 \item Personen die verkaufen möchten 73
73 \item Personen die kaufen möchten 74
75 %%%% Einleitung %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
76 \newpage
77 \section{Einleitung}
78
79 Ich möchte im Folgenden einen Ansatz zum Verstehen von Design Patterns aufzeigen. Dazu nehme ich das Design Pattern ``Observer'', das ich Stück für Stück aus einer Situation der realen Welt herleiten werde. Es geht mir dabei nicht primär darum euch dieses Pattern zu erklären, vielmehr soll das Erfassen des Zusammenhangs zwischen Realität und Design Patterns gefördert werden.
80
81 Mein Ziel ist es die \textit{Natürlichkeit} von Design Patterns darzustellen --- weil sie dem Vorgehen in der Realität entsprechen!
82
83
84
85
86 \section{Meine Vorgehensweise}
87
88 \begin{quote}
89 Design Pattern sind ``Best Practices'' (= Erfolgsrezepte), meist \textbf{nach Vorbildern in der Realität}.
90 \end{quote}
91
92 Aus diesem Grund möchte ich nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass das Design Pattern \textbf{Observer} ein absolut natürliches Vorgehen ist, das bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden sollte. Dass ich hier gerade das Pattern \textbf{Observer} verwende, hat keinen besonderen Grund; es kann wohl (fast) jedes Pattern auf diese Weise verständlich und logisch gemacht werden.
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108 \newpage
109 \section{Erarbeitung des Patterns}
110
111 \subsection{Ausgangssituation}
112 Meine Ausgangssituation von der ich mich zu einer möglichst optimalen Lösung vorarbeiten möchte ist Folgende:
113
114 \begin{itemize}
115 \item Es gibt Personen die Etwas verkaufen möchten
116 \item Es gibt Personen die Etwas kaufen möchten
74 \item Sie wollen/sollen sich nicht kennen 117 \item Sie wollen/sollen sich nicht kennen
75 \item Möglichst effektives Vorgehen 118 \end{itemize}
76 \end{itemize} 119
77 \end{block} 120 Gesucht ist natürlich ein möglichst effektives Vorgehen. Eben das ist der Grund, weshalb wir Patterns verwenden möchten: Wir suchen eine effektive Standardlösung für regelmäßig auftretende Problemstellungen.
78 \pause 121
79 \begin{block}{Vorschläge?} 122
80 \begin{itemize} 123
81 \item 124
82 \item 125 \subsection{Mögliche Ansätze}
83 \end{itemize} 126
84 \end{block} 127 Um systematisch vorzugehen, überlegen wir uns zunächst, welche primitiven Lösungen für unser Problem in Frage kommen. Dies wären zum Beispiel:
85
86 }
87
88
89 \subsection{Ansatz}
90 \frame{ \frametitle{Ansatz}
91
92 \begin{block}{Mögliche Vorgehen}
93 \begin{itemize} 128 \begin{itemize}
94 \item Personen direkt ansprechen 129 \item Personen direkt ansprechen
95 \item Laut in die Menge rufen 130 \item Laut in die Menge rufen
96 \item Den Freunden erzählen, die es dann weitererzählen 131 \item Den Freunden erzählen, die es dann weitererzählen
97 \end{itemize} 132 \end{itemize}
98 \end{block} 133
99 134 Vermutlich wäre der Eine oder Andere (unbewusst) gleich höher eingestiegen, dennoch zeigen auch (oder gerade) diese simplen Vorgehensweisen Probleme auf, die sonst kaum explizit wahrgenommen werden.
100 \pause 135
101 136 Dies sind unter anderem:
102 \begin{block}{Probleme} 137
103 \begin{itemize} 138 \begin{itemize}
104 \item Man weiß nicht wer Interesse hat 139 \item Man weiß nicht wer Interesse hat
105 \item nicht mal wieviele 140 \item nicht mal wieviele
106 \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da 141 \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da
107 \item ... oder sie sind taub 142 \item (... oder sie sind taub)
108 \end{itemize} 143 \end{itemize}
109 \end{block} 144
110 145
111 }
112 146
113 147
114 148
115 \subsection{Erarbeitung einer Lösung} 149 \subsection{Erarbeitung einer Lösung}
116 150
117 \frame{ \frametitle{Eine (gute) Lösung: Pinnwand} 151 \subsubsection{Eine (gute) Lösung: Pinnwand}
118 152
119 \begin{block}{Funktionsweise} 153
154
155 \paragraph{Funktionsweise}
120 \begin{itemize} 156 \begin{itemize}
121 \item Man kann Zettel anpinnen 157 \item Man kann Zettel anpinnen
122 \item Hingehen und nach neuen Zetteln schauen 158 \item Hingehen und nach neuen Zetteln schauen
123 \item Zettel lesen 159 \item Zettel lesen
124 \item Zettel abnehmen 160 \item Zettel abnehmen
125 \item Jeder der ein paar Fähigkeiten hat kann es 161 \item Jeder der ein paar Fähigkeiten hat kann es
126 \end{itemize} 162 \end{itemize}
127 \end{block} 163
128 164
129 \pause 165
130 166
131 \begin{block}{Probleme} 167 \paragraph{Probleme}
132 \begin{itemize} 168 \begin{itemize}
133 \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist 169 \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist
134 \item Man kann wichtige Zettel verpassen 170 \item Man kann wichtige Zettel verpassen
135 \item Zettel sollten nicht weggenommen werden können 171 \item Zettel sollten nicht weggenommen werden können
136 \end{itemize} 172 \end{itemize}
137 \end{block} 173
138 174
139 } 175
140 176
141 177
142 178
143 179 \subsubsection{Verbesserung: Pinnwand-Sekretärin}
144 \frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin} 180
145 181 \paragraph{Lösung}
146 \begin{block}{Lösung}
147 \begin{itemize} 182 \begin{itemize}
148 \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt 183 \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt
149 \item Pinnwand und Sekretärin sind fortan eine Einheit 184 \item Pinnwand und Sekretärin sind fortan eine Einheit
150 \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch) 185 \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch)
151 \item (Sie schreibt mit lesbarer Schrift) 186 \item (Sie schreibt mit lesbarer Schrift)
152 \item Sie verhindert, dass Zettel abgenommen werden 187 \item Sie verhindert, dass Zettel abgenommen werden
153 \end{itemize} 188 \end{itemize}
154 \end{block} 189
155 190
156 \pause 191
157 192
158 \begin{block}{Bestehendes Problem} 193 \paragraph{Bestehendes Problem}
159 \begin{itemize} 194 \begin{itemize}
160 \item Man läuft immer noch oft unnötig zur Pinnwand 195 \item Man läuft immer noch oft unnötig zur Pinnwand
161 \end{itemize} 196 \end{itemize}
162 \end{block} 197
163 198
164 } 199
165 200
166 201 \subsubsection{2. Verbesserung: Pinnwand-Sekretärin mit Benachrichtigung}
167 \frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung} 202
168 203 \paragraph{Lösung}
169 \begin{block}{Lösung}
170 \begin{itemize} 204 \begin{itemize}
171 \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert 205 \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert
172 \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren 206 \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren
173 \item Die Sekretärin trägt die Telefonnummer in eine Liste ein 207 \item Die Sekretärin trägt die Telefonnummer in eine Liste ein
174 \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt 208 \item Zukünftig ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt
175 \end{itemize} 209 \end{itemize}
176 \end{block} 210
177 211
178 } 212
179 213
180 214 \subsection{Zusammenfassung des Beispiels}
181 \subsection{Zusammenfassung} 215
182 216 \paragraph{Pinnwand + Sekretärin + Benachrichtigung}
183 % Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt
184 % Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut?
185 \frame{ \frametitle{Zusammenfassung des Beispiels}
186
187 \begin{block}{Pinnwand + Sekretärin + Benachrichtigung}
188 \begin{itemize} 217 \begin{itemize}
189 \item Man kann neue Zettel anpinnen lassen 218 \item Man kann neue Zettel anpinnen lassen
190 \item Man kann sich als Interessierter anmelden (und auch abmelden) 219 \item Man kann sich als Interessierter anmelden (und auch abmelden)
191 \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt 220 \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt
192 \item Sie können dann zur Pinnwand gehen und sie sich anschauen 221 \item Sie können dann zur Pinnwand gehen und sie sich anschauen
193 \end{itemize} 222 \end{itemize}
194 \end{block} 223
195 224
196 \pause 225
197 226
198 \begin{block}{Eure Meinung?} 227 \paragraph{Eure Meinung?}
199 \begin{itemize} 228 \begin{itemize}
200 \item Ist diese Struktur zufriedenstellend? 229 \item Ist diese Struktur zufriedenstellend?
201 \item Erfüllt sie alle Anforderungen? 230 \item Erfüllt sie alle Anforderungen?
202 \item Was fehlt? 231 \item Was fehlt?
203 \end{itemize} 232 \end{itemize}
204 \end{block} 233
205 234
206 } 235
207 236
208 237
209 238
210 239
211 240
212 241
213 \section{Nun zum Pattern} 242
214 243
215 244
216 \frame{ \frametitle{Überleitung} 245
217 246
218 \begin{block}{Neue Namen} 247
219 \begin{itemize} 248
220 \item Pinnwand-Sekretärin-Einheit -> ``Subject'' 249
221 \item Die Zettel auf der Pinnwand -> ``subjectState'' 250
222 \item Interessenten -> ``Observers'' 251
223 \end{itemize} 252
224 \end{block} 253
225 254
226 \pause 255
227 256 \newpage
228 \begin{block}{Schnittstellen} 257 \section{Das Pattern}
229 Die Fähigkeiten die Pinnwand/Sekretärin und Interessenten haben müssen um in diesem Schema korrekt zu funktionieren sind ihre ``Interfaces''. 258
230 \end{block} 259
231 260 \subsection{Überleitung}
232 } 261
233 262 \paragraph{Neue Namen}
234 263 \begin{itemize}
235 \frame { \frametitle{UML-Diagramm des Observers} 264 \item Pinnwand-Sekretärin-Einheit $\rightarrow$ ``Subject''
236 \centerline{ \includegraphics[width=20em]{pics/observer_big.png} } 265 \item Die Zettel auf der Pinnwand $\rightarrow$ ``subjectState''
237 } 266 \item Interessenten $\rightarrow$ ``Observers''
267 \end{itemize}
268
269 \paragraph{Schnittstellen}
270 Die Fähigkeiten der Pinnwand/Sekretärin und Interessenten sind ihre ``Interfaces''.
271
272 (vgl: taub, minimale Fähigkeiten, leserliche Schrift, ...)
273
274
275
276
277 \subsection{UML-Diagramme}
278 \subsubsection{Struktur-Diagramm des Observers}
279
280 \begin{figure}[hbt]
281 \centering
282 \includegraphics[width=12cm]{pics/observer_big.png}
283 \caption{Struktur-Diagramm des Observers}
284 \end{figure}
285
286
287
288 \subsubsection{Interaktions-Diagramm des Observers}
289 \begin{figure}[hbt]
290 \centering
291 \includegraphics[width=12cm]{pics/observer-interaction_big.png}
292 \caption{Interaktions-Diagramm des Observers}
293 \end{figure}
294
295
238 296
239 297
240 % Daten aus der Beschreibung des Observers von GoF 298 % Daten aus der Beschreibung des Observers von GoF
241 % in welche Gruppen wird er eingeordnet 299 % in welche Gruppen wird er eingeordnet
242 \frame{ \frametitle{Beschreibung des Observers} 300 \subsubsection{Klassifizierung nach GoF}
243 301
244 \begin{block}{Klassifizierung} 302 \paragraph{Klassifizierung}
245 Verhaltensmuster, objektbasierend 303 Verhaltensmuster, objektbasierend
246 \end{block} 304
247 305
248 \begin{block}{Auch bekannt als} 306 \paragraph{Auch bekannt als}
249 Publish-Subscribe, Dependents 307 Publish-Subscribe, Dependents
250 \end{block} 308
251 309
252 \begin{block}{Zweck} 310 \paragraph{Zweck}
253 Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert. 311 Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert.
254 % todo: besser formulieren 312 % todo: besser formulieren
255 \end{block} 313
256 314
257 \begin{block}{Kurzbeschreibung} 315 \paragraph{Kurzbeschreibung}
258 Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert 316 Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert
259 werden können, und um die abhängigen Objekte über Zustandsänderungen zu 317 werden können, und um die abhängigen Objekte über Zustandsänderungen zu
260 informieren. 318 informieren.
261 % todo: Formulierung überdenken 319 % todo: Formulierung überdenken
262 \end{block} 320
263 321
264 } 322
265 323
266 324
267 \subsection{Beispiele} 325 \subsection{Beispiele für den Observer in der Praxis}
268 % Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo) 326 % Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo)
269 % nicht aber (Blog + RSS) 327 % nicht aber (Blog + RSS)
270 \frame{ \frametitle{Der Observer in der Praxis} 328
271 329 \paragraph{Beispiele}
272 \begin{block}{Beispiele}
273 \begin{itemize} 330 \begin{itemize}
274 \item Observer ist sehr verbreitet 331 \item Observer ist sehr verbreitet
275 \item v.a. MVC (Model = Subject; View = Observer) 332 \item v.a. MVC (Model = Subject; View = Observer)
276 \item Mailinglisten 333 \item Mailinglisten
277 \item Ebay Such-Abo 334 \item Ebay Such-Abo
278 \end{itemize} 335 \end{itemize}
279 \end{block} 336
280 337
281 \pause 338 \paragraph{Aber}
282
283 \begin{block}{Aber}
284 \begin{itemize} 339 \begin{itemize}
285 \item nicht Blog mit RSS-Feed! 340 \item nicht Blog mit RSS-Feed!
286 \end{itemize} 341 \end{itemize}
287 \end{block} 342
288 343
289 } 344
290 345
291 346
292 \subsection{Erweiterungen} 347
293 % Erweiterungen, verbleibende Probleme, Kompromisse beim Design 348
294 \frame{ \frametitle{} 349 %\subsection{Erweiterungen}
295 350 %% Erweiterungen, verbleibende Probleme, Kompromisse beim Design
296 \begin{block}{} 351 \subsection{Mögliche Erweiterungen des Patterns}
297 \end{block} 352
298 353 \paragraph{Ein Observer und mehrere Subjects}
299 } 354 \begin{itemize}
300 355 \item Der Name des Subjects muss mitgesendet werden.
301 356 \end{itemize}
302 357
358
359 \paragraph{Nur für bestimmte Informationen anmelden}
360 \begin{itemize}
361 \item Oberservers melden sich nur für bestimmte Informationen an
362 \item Es werden weniger uninteressante Updates gesendet
363 \end{itemize}
364
365
366 \paragraph{UpdateManager}
367 \begin{itemize}
368 \item Bei komplexen Update-Zusammenhängen empfehlenswert
369 \item vermittelt zwischen Subject und Observer
370 \item (Mehr dazu in der Ausarbeitung)
371 \end{itemize}
372
373
374
375
376 \paragraph{Wer ruft notify() auf?}
377
378 \subparagraph{Das Subject}
379 \begin{itemize}
380 \item[+] notify() wird sicher bei jedem setState() aufgerufen
381 \item[-] hohe Update-Kosten bei Änderungen en-block
382 \end{itemize}
383
384
385 \subparagraph{Der Observer}
386 \begin{itemize}
387 \item[+] intelligenter Zeitpunkt des notify()-Aufrufs möglich
388 \item[-] der Client darf den notify()-Aufruf nicht vergessen
389 \end{itemize}
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414 \newpage
303 \section{Zusammenfassung} 415 \section{Zusammenfassung}
304 \frame{ %\frametitle{Zusammenfassend} 416 %\textbf{Zusammenfassend}
305 \begin{block}{Zusammenfassung} 417 \paragraph{Zusammenfassung}
306 \begin{itemize} 418 \begin{itemize}
307 \item 419 \item Menschen denken basierend auf der Realität
308 \item 420 \item deshalb Design Patterns auf Realität zurückführen
309 \item 421 \item Patterns anwenden weil man es in der Realität auch so machen würde
310 \end{itemize} 422 \end{itemize}
311 \end{block} 423
312 424
313 \pause 425
314 426
315 \begin{block}{Fazit} 427
316 \begin{itemize} 428 Erklaerung des Vorgehens
317 \item 429 Frage: war es erfolgreich?
318 \item 430 \textbf{}
319 \item 431
320 \end{itemize} 432 \paragraph{}
321 \end{block} 433
322 } 434
323 435
324 436
325 \section{Fragen} 437 \section{Abschließend}
326 \frame{ \frametitle{Fragen?} 438 \paragraph{Verwendete Software}
327 \vspace{5ex}
328 \centerline{\huge ?}
329 }
330
331
332 % Erklaerung des Vorgehens
333 % Frage: war es erfolgreich?
334 \frame{ \frametitle{}
335
336 \begin{block}{}
337 \end{block}
338
339 }
340
341
342 \frame{ \frametitle{Abschließend}
343 \begin{block}{Verwendete Software}
344 \begin{itemize} 439 \begin{itemize}
345 \item Debian GNU/Linux 440 \item Debian GNU/Linux
346 \item \LaTeX-Beamer und \texttt{pdflatex} 441 \item \LaTeX-Beamer und \texttt{pdflatex}
347 \item Vim 442 \item Vim
348 \item qiv und ImageMagick 443 \item qiv und ImageMagick
349 \item Mercurial 444 \item Mercurial
350 \end{itemize} 445 \end{itemize}
351 \end{block} 446
352 447
353 \begin{block}{} 448 \paragraph{}
354 \vspace{3ex} 449 \vspace{3ex}
355 \centerline{\textbf{Danke für eure Aufmerksamkeit}} 450 \centerline{\textbf{Danke für eure Aufmerksamkeit}}
356 \end{block} 451
357 } 452
358 453
359 454
360 % Code (Beispiel-Implementierung) 455
361 456
362 457
363 458
364 459 \appendix
365 460
366 461 \section{Code}
367 %\input{main2.tex} 462 \textbf{Code? --- Nein, kein Code!}
463 \paragraph{Denn}
464 \begin{center}
465 \textbf{ Implementierungen sind Schall und Rauch,\\
466 Konzepte dagegen bleiben bestehen! }
467 \end{center}
468
469
470 \vspace{4ex}
471 {\scriptsize
472 \paragraph{}
473 \textit{ Beispiel-Implementierung in der Ausarbeitung. }
474
475 }
476
477
478
479
480
481
482
483
484
368 485
369 486
370 \end{document} 487 \end{document}
371
372
373
374
375
376
377 %\subsubsection{Fehlteilmanagement}
378 %\frame{ \frametitle{Fehlteilmanagement}
379 % %\includegraphics[width=10cm]{Pics/cc.png}
380 %}
381
382 % \vspace{2ex}