diff options
| author | Paul Buetow <paul@buetow.org> | 2008-08-10 01:06:15 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-08-10 01:06:15 +0000 |
| commit | 01a1338f8ee2f554ffac3f8088add33d9b8409d0 (patch) | |
| tree | 035278e15d6f4bc6464b80ee902109b8553834a6 | |
| parent | 715606d94eaf6162ce1f73f076f235e8014063de (diff) | |
new colors.
| -rw-r--r-- | LaTeX/argouml.zargo | bin | 50590 -> 51667 bytes | |||
| -rw-r--r-- | LaTeX/chapters/implementierung.tex | 21 | ||||
| -rw-r--r-- | LaTeX/diplomarbeit.pdf | 6240 | ||||
| -rw-r--r-- | LaTeX/images/client-server-protokolle.eps | 100 | ||||
| -rw-r--r-- | LaTeX/images/client-server.eps | 6 | ||||
| -rw-r--r-- | LaTeX/images/core-time.eps | 34 | ||||
| -rw-r--r-- | LaTeX/images/core.eps | 44 | ||||
| -rw-r--r-- | LaTeX/images/events.eps | 38 | ||||
| -rw-r--r-- | LaTeX/images/exceptions.eps | 12 | ||||
| -rw-r--r-- | LaTeX/images/prefs-editors.eps | 62 | ||||
| -rw-r--r-- | LaTeX/images/prefs.eps | 16 | ||||
| -rw-r--r-- | LaTeX/images/protocols.eps | 44 | ||||
| -rw-r--r-- | LaTeX/images/serialize.eps | 10 | ||||
| -rw-r--r-- | LaTeX/images/simulator.eps | 36 | ||||
| -rw-r--r-- | LaTeX/images/utils.eps | 32 | ||||
| -rw-r--r-- | LaTeX/images/wrapping.eps | 333 | ||||
| -rw-r--r-- | LaTeX/wrapping.zargo | bin | 0 -> 4023 bytes |
17 files changed, 3741 insertions, 3287 deletions
diff --git a/LaTeX/argouml.zargo b/LaTeX/argouml.zargo Binary files differindex 579a0d2..0b15b8e 100644 --- a/LaTeX/argouml.zargo +++ b/LaTeX/argouml.zargo diff --git a/LaTeX/chapters/implementierung.tex b/LaTeX/chapters/implementierung.tex index 86ed5da..6679c56 100644 --- a/LaTeX/chapters/implementierung.tex +++ b/LaTeX/chapters/implementierung.tex @@ -98,6 +98,10 @@ Alle Variablen die als Prefix \textit{lang}, \textit{keyevent}, \textit{div} ode \subsection{Editorobjekte}
+Wie Variablen intern abgespeichert werden ist bereits bekannt. F\"{u}r das Editieren der Variablen werden Editor-Objekte verwendet. Auf Abbildung \ref{fig:PackagePrefsEditors} ist die Klassenstruktur des dazugeh\"{o}rigen Paketes \textit{prefs.editors} angegeben.
+
+Die Basis eines Editors stellt die abstrakte Klasse \textit{VSAbstractEditor} dar, dem ein \textit{VSPrefs} Objekt zum Editieren \"{u}bergeben wird. Ein Editor stellt alle verf\"{u}gbaren und nicht-versteckten Variablen des \textit{VSPrefs}-Objektes im GUI dar und bietet gleichzeitig die M\"{o}glichkeit alle Variablen dar\"{u}ber zu editieren an. F\"{u}r das Editieren von Farbwerten wird auf \textit{VSColorChooser} zur\"{u}ckgegriffen. Die Klasse \textit{VSEditorTable} ist f\"{u}r das \textit{JTable}-Objekt aus Java's Swing-Bibliothek zust\"{a}ndig, welches bei der graphischen Darstellung aller Variablen eingesetzt wird. Die abstrakte Klasse \textit{VSAbstractBetterEditor} wurde, wegen der \"{U}bersicht, als Zwischenschritt eingef\"{u}gt.
+
\begin{figure}[h]
\centering
\includegraphics[width=10.5cm]{images/prefs-editors}
@@ -105,13 +109,7 @@ Alle Variablen die als Prefix \textit{lang}, \textit{keyevent}, \textit{div} ode \label{fig:PackagePrefsEditors}
\end{figure}
-Wie Variablen intern abgespeichert werden ist bereits bekannt. F\"{u}r das Editieren der Variablen werden Editor-Objekte verwendet. Auf Abbildung \ref{fig:PackagePrefsEditors} ist die Klassenstruktur des dazugeh\"{o}rigen Paketes \textit{prefs.editors} angegeben.
-
-Die Basis eines Editors stellt die abstrakte Klasse \textit{VSAbstractEditor} dar, dem ein \textit{VSPrefs} Objekt zum Editieren \"{u}bergeben wird. Ein Editor stellt alle verf\"{u}gbaren und nicht-versteckten Variablen des \textit{VSPrefs}-Objektes im GUI dar und bietet gleichzeitig die M\"{o}glichkeit alle Variablen dar\"{u}ber zu editieren an. F\"{u}r das Editieren von Farbwerten wird auf \textit{VSColorChooser} zur\"{u}ckgegriffen. Die Klasse \textit{VSEditorTable} ist f\"{u}r das \textit{JTable}-Objekt aus Java's Swing-Bibliothek zust\"{a}ndig, welches bei der graphischen Darstellung aller Variablen eingesetzt wird. Die abstrakte Klasse \textit{VSAbstractBetterEditor} wurde, wegen der \"{U}bersicht, als Zwischenschritt eingef\"{u}gt.
-
-Die Klasse \textit{VSSimulatorEditor} dient f\"{u}r das Editieren der globalen Simulationseinstellungen und \textit{VSProcessEditor} f\"{u}r das Editieren der Prozesseinstellungen sowie der dazugeh\"{o}rigen Protokollvariablen. Da diese beiden Klassen von \textit{VSAbstractBetterEditor} erben, k\"{o}nnen sie mithilfe von \textit{VSEditorFrame} in einem separaten Fenster angezeigt werden. Alternativ k\"{o}nnen die Editoren auch in der Sidebar im Tab ``Variablen'' angezeigt werden. Auf Abbildung \ref{fig:Simulationseinstellungen} wurde bereits ein \textit{VSEditorFrame} in Aktion gesehen.
-
-F\"{u}r Protokolle gibt es keine separate Editor-Klasse, da sie bereits vom Prozesseditor aus editiert werden k\"{o}nnen. Dabei iteriert der Prozesseditor \"{u}ber alle f\"{u}r den jeweiligen Prozess verf\"{u}gbaren Protokollobjekte und f\"{u}gt deren Variablen zus\"{a}tzlich in den Prozesseditor ein. Somit erscheinen die Prozess- und die dazugeh\"{o}rigen Protokollvariablen im selben Editor, womit dem Benutzer eine bessere \"{U}bersicht geboten wird.
+Die Klasse \textit{VSSimulatorEditor} dient f\"{u}r das Editieren der globalen Simulationseinstellungen und \textit{VSProcessEditor} f\"{u}r das Editieren der Prozesseinstellungen sowie der dazugeh\"{o}rigen Protokollvariablen. Da diese beiden Klassen von \textit{VSAbstractBetterEditor} erben, k\"{o}nnen sie mithilfe von \textit{VSEditorFrame} in einem separaten Fenster angezeigt werden. Alternativ k\"{o}nnen die Editoren auch in der Sidebar im Tab ``Variablen'' angezeigt werden. Auf Abbildung \ref{fig:Simulationseinstellungen} wurde bereits ein \textit{VSEditorFrame} in Aktion gesehen. Auf Abbildung \ref{fig:NeueSimulationVariaben} wurde hingegen ein Prozesseditor in der Sidebar ge\"{o}ffnet. F\"{u}r Protokolle gibt es keine separate Editor-Klasse, da sie bereits vom Prozesseditor aus editiert werden k\"{o}nnen. Dabei iteriert der Prozesseditor \"{u}ber alle f\"{u}r den jeweiligen Prozess verf\"{u}gbaren Protokollobjekte und f\"{u}gt deren Variablen zus\"{a}tzlich in den Prozesseditor ein. Somit erscheinen die Prozess- und die dazugeh\"{o}rigen Protokollvariablen im selben Editor, womit dem Benutzer eine bessere \"{U}bersicht geboten wird.
\section{Ereignisse}
@@ -224,10 +222,17 @@ Jede Simulation besitzt genau eine Instanz von \textit{VSTaskManager}. Eine Inst \label{fig:PackageCore}
\end{figure}
-Eine Instanz von \textit{VSMessage} stellt eine Nachricht dar, die von einem Prozess verschickt wird. F\"{u}r jedes Versenden einer Nachricht wird hiervon eine Instanz gebildet, wo der Senderprozess die zu verschickende Daten ablegt. Da \textit{VSMessage} von \textit{VSPrefs} erbt, k\"{o}nnen zwischen zwei Prozessen beliebige Datentypen (Tabelle \ref{tb:VariablenDatentypen}) \"{u}ber eine Nachricht verschickt werden. Anschlieend wird f\"{u}r jeden Empf\"{a}ngerprozess das neues Ereignisobjekt der Klasse \textit{VSMessageReceiveEvent} angelegt, welche eine Referenz der verschickten Nachricht besitzt. Danach wird ein \textit{VSTask}-Objekt instanziert, wo die Referenz auf das Ereignisobjekt und das dazugeh\"{o}rige Prozessobjekt sowie die Ereigniseintrittszeit als Attribute gespeichert werden. Das \textit{VSTask}-Objekt wird dann dem Task-Manager "{u}bergeben, der das dazugeh\"{o}rige Ereignis ausf\"{u}hrt, wenn die Ereigniseintrittszeit eingetroffen ist. Via Java-Polymorphie wird das \textit{VSMessageReceiveEvent}-Objekt in ein \textit{VSAbstractEvent} umgewandelt.
+Eine Instanz von \textit{VSMessage} stellt eine Nachricht dar, die von einem Prozess verschickt wird. F\"{u}r jedes Versenden einer Nachricht wird hiervon eine Instanz gebildet, wo der Senderprozess die zu verschickende Daten ablegt. Da \textit{VSMessage} von \textit{VSPrefs} erbt, k\"{o}nnen zwischen zwei Prozessen beliebige Datentypen (Tabelle \ref{tb:VariablenDatentypen}) \"{u}ber eine Nachricht verschickt werden. Anschlieend wird f\"{u}r jeden Empf\"{a}ngerprozess das neues Ereignisobjekt der Klasse \textit{VSMessageReceiveEvent} angelegt, welche eine Referenz der verschickten Nachricht besitzt. Danach wird ein \textit{VSTask}-Objekt instanziert, wo die Referenz auf das Ereignisobjekt und das dazugeh\"{o}rige Prozessobjekt sowie die Ereigniseintrittszeit als Attribute gespeichert werden. Das \textit{VSTask}-Objekt wird dann dem Task-Manager "{u}bergeben, der das dazugeh\"{o}rige Ereignis ausf\"{u}hrt, wenn die Ereigniseintrittszeit eingetroffen ist. Die Verschachtelung der Objekte beim Verschicken einer Nachricht ist auf Abbildung \ref{fig:Wrapping} dargestellt. Via Java-Polymorphie wird das \textit{VSMessageReceiveEvent}-Objekt in ein \textit{VSAbstractEvent} umgewandelt.
Erw\"{a}hnentswert ist auch die Klasse \textit{VSMessageStub}, welche ein \textit{VSMessage} kapselt. Ihr Zweck ist das Verstecken einiger Methoden von \textit{VSMessage} im Protokoll-API, welches f\"{u}r die Erstellung eigener Protokolle dient. Der Protokoll-Entwickler soll m\"{o}glichst nichts falsch machen k\"{o}nnen und deswegen soll den Protokoll-API ein eingeschr\"{a}nkter Funktionsumpfang zur Verf\"{u}rung gestellt werden. Da sich \textit{VSMessageStub} im selben Paket wie \textit{VSMessage} befindet, kann \textit{VSMessageStub} auf paket-private Methoden von \textit{VSMessage} zugreifen. Protokolle hingegen werden in einem anderen Paket implementiert und haben somit keinen Zugriff auf diese paket-privaten Methoden. Zwar kann der Protokollentwickler ein eigenes \textit{VSMessageStub}-Objekt anlegen, jedoch kann er auf diese Weise besser unterscheiden, auf welche Mehhoden er zugreifen sollte und auf welche nicht. Das Protokoll-API wird sp\"{a}ter genauer behandelt.
+\begin{figure}[h]
+ \centering
+ \includegraphics[width=11.0cm]{images/wrapping}
+ \caption{Gekapseltes \textit{VSMessage} im \textit{VSMessageReceiveEvent}-Objekt}
+ \label{fig:Wrapping}
+\end{figure}
+
Der Task-Manager speichert anschlieend die Empfangsereignisse in den lokalen Warteschlangen der Empf\"{a}ngerprozesse. Die Nachricht kommt bei einem Empf\"{a}ngerprozess an, sobald das Ereignis f\"{u}r den Empfang eintritt. F\"{u}r die korrekte Implementierung der Lamport- und Vektor-Zeitstempel wird jeder Nachricht automatisch eine Referenz auf die Lamport- sowie auf die Vektorzeit des sendenden Prozesses als Attribut beigef\"{u}gt. F\"{u}r die \"{U}berpr\"{u}fung des Protokolls wird in jeder Nachricht auch der Klassenname des jeweiligen Protokolls abgespeichert.
Eine Instanz von \textit{VSInternalProcess} repr\"{a}sentiert einen simulierten Prozess. Ein \textit{VSInternalProcess} stellt alle vom Simulator intern verwendeten Methoden zur Verf\"{u}gung, w\"{a}hrend ein \textit{VSAbstractProcess} lediglich Methoden hat, die man im Protokoll-API f\"{u}r die Erstellung eigener Protokolle verwenden darf. Da \textit{VSAbstractProcess} abstrakt ist und hiervon keine Instanz gebildet werden darf, muss f\"{u}r einen neuen Prozesses stets ein \textit{VSInternalProcess}-Objekt erstellt werden. Via Polymorphie wird dieses Objekt nach \textit{VSAbstractProcess} umgewandelt und so dem Protokoll-API zur Verf\"{u}gung gestellt. Beispielsweise darf mit \textit{getTasks()} nur vom Simulator intern auf die Priorit\"{a}ts-Warteschlangen zugegriffen werden, w\"{a}hrend man im Protokoll-API selbiges vermeiden sollte und auch gar nicht direkt m\"{o}glich ist. Hierf\"{u}r h\"{a}tte man auch ein Stub-Objekt \textit{VSProcessStub} verwenden k\"{o}nnen. Da aber so gut wie alle paar Millisekunden auf die Methoden von \textit{VSInternalProcess} zugegriffen wird, wurde hier aus Performancegr\"{u}nden der Weg \"{u}ber eine Vererbungungsstufe preferiert.
diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf index d6219bf..12142b4 100644 --- a/LaTeX/diplomarbeit.pdf +++ b/LaTeX/diplomarbeit.pdf @@ -812,7 +812,7 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 276 0 obj << -/Length 2090 +/Length 2088 /Filter /FlateDecode >> stream @@ -822,11 +822,7 @@ xX?7k+/^g7OZ,'VkݼθVxQm͒Eq{WViwOtv ZˋWWc|2DXLxǫyL1}pL}EyNZ[oǢ6ө(Btz*MЩ\60;G0IZM%z]Ն&Y"zg/<TKFaz9=~=ڎ=U$ZdEð{©9(" H1y% 8&^ApgY`\B\&(41&,t(kJ-Uʎ~
G@x|7U[H^o.E[)k@:L Ǖ7ۆr=AtpXf8]O <̌˕I<j&|ӏ|Aw<^&ΓY21M"ӘDSγ\UzU+N;:6b@Ez -zNA&Myl菓&z0ηB(%YDlU])wHt=y
%zMV9JNP'b
̜K.N2'̭W%<F/G$}Oj<ŘەDS<ol3 -= -G?qg²,t<n&*?!rWN!^qjU< -sql5
bWyu[ׇC
ʟ^Nz/^uu^
3mщY%7chöU6?3c&_$kPּ-O\:=$;]Y19dXubvq* -*2ˆ}j"8@
qZjGkXVw["Dn:ۅl#W.Z%і+LzU wb&'\[&wRiUJ$BUnO!c}[!B^+}8C_
TDWC*̇'|Dupz³6?>_\@o=h㘝"Xn^Fpoճv2t+8Vȇݟ.zfV&ϼnfsS? endstream +zNA&Myl菓&z0ηB(%YDlU])wHt=y
%zMV9JNP'b
̜K.N2'̭W%<F/G$}ORcV;lWeNO/$?dؾ endobj 275 0 obj << /Type /Page @@ -1241,15 +1237,17 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 366 0 obj << -/Length 1435 +/Length 1573 /Filter /FlateDecode >> stream -xKo6)t -_Cآa=86֏Tvb?}G$S8JV5rǏi3*ΌnWٮ{uh͛ -}z???%A rЂV3IsKE=
szVoұj<XOzTcρbL;2 >%AM`J(~EԦMǻTP!ahD{R!57TZڿnٕ77: -{kIMrQu[@1n{UQ~t"`,Lhb碳{8Te~ݻxޔޤu Yf$ރQXw{V]#BVb{=ڰGDBMFU -DEƚgf$ ^8fj2e +xKo6:XV|c@%am+}Һ(;%-%#' +Z$YZk43\ǓL1ZdVY'om7Ʒٷ?O +F3j!5ž^(wSq<7"3H!/nvwuq8 +`m-EH9VK.,D/j4(ԔԤСjjH3rP":\TkT9!vMv%U)#]3`Ho8sFHäb(<YRӛfB.iAam Uc7Ȟ}nh ?
j&~Cc0ˆ$ؔؤࡷxwNF]T`wFl ׂ&̤6f1Bɦ&gil*"S`9%E~})&p^ +/Iuo5ͤ*19[1vIE]wh\A-lxsM2.L=t%GߝՌ WL݁$_FO +w&./ēQm%oZ_֬5wln+w5Vb73ʣ;*L}*?j&{5{z(~~ uZ0A`g˚|6R
e5.l7A?ˋ$фДځZm#8!uR10*FM
?缫̻nC3
6HU۲t~m*Tcےxk4V;n|x !2uQe2HgJsgԲX͗7SUc~x?uN,Lf) )UJgUR[jd%*kRF-bQ}<d0ukM'4Zݟ2lMƛ?Z&.*IYDڴpEp7}ϗB-8 +W/Έξ+~Z=PcR9Ul[TH)
RZQg{kcX >@H::AOs6/fcendstream endobj 365 0 obj << /Type /Page @@ -1257,7 +1255,7 @@ endobj /Resources 364 0 R /MediaBox [0 0 595.2757 841.8898] /Parent 273 0 R -/Annots [ 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R ] +/Annots [ 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R ] >> endobj 368 0 obj << /Type /Annot @@ -1318,52 +1316,59 @@ endobj 376 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [86.8628 603.5131 254.8524 613.7814] +/Rect [86.8628 603.4054 357.6869 613.9877] /Subtype /Link /A << /S /GoTo /D (figure.3.6) >> >> endobj 377 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [86.8628 587.2894 249.4056 595.8542] +/Rect [86.8628 585.5858 254.8524 595.8542] /Subtype /Link /A << /S /GoTo /D (figure.3.7) >> >> endobj 378 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [86.8628 569.3622 190.0803 577.927] +/Rect [86.8628 569.3622 249.4056 577.927] /Subtype /Link /A << /S /GoTo /D (figure.3.8) >> >> endobj 379 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [86.8628 551.4349 296.1243 559.9997] +/Rect [86.8628 551.4349 190.0803 559.9997] /Subtype /Link /A << /S /GoTo /D (figure.3.9) >> >> endobj 380 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [86.8628 531.6965 202.4313 542.2787] +/Rect [86.8628 533.5077 296.1243 542.0725] /Subtype /Link /A << /S /GoTo /D (figure.3.10) >> >> endobj 381 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [86.8628 515.5805 168.9961 524.1452] +/Rect [86.8628 513.7692 202.4313 524.3515] /Subtype /Link /A << /S /GoTo /D (figure.3.11) >> >> endobj 382 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [86.8628 495.9497 195.644 506.218] +/Rect [86.8628 497.6532 168.9961 506.218] /Subtype /Link /A << /S /GoTo /D (figure.3.12) >> >> endobj +383 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [86.8628 478.0224 195.644 488.2908] +/Subtype /Link +/A << /S /GoTo /D (figure.3.13) >> +>> endobj 367 0 obj << /D [365 0 R /XYZ 74.4095 793.4011 null] >> endobj @@ -1371,7 +1376,7 @@ endobj /Font << /F61 280 0 R /F28 217 0 R >> /ProcSet [ /PDF /Text ] >> endobj -400 0 obj << +402 0 obj << /Length 1852 /Filter /FlateDecode >> @@ -1381,158 +1386,158 @@ xYoI)іM#Y`A.$g3F>Xȧz.YBV1>a?I$u*3N agTCT~']L-S@fCUu}Y?ϯ5p5~;6isV"ӍYTj;hULUU߶K2FgR܇ILF5b1EZC JfAvqkp
w o&b% JKo}c!
0xq{怭QC{'hݦًZ=ʛޝM/H2Obl(ga1UBaHݎd3.U{TuPN!֨L<(g!?m($IJbZ]$h endobj -399 0 obj << +401 0 obj << /Type /Page -/Contents 400 0 R -/Resources 398 0 R +/Contents 402 0 R +/Resources 400 0 R /MediaBox [0 0 595.2757 841.8898] /Parent 273 0 R -/Annots [ 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R ] +/Annots [ 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R ] >> endobj -403 0 obj << +405 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 612.425 338.2165 623.0073] /Subtype /Link /A << /S /GoTo /D (table.2.1) >> >> endobj -404 0 obj << +406 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 594.4978 298.9616 605.0801] /Subtype /Link /A << /S /GoTo /D (table.2.2) >> >> endobj -405 0 obj << +407 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 576.5706 180.2935 586.9466] /Subtype /Link /A << /S /GoTo /D (table.2.3) >> >> endobj -406 0 obj << +408 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 558.6433 257.1971 569.0193] /Subtype /Link /A << /S /GoTo /D (table.2.4) >> >> endobj -407 0 obj << +409 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 540.7161 289.7984 551.2984] /Subtype /Link /A << /S /GoTo /D (table.2.5) >> >> endobj -408 0 obj << +410 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 522.7889 256.1481 533.1649] /Subtype /Link /A << /S /GoTo /D (table.2.6) >> >> endobj -409 0 obj << +411 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 504.8616 335.2394 515.4439] /Subtype /Link /A << /S /GoTo /D (table.2.7) >> >> endobj -410 0 obj << +412 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 486.9344 406.6109 497.5167] /Subtype /Link /A << /S /GoTo /D (table.2.8) >> >> endobj -411 0 obj << +413 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 469.0072 319.7369 479.3832] /Subtype /Link /A << /S /GoTo /D (table.2.9) >> >> endobj -412 0 obj << +414 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 451.0799 295.5011 461.6622] /Subtype /Link /A << /S /GoTo /D (table.2.10) >> >> endobj -413 0 obj << +415 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 433.1527 301.3831 443.735] /Subtype /Link /A << /S /GoTo /D (table.2.11) >> >> endobj -414 0 obj << +416 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 415.2255 371.7415 425.8077] /Subtype /Link /A << /S /GoTo /D (table.2.12) >> >> endobj -415 0 obj << +417 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 397.2982 385.1908 407.8805] /Subtype /Link /A << /S /GoTo /D (table.2.13) >> >> endobj -416 0 obj << +418 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 379.371 276.0623 389.747] /Subtype /Link /A << /S /GoTo /D (table.2.14) >> >> endobj -417 0 obj << +419 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 361.4438 286.3466 371.8198] /Subtype /Link /A << /S /GoTo /D (table.2.15) >> >> endobj -418 0 obj << +420 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 343.5165 356.705 353.8925] /Subtype /Link /A << /S /GoTo /D (table.2.16) >> >> endobj -419 0 obj << +421 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 325.5893 370.1543 336.1716] /Subtype /Link /A << /S /GoTo /D (table.2.17) >> >> endobj -420 0 obj << +422 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 299.5107 177.8368 308.0754] /Subtype /Link /A << /S /GoTo /D (table.3.1) >> >> endobj -421 0 obj << +423 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [86.8628 281.5834 345.4789 290.3545] /Subtype /Link /A << /S /GoTo /D (table.3.2) >> >> endobj -401 0 obj << -/D [399 0 R /XYZ 74.4095 793.4011 null] +403 0 obj << +/D [401 0 R /XYZ 74.4095 793.4011 null] >> endobj -402 0 obj << -/D [399 0 R /XYZ 74.4095 643.0739 null] +404 0 obj << +/D [401 0 R /XYZ 74.4095 643.0739 null] >> endobj -398 0 obj << +400 0 obj << /Font << /F26 214 0 R /F28 217 0 R /F61 280 0 R >> /ProcSet [ /PDF /Text ] >> endobj -443 0 obj << +445 0 obj << /Length 1758 /Filter /FlateDecode >> @@ -1546,35 +1551,35 @@ xڍXKo8W(coImMrL˄ef_qHYv 3A;O2eLDΞ /2|Cb&"6eKBz?g9z{ NCAlȓ)WKi648r2'NBr}O=M~v%4,\95n8ie~Asg~0=Uh4R+މ k*e֣̣uixzQ&犡&f61،pׅSZPs硅z=ĸĶ6ΕA{ܥ5;f
.jGr_fNO^c38>/L4AI}\;duX3a!Խ]^jc~4(G#6.Zrd*c[k/!V+Ymx&|>r;s :*n|s9eegEI7W巇,A#:7F~ȉ~e?]endstream endobj -442 0 obj << +444 0 obj << /Type /Page -/Contents 443 0 R -/Resources 441 0 R +/Contents 445 0 R +/Resources 443 0 R /MediaBox [0 0 595.2757 841.8898] /Parent 273 0 R -/Annots [ 445 0 R ] +/Annots [ 447 0 R ] >> endobj -445 0 obj << +447 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [75.9058 417.1708 102.2418 425.7356] /Subtype /Link /A << /S /GoTo /D (cite.Tanenbaum) >> >> endobj -444 0 obj << -/D [442 0 R /XYZ 74.4095 793.4011 null] +446 0 obj << +/D [444 0 R /XYZ 74.4095 793.4011 null] >> endobj 6 0 obj << -/D [442 0 R /XYZ 74.4095 771.7323 null] +/D [444 0 R /XYZ 74.4095 771.7323 null] >> endobj 10 0 obj << -/D [442 0 R /XYZ 74.4095 570.9064 null] +/D [444 0 R /XYZ 74.4095 570.9064 null] >> endobj -441 0 obj << +443 0 obj << /Font << /F26 214 0 R /F28 217 0 R /F61 280 0 R >> /ProcSet [ /PDF /Text ] >> endobj -451 0 obj << +453 0 obj << /Length 1854 /Filter /FlateDecode >> @@ -1585,91 +1590,91 @@ xڭXs6_GR%۶~\ֵAX$n,YrvA@ Sbyd %#.zD.\]W ך~}=Erax</:C1mUp{{h%m.Oa'0)SR`WabjDnr,>]iwxuWo_PU;"M,X|YJĀԡB'l~rX<K/R pX@ƞc;MHS{BwQP1L^ydBPFZBj<Y0\<R!z 0zT9̞P/]v9V=3im:ͻ+(ZZpjcM@g4Io)46k2BLDbg0[dCPse .Eo\zT1jqs1=D. J}U /<sK'< endobj -450 0 obj << +452 0 obj << /Type /Page -/Contents 451 0 R -/Resources 449 0 R +/Contents 453 0 R +/Resources 451 0 R /MediaBox [0 0 595.2757 841.8898] -/Parent 457 0 R -/Annots [ 454 0 R ] +/Parent 459 0 R +/Annots [ 456 0 R ] >> endobj -447 0 obj << +449 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/usr/home/buetow/svn/vs/trunk/LaTeX/images/client-server.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 458 0 R +/PTEX.InfoDict 460 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 382.00000000 112.00000000] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 459 0 R ->>/Font << /R8 460 0 R >> +/R7 461 0 R +>>/Font << /R8 462 0 R >> >> -/Length 461 0 R +/Length 463 0 R /Filter /FlateDecode >> stream -xTn0+xl{p%RE[$F/A,E"N~Ejx0"g槮Ӣ>yTFc5Px,4/?l8-4{I$&uAGсq4dtq@TR'a:̵e <TUV%;Rb{qu ܃2Ů˴1cxʄwK}ՙlz#U&&}¬bToYJZn 9 -(C!R;}tI6<o}/[˿w?K\2x
, - +xT=o0+8\(iMQt+t(磈] ҿ_82|83H`@SiQܿ(vql!;;>i^&tYߟT6E
Iu@ɞkNbRw~=p\1
cB*0KfAB[JυF +ªcGTl/.]/=荧Age]i1OexʠpqQ<=:KeCljeXlu aVH;8O-KiD-w2ǃkC8p]Z뱵@Աb7i +{QB{7bw"C|ܥ|<[@_ۼO.~f-g/8撁4<냳(|`ԗtj>RvO%oXBǼ۟u^s|Q?ITL0
/?DZendstream endobj -458 0 obj +460 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809233926Z00'00') -/ModDate (D:20080809233926Z00'00') +/CreationDate (D:20080810030234Z00'00') +/ModDate (D:20080810030234Z00'00') >> endobj -459 0 obj +461 0 obj << /Type /ExtGState /OPM 1 >> endobj -460 0 obj +462 0 obj << /BaseFont /Helvetica /Type /Font /Subtype /Type1 >> endobj -461 0 obj -452 +463 0 obj +460 endobj -454 0 obj << +456 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [439.9225 458.2842 454.378 468.8664] /Subtype /Link /A << /S /GoTo /D (figure.1.1) >> >> endobj -452 0 obj << -/D [450 0 R /XYZ 74.4095 793.4011 null] +454 0 obj << +/D [452 0 R /XYZ 74.4095 793.4011 null] >> endobj 14 0 obj << -/D [450 0 R /XYZ 74.4095 771.7323 null] +/D [452 0 R /XYZ 74.4095 771.7323 null] >> endobj -453 0 obj << -/D [450 0 R /XYZ 74.4095 659.2541 null] +455 0 obj << +/D [452 0 R /XYZ 74.4095 659.2541 null] >> endobj 337 0 obj << -/D [450 0 R /XYZ 288.3666 523.6815 null] +/D [452 0 R /XYZ 288.3666 523.6815 null] >> endobj -455 0 obj << -/D [450 0 R /XYZ 74.4095 396.6881 null] +457 0 obj << +/D [452 0 R /XYZ 74.4095 396.6881 null] >> endobj -456 0 obj << -/D [450 0 R /XYZ 74.4095 235.3536 null] +458 0 obj << +/D [452 0 R /XYZ 74.4095 235.3536 null] >> endobj -449 0 obj << +451 0 obj << /Font << /F61 280 0 R /F26 214 0 R /F28 217 0 R >> -/XObject << /Im2 447 0 R >> +/XObject << /Im2 449 0 R >> /ProcSet [ /PDF /Text ] >> endobj -464 0 obj << +466 0 obj << /Length 1352 /Filter /FlateDecode >> @@ -1683,76 +1688,73 @@ UԂWM鎞xT5bOOPCRraLsu:KȠ§Jpto #c-ݻЩ ҂φ0ΗX;$q!Lq˝2:϶:*se)])ZLAқLPR$}ɒ')@7Xo{I<gpN6DϾf8ow믃~lhY2 3YdTz0O>%/ Ova &/3kl ,M F[~7)_3ㅏR2v'Jg}#ȷdendstream endobj -463 0 obj << +465 0 obj << /Type /Page -/Contents 464 0 R -/Resources 462 0 R +/Contents 466 0 R +/Resources 464 0 R /MediaBox [0 0 595.2757 841.8898] -/Parent 457 0 R +/Parent 459 0 R >> endobj -448 0 obj << +450 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/usr/home/buetow/svn/vs/trunk/LaTeX/images/client-server-protokolle.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 467 0 R +/PTEX.InfoDict 469 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 376.00000000 320.00000000] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 468 0 R ->>/Font << /R8 469 0 R >> +/R7 470 0 R +>>/Font << /R8 471 0 R >> >> -/Length 470 0 R +/Length 472 0 R /Filter /FlateDecode >> stream -xMo0<;l"îkP6AbGJGb:,P/E
'+Oz?}
l -К-5!Q%"DGzCtΠIəY.0q$R!/AJه7iYza'
dĀ7~ -HU-j\Cmos@8a9rA*Z\id4(%>ih2eC4{y]Te\{}\t^2)W/b5̯@zŨ8#G7 +8 )| -YLa- 7pD7[: -B|jZ%Tp'endstream +xN0y=4# u*Bˈ}4ZgF=4r~/T =ԋ_VHzQ)YocDJx)@/R]9$rAHQH/5a'i\$hU?4DZsYV;º*[>|PS/@,4d@ӋvpѼFWեu;E"-xcv3!_üŬ5,}Fj.bVW9<[mEUqomu +\#aLV$^yf3yd+ǹڝm-;Nn?g;}ݞ@^AԊqBɁڤt<T endobj -467 0 obj +469 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809233926Z00'00') -/ModDate (D:20080809233926Z00'00') +/CreationDate (D:20080810030234Z00'00') +/ModDate (D:20080810030234Z00'00') >> endobj -468 0 obj +470 0 obj << /Type /ExtGState /OPM 1 >> endobj -469 0 obj +471 0 obj << /BaseFont /Helvetica /Type /Font /Subtype /Type1 >> endobj -470 0 obj -499 +472 0 obj +548 endobj -465 0 obj << -/D [463 0 R /XYZ 74.4095 793.4011 null] +467 0 obj << +/D [465 0 R /XYZ 74.4095 793.4011 null] >> endobj -466 0 obj << -/D [463 0 R /XYZ 74.4095 750.3359 null] +468 0 obj << +/D [465 0 R /XYZ 74.4095 750.3359 null] >> endobj 338 0 obj << -/D [463 0 R /XYZ 281.7271 358.4221 null] +/D [465 0 R /XYZ 281.7271 358.4221 null] >> endobj -462 0 obj << +464 0 obj << /Font << /F61 280 0 R /F26 214 0 R /F28 217 0 R >> -/XObject << /Im3 448 0 R >> +/XObject << /Im3 450 0 R >> /ProcSet [ /PDF /Text ] >> endobj -473 0 obj << +475 0 obj << /Length 1763 /Filter /FlateDecode >> @@ -1764,35 +1766,35 @@ xڍn8ޯQbV$%J:&tw[`hrdY˴GwCɒ%7Eh839//B$bQŋ$ CG1zPI.A 0 endobj -472 0 obj << +474 0 obj << /Type /Page -/Contents 473 0 R -/Resources 471 0 R +/Contents 475 0 R +/Resources 473 0 R /MediaBox [0 0 595.2757 841.8898] -/Parent 457 0 R -/Annots [ 477 0 R ] +/Parent 459 0 R +/Annots [ 479 0 R ] >> endobj -477 0 obj << +479 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [126.1829 465.5316 140.6385 476.1138] /Subtype /Link /A << /S /GoTo /D (figure.1.2) >> >> endobj -474 0 obj << -/D [472 0 R /XYZ 74.4095 793.4011 null] +476 0 obj << +/D [474 0 R /XYZ 74.4095 793.4011 null] >> endobj -475 0 obj << -/D [472 0 R /XYZ 74.4095 750.7482 null] +477 0 obj << +/D [474 0 R /XYZ 74.4095 750.7482 null] >> endobj -476 0 obj << -/D [472 0 R /XYZ 74.4095 608.3473 null] +478 0 obj << +/D [474 0 R /XYZ 74.4095 608.3473 null] >> endobj -471 0 obj << +473 0 obj << /Font << /F61 280 0 R /F26 214 0 R /F28 217 0 R >> /ProcSet [ /PDF /Text ] >> endobj -481 0 obj << +483 0 obj << /Length 1160 /Filter /FlateDecode >> @@ -1802,15 +1804,15 @@ xڭWKs6WH͔0ޏⱝI:m%ʁ6!)E9"Uw iJ鴣 l0.JRCvF';%ZhS.ʳµRX+ﱬ}+J"+2pamlhUOH~ kZ((i;GK9e/)-!I!3NlA%0F>*7*!LM|jSv[y r.`+tNq k9Wiy,!88bPq."C_x=(.@>~*<30l7T[%=eghFVCcgzCuIHLiXU|YC.S#K+i;?U&o} D7悝˅pPM.z72AnD)1pujR._k~ǃP+&
O97+T!6y<$u"omY崀tSF`OkDwrL}W]>H?٢1|EP<m`'|#jRUq oF=t|O,:`3P9F0=I$ :t-/b|.r _Mq'X45_wP0,#qqa$rڿ/_/N;6?6_[J0<sJ/1x@ks^+'pA?-Fendstream endobj -480 0 obj << +482 0 obj << /Type /Page -/Contents 481 0 R -/Resources 479 0 R +/Contents 483 0 R +/Resources 481 0 R /MediaBox [0 0 595.2757 841.8898] -/Parent 457 0 R -/Annots [ 483 0 R 484 0 R 485 0 R ] +/Parent 459 0 R +/Annots [ 485 0 R 486 0 R 487 0 R ] >> endobj -478 0 obj << +480 0 obj << /Type /XObject /Subtype /Image /Width 1024 @@ -1832,45 +1834,45 @@ pz폎6?
t?y#rϲP{@Z PZ8 endobj -483 0 obj << +485 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [73.4132 189.397 87.8688 199.9793] /Subtype /Link /A << /S /GoTo /D (figure.2.1) >> >> endobj -484 0 obj << +486 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [389.0928 189.397 403.5483 199.9793] /Subtype /Link /A << /S /GoTo /D (figure.2.2) >> >> endobj -485 0 obj << +487 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [300.1067 135.6153 314.5622 146.1976] /Subtype /Link /A << /S /GoTo /D (figure.2.3) >> >> endobj -482 0 obj << -/D [480 0 R /XYZ 74.4095 793.4011 null] +484 0 obj << +/D [482 0 R /XYZ 74.4095 793.4011 null] >> endobj 18 0 obj << -/D [480 0 R /XYZ 74.4095 771.7323 null] +/D [482 0 R /XYZ 74.4095 771.7323 null] >> endobj 22 0 obj << -/D [480 0 R /XYZ 74.4095 581.9662 null] +/D [482 0 R /XYZ 74.4095 581.9662 null] >> endobj 339 0 obj << -/D [480 0 R /XYZ 250.8743 253.9309 null] +/D [482 0 R /XYZ 250.8743 253.9309 null] >> endobj -479 0 obj << +481 0 obj << /Font << /F26 214 0 R /F28 217 0 R /F61 280 0 R >> -/XObject << /Im4 478 0 R >> +/XObject << /Im4 480 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj -491 0 obj << +493 0 obj << /Length 1704 /Filter /FlateDecode >> @@ -1883,15 +1885,15 @@ gGK_7p 6"T(PMoWȂw1}
0b[wZ*4J<A 6d p1nD*},f#վCJw]Xl-hpvG =wa7n2zc6h٘"OiĬ{v\WWO[lp:
i{Lxܘl|NTtloG2qcCK$?~i2Cf㮣K>%<!E:g=ݴMOd&?17bkjO
cFaxxg/B+wxBY\9xKo] &<o~uYL9i&~Z4V)B$V_endstream endobj -490 0 obj << +492 0 obj << /Type /Page -/Contents 491 0 R -/Resources 489 0 R +/Contents 493 0 R |
