WPC 2lBVYcZ3|Folbook&-yC8DS0y P['CXP"m^8;Noo)CCdy8C88oooooooooo88yyyYQo~čzCyCyd)ooYsdCkz?;w?zdsoY]Nzkkk`CyCyC8CC!CCCCCCCCCCs?oooooȟYddddQ?Q?Q?Q?zddddzzzzkosddkdsoooYYYYsddddkkkkkkzzQ?Q?Q?Q?ow?????zzzzddȧYYY~]~]~]~]NNNzzzzzzĜkz`z`z`s?zY~]NkksdzNy8yd;YUUoooC)CourierTimes RomanTimes Roman BoldTimes Roman ItalicCourier ObliqueCourier Bold ObliqueCourier Bold"m^.=K\\===\g.=.3\\\\\\\\\\33gggQzzpf=Gpfzfpp=3=V\=Q\Q\Q=\\33\3\\\\=G3\\\\QX%Xc=.============\3QQQQQzzQpQpQpQpQ=3=3=3=3\\\\\\\\\\Q\\\\\f\QQQzQzQzQzQ\pQpQpQpQ\\\\\\\\=3=3=3=3G\p3p3p3p3p3\\\\\\z=z=z=fGfGfGfGp3p3p3\\\\\\\pQpQpQ\p3\z=fGp3\\\\\N@.S\=Q\\\\\39\7\7!QQ\==\\ff=Q7ggee3g<%7777777777>>>1eOIIOC=OO%+OCbOO=OI=COOhOOC%%47%17171%777V7777%+77O77155<%%%n%%%%%%%%%%7O1O1O1O1O1bII1C1C1C1C1%%%%O7O7O7O7O7O7O7O7O7O7O1O7O7O7O7O7=7O1O1O1I1I1I1I1O7C1C1C1C1O7O7O7O7O7O7O7O7%%%%+O7CCCCCO7O7O7O7O7O7bOI%I%I%=+=+=+=+CCCO7O7O7O7O7O7hOO7C1C1C1O7CO7I%=+CO7O7O7O7O7N'27%177777"SS7!TT7S!117n%%77l==n%1n!>><$$<<mmBBs,>[N6-KWmmmBBsTNNNN0[TTTBBH6<_<=r9=;w4QY ȃ t wr :4u w Q Y ^ZYXV^P-DD2+9  a,0Qp.(#4UUUUUUUUUUUUU# #2 x-2 x- # x- x-2 #2 # M)8% i+3 #-\  PCkvP#Display P n%| DisplayG#2+ -j #-\  PCkvP#1 P L, 1sssssK'673#-\  PCkvP#Clock P ClockG#2PY#-\  PCkvP#1 P 31\ \2 R 2 R  \ R  R 2 \2 \ K'6z 2 #-\  PCkvP#World P { WorldU1@"I #-\  PCkvP#is displayed on P s#is displayed on T  #  V  I%4 /  #-\  PCkvP#0:1 P  0:1G#2! T# #-\  PCkvP#1 P " 1( (E  ( ( (E  ( .(#4UUUUUUUUUUUUU# #2 x-2 x- # x- x-2 #2 # M)8% i+3 #-\  PCkvP#Display P n%| DisplayG#2+ -j #-\  PCkvP#1 P L, 1\ \2 R 2 R  \ R  R 2 \2 \ K'6z 2 #-\  PCkvP#World P { World}+}Es Es +}+s +s E}E}+K'6 F#-\  PCkvP#Clock P .ClockG#2  #-\  PCkvP#1 P G 1!"!",,!",,!"!"J&5$D(#-\  PCkvP#User P :%User& L+L\ L7c cb7 w 4 1~@ mq m. I+4! "s#-\  PCkvP#... P r ...& ! i g M  N i  i G  G s#G && ' ['D & && ' ['D & &&  rG & &&  rG & &V  : V &V  : V &# # f#K # &# # f#K # & | 8 8 & | 8 8 K-62 k#-\  PCkvP#@Tick P  @Tick& && &Z'v ['y['6 L.7  '#-\  PCkvP#select P _ pselectL(74" #-\  PCkvP#update P update_;JI.#-\  PCkvP# (State, X_Pos, Y_Pos) P _# (State, X_Pos, Y_Pos)L(7E#-\  PCkvP#choose P chooseT0?:2 a&#-\  PCkvP#(display_type) P  (display_type)S/>!#-\  PCkvP#to: desired P  to: desired S/>8r#-\  PCkvP# world P   world'." JAAA&>>">!>">  >  >  >  >>>>> > >>>>> 9>9>:>:>;>;><><>=>=>>>>>?><><>=>=>=><><>;>;>+ >+ > + > + > +G > +Gj > +Hj > +Hj > +Ij > +Ij > +Jj > +Jj >+Kj >+Kj >)Lj >)L  >'M   >'M  >%N  >%N  >#O   >#O " > !P   > !P     > Q     > Q     >R   >R >Sj >Sj > @j >#?j >%?j >'>j >'>j >'> >)=j > =j > =j > =j >"=j >=j >;j >;j >;j >;    >    >;     > ;     >;    >;   >=   >=     >=     >)=     >'>    >'>    >'>  >%?j >#?j >Aj >+Tj >+Sj >*Sj >*Rj >)Rj >+Tj >+T45 >+T >+`(B>+(B>B>%> }}}}}}}}}}} \ \  \  \ Y  Z  Z [[[Z  Z Y w w w u v v wj"j j j j jjj j j j jj"j jAz'." AAAEG̀G+G!̀G!̀G!G ̀G̀G̀G ̀G̀G̀G̀G̀G̀G+ G̀]/\\[[ZZ߀Y߀YހXހX ݀W ݀W ܀V ܀V ۀUۀUڀTڀTـSـS؀R؀R׀Q׀Qր]5BÀB9B ÀB ÀBÀBÀBÀB ÀB ÀBÀBÀBÀBÀBÀB ÀB#ÀB"B#ÀB9BÀA'." ,AAA]] e]eG]YG] YG] E] E]  E]  E ] E]E  ]e ]e ]e]eG]e]eG]e ]e]e ]e ]e ]e ]e ]e  ]e  ]eG]e ]e ]e ]e ]e ]e ]e ]e ]e ]eG]8,G]9+G]:*G];)G]<(]<']=& $]>%$ ]?$# ]@# ]A" ]A"  ]A!$ ]A G]AG]AG]AG]A  ]A   ]A   ]/]/  ].  ].# ]-#]-#],#G],#G]+!G]+"G]*"]*! ])!  ])    ](   ](  ]'  ]'  ]& ]&G]%G]%G]$G]$G]#]#f]"f]"g]! g]! h]  h]  i]i]j]/j]/k]0k]0l]1l]1m]2m]2n]3 n]3 o]4 o]4 p]5 p]5 q]6 q]6 r]7 ]7  =]8 =]8 =]9 =]/=].&]- &]- &],!],! ], ]," ],"], "], "6], "4],"4],"=], "=],  "=],"=],"],=],=],=],=], ],"],# ],#   ]-#    ]-$   ].$   ]/&    ]C)   ]B)=]B(=]C)=]C)]C)]C)]C) ]C) ]C) ]C) ]C) ]C) ]C)=] C)']C)]C)]C) ]C)]C)  ]C)]C)]C) ]C)$]C)$]C)=]C) ]C)  ]C)   ]C)  ]C)  ]C)  ]C)  ]C)  ]C) ]C)=] C)]C]B~]B]C]+R]+DR]+  R]+  R]+ R]+$R]+$R]+R]+ R]+$R]+#R]+DR]+R]+DR]+ R]+R]+ R]+  R]+   R]+  R]+  R]+  R]+ R]+DR]+ R]+ R]+ R]+ R]+ R]+ R]+ R]+ R]+ R]+DR]+R]+R]+R]+ R]+  R]+R]+ R]+  R]+ R]+DR]+  R]+    R]+    R]+ R]+  R]+  R]+  R]+ R]+R]+DR]+R]+ R]+  R]+    R]+   R]+   R]+   R]+   R]+  R]+DR]+R]] ]A{'." 0AAA @@@ @@@(@@@@@@@@@y@Ny@ *y@ y@ y@ y@ y@  y@  y@ y@ y@Ny@y@Ny@ %y@%y@ %y@  y@   y@  y@  y@  y@ y@Ny@+y@ +y@ +y@ $y@ $y@   y@  y@ $y@ $y@Ny@N @@N?@N>@>@ =@ =@  =@"=@=@  =@. =@ =@N=@N=@N =@,  =@  ,=@  ,=@ $=@ $=@   =@  =@ $=@ $=@N=@N>@ *>@ *?@  *!@@  "(O@  "(O@  #(O@  #(O@  "'Q@  "'Q@N&R@N&R@N%S@N%S@N$T@N$T@N#U@N#U@"V@V@W@W@X@X@Y@Y@Z@Z@[@[@\@\@ ]@] ]@] ^@] ^@] _@] _@] `@] `@ a@   a@  b@  b@   c@   c@  d@ d@ e@]e@]f@]f@]g@g@]h@]h@]i@]i@]j@]i@  -k@ -k@ -k@  %k@   %k@  &k@  &k@   %k@  %k@]k@,k@,k@.k@ -k@ .k@ .k@ .k@ .k@ -k@]k@k@ k@ k@ k@k@  k@   k@.k@ k@]k@&k@k@  >@    $@    $@    @     @     @    !@]@] @]k@  ,4@ , 1@  ,0@   $  @   $  @   %  @   %   @   $  @  $  @]k@2k@ 2k@ 2k@ $k@ $+@   @  @ $ @ $ @]   @]  @] @]@]k@k@  k@  k@  k@  k@   k@    k@ . k@ k@]k@5k@ 5k@ 5k@#k@$k@  k@k@$k@#k@]k@3k@2k@ 2k@ *k@ +k@ +k@ +k@ +k@ *k@]k@k@@ @A'." QAAA>>>G> rG>  g> g> 8^> D] > _>  _  > _ > _ >5v>3vG>3vG>G>>G> >> > > > > >  >  >G> > > > > > > > > >G>,G>+G>*G>)G>(>'>& $>%$ >$# ># >" >"  >!$ > G>G>G>G>  >3   >M3   >M!>M!  >M   > ) # > #> #> #G>   #G> !G> "G> "> ! >M!  >M    >M   >M  >M  >M  > >MG>MG>MG>MG>MG>M>MX> %X>$Y> $ Y>  Z>  Z>  [> [> \>  !\>M!]>M"]>M"^>+#^> +#_>+$_> #$`> $% `>   % a> & a> $& b> #' b>M' c>M( c>M( d>M)  >M)  = >M* = >M* = >M+ = >M!= >M & >M & > & > ! > !  >  >"  > " >   " >. "6 > "4 >M"4 >M"= >M "= >,  "= >  ,"= >  ," > #= > $= >   = > = > $  > #" >M#  >M#    >M#     > *$    > ) $    >  )!&     >  !( )    >  ") )= >  ") (= >  "( )= >  "( )= >  !' ) >M' ) >M&) >M&)  >M%)  >M%)  >M$)  >M$)  >M#)  >#)= >w)= >w)= >v)= >v)= >u)= >u)= >t)= >t)= >s)= >s)' >r) >r) >q)  >) >\ )   >\ ) >\ ) >\ )  >\ )$ >\ )$ >\ )$ > )= >   )  >   )   > )    > )   >   )   >   )   >  )   >  )   >\!)  >\!)= >\")= >\")= >#)= >\#)= >\$)= >\$)= >\%)= >\%)= >\%) >  -'q>,'q> ,'q> $'q> %'q> %'q> %'q>  %'q>  $'q>\&p>\&q>\'q>\D>,DD>+DD>-DD> ,DD> -DD> -DD> -  D> -  D> - D>\$D>\$D>\D>\ D>\$D>#D> DD>  DD>   DD>" DD> DD>  DD>.D>DD>\DD>&DD>DD>  D>  D>   D>    D>     D>    D>    D>\  D>\ D>\DD>\ D>  , D> + D>  + D>  # D>  $ D>  $ D>  $ D>  $ D>  #DD>\DD>2DD> 2DD>2DD> #D> $D>   D>  D> $  D> #D>\ D>\  D>\ D>\DD> DD>    D>      D>        D> "  D>    D>    D> .   D>   D>\D>\DD>4DD> 4DD> 4D>$ D>$  D>      D>    D>$   D>$   D>\   D>\  D>\DD>2DD>2DD> 2DD>  *D>  *>  +>  +>  *> *>\>>>>Ag.(#4UUUUUUUUUUUUU n[N&oA%B$,###"   5  ) r i &s8oPb -??m)I&]    b  Xt ^ "H {^ ^ ! ! H"' "k k# # 4$4 $w $ & {& & -';(+(+t)W)W*m+m@,W,WM--.!-.-..g..-&---v-b6-,B*,o+4+*T*)1)(;(Z'o&on[N&oA%B$,###"   5  ) r i &s8oPb -??m)I&]    b  Xt ^ "H {^ ^ ! ! H"' "k k# # 4$4 $w $ & {& & -';(+(+t)W)W*m+m@,W,WM--.!-.-..g..-&---v-b6-,B*,o+4+*T*)1)(;(Z'o&o; %  N -E:GS{{ f  X  p 3 & ]`OCj=&=wj 1  }, #p q  |! ! "U r"> R#( #( $ _$ & B' ' 't O( ( (h ) )E)[[)))N))Q*h*x~*~*kQ*Q*%;*))|)f(f'OX'Ob&f%f#|<#|OOff&||#cm+k O o l/9EC%c m@@WxW; %  N -E:GS{{ f  X  p 3 & ]`OCj=&=wj 1  }, #p q  |! ! "U r"> R#( #( $ _$ & B' ' 't O( ( (h ) )E)[[)))N))Q*h*x~*~*kQ*Q*%;*))|)f(f'OX'Ob&f%f#|<#|OOff&||#cm+k O o l/9EC%c m@@WxW8@WWN@$ @ m m sw,0/   6 !("ZU"k" k""""v" "O "/ k" k" U" U" >"("!u!52!!  dh R ; ; ;R %  G; ; 8@WWN@$ @ m m sw,0/   6 !("ZU"k" k""""v" "O "/ k" k" U" U" >"("!u!52!!  dh R ; ; ;R %  G; ; 0)*j_\G/:|f9-#m P ^ H \H 1 l1 H eH ^ %!t ! ! ! !a ~!%!7 r -E }O]tVjV?)*)@0)*j_\G/:|f9-#m P ^ H \H 1 l1 H eH ^ %!t ! ! ! !a ~!%!7 r -E }O]tVjV?)*)@E=E%~ %~ =E=~ =~ %E%E=M)8 )#V\  PCkP#Current TP XCurrentK'6e#V\  PCkP#State TP 2StateEE\~ \~ E~ ~ \E\EI%4!s#V\  PCkP#New TP ?NewK'6]#V\  PCkP#State TP 2State . r$r$. .r$.r$  .M)8H!A##V\  PCkP#Display TP !Display="="""==K'6? 6"#V\  PCkP#Pixel TP  4Pixel )#) aI%4hT#V\  PCkP#has TP hasG#26#V\  PCkP#* TP *   {&{&{&&{{&K'6&?x#V\  PCkP#World TP FWorld ","=G#2"> ##V\  PCkP#* TP e"* "$I%4%P,'#V\  PCkP#has TP %hasG#2"M##V\  PCkP#1 TP "1rrrrr    J&5tt#I<\  PCk\P#cell ;tP Rcell%%BA&BA&%A&A&B%B%##B%B%#%%B#B#%%A&A&%A&A&%%A&A&Bm'Bm'A&m'm'BA&BA&%B%nA&nA&B%BA&BA&n%n%B##%%#%%##A&A&m'm'A&m'm'A&A&#B#n%n%B#B%B%n#n#BA&BA&nm'nm'BA&Bm'Bm'nA&nA&BJ&5% Y&&tt#I<\  PCk\P#cell ;tP `%|cellu uW"+W"+ u + +W"uW"u K'6 4"#V\  PCkP#Clock TP c!ClockG#2fB!["#V\  PCkP#1 TP !1G#2;'0#V\  PCkP#a TP _aG#2"-"#V\  PCkP#d TP S"dG#2!"R#V\  PCkP#1 TP ""1G#2!"S#V\  PCkP#d TP !d         P,;~ 2 #V\  PCkP#X Position TP  a X Position  C  C   C  C    P,; . 2 #V\  PCkP#Y Position TP  a Y Position OO # / ~# vG#2^#V\  PCkP#1 TP  1G#2G <#V\  PCkP#1 TP K 1G#2a#V\  PCkP#1 TP 11G#2? 4#V\  PCkP#1 TP D 1      }G#2 F#V\  PCkP#2 TP Z2G#2R#V\  PCkP#d TP ddG#2#$#V\  PCkP#1 TP  $E1OUHOOUHO    G#Z2&?@#V\  PCkP#U TPZ UG#Z2)3)#V\  PCkP#+ TPZ + Fg Fg  g g FF S/>]@#V\  PCkP#Current World TP  oCurrent WorldG#2D #V\  PCkP#1 TP 1+Wh Wh ++h +h WW+O+: X#V\  PCkP#New World TP  \New WorldG#2H #V\  PCkP#1 TP 1        G#2 ( z#V\  PCkP#U TP  UG#2 4 #V\  PCkP#+ TP  +|||||N*9|#V\  PCkP#Position TP -Position \ I%4vf#V\  PCkP#has TP hasI%4f#V\  PCkP#has TP hasG#2 #V\  PCkP#1 TP ]D1G#2^S#V\  PCkP#1 TP D1G#2a#V\  PCkP#1 TP 1G#2d#V\  PCkP#1 TP  1 F " ""U1@/`" #V\  PCkP#is displayed on TP is displayed on<<<<kk  k  kkN*9jL #V\  PCkP#Neighbor TP NeighborK'6#V\  PCkP#State TP X State yy y G#2S H -#V\  PCkP#* TP  \*G#2 {v #V\  PCkP#a TP  aK'6m #V\  PCkP#16**a TP  E16**a j <{ {E{ Q QQD QDEDI%4Om#V\  PCkP#0:* TP 0:*G#2Xx#V\  PCkP#1 TP 1G#23x#V\  PCkP#1 TP 1wSb' #V\  PCkP#Current State, Neighbor State, Rule --> New State TP 71=Current State, Neighbor State, Rule --> New Statec?N#"C#V\  PCkP#Pixel Postion = Cell Position TP #rPixel Postion = Cell PositionK'6>Z#V\  PCkP#0:2*d TP 0:2*dG#2 #V\  PCkP#1 TP f1I%4$E&i#V\  PCkP#0:d TP  %0:d   M  J&5Kk#V\  PCkP#Cell TP CellI%4p #V\  PCkP#2*d TP 2*dc c'' c  'c'c J&5 c#V\  PCkP#Rule TP ERuleR.=U #V\  PCkP#New State is TP  VNew State isP,; #V\  PCkP#determined TP  VdeterminedW3B , #V\  PCkP#by Current State, TP VOby Current State,X4C ]#V\  PCkP#Neighbor State and TP V Neighbor State andJ&5@  #V\  PCkP#Rule TP V Rule +  ~    ~  G#2;  #V\  PCkP#U TP C UG#2F  #V\  PCkP#+ TP D +I%4f/#V\  PCkP#0:* TP ^0:*   k jk jjjk k M)8> M #V\  PCkP#Healthy TP  HealthyK'6z #V\  PCkP#State TP PStateJ&5  #V\  PCkP#Rule TP ]7RuleG#2a  #V\  PCkP#1 TP  19[9_ A_ A[9[A[A_ 9_ 9[N*9@ V #V\  PCkP#Infected TP  InfectedJ&5@ #V\  PCkP#Rule TP RuleG#2O  #V\  PCkP#1 TP  1p?pJJ?p??JpJp?I%4C=#V\  PCkP#Ill TP _lIllJ&5'y#V\  PCkP#Rule TP RuleG#22#V\  PCkP#1 TP m1  s   ^   OHHC~C~H~~CHCHN*9F[0#V\  PCkP#Neighbor TP _Neighbor     + 00 C eeCI%4W#V\  PCkP#has TP (&hasG#2;'U#V\  PCkP#a TP a__QQ_QQ__R.=~t#V\  PCkP#Neighborhood TP  Neighborhood G#2U.J#V\  PCkP#* TP *G#2#V\  PCkP#a TP aI%4"1#V\  PCkP#1:* TP `1:*   I%4C 6#V\  PCkP#has TP  hasG#2c X K#V\  PCkP#1 TP  z1G#2 #V\  PCkP#1 TP ^1  ' '    '  '  O+: W ( #V\  PCkP#Parameter TP  e WParameter R ' I%4|  #V\  PCkP#has TP  hasI%4q #V\  PCkP#1:2 TP / 1:2G#2A 6 #V\  PCkP#1 TP  O 1       K'6 [#V\  PCkP#Color TP IColorH$3y#V\  PCkP#16 TP 16  aa aa  K'6c#V\  PCkP#State TP `StateH$3a#V\  PCkP#16 TP 16  H$3*#V\  PCkP#is TP  YisL(7P#V\  PCkP#mapped TP (mappedH$3#V\  PCkP#to TP  toG#2g#V\  PCkP#1 TP 01G#2J#V\  PCkP#1 TP 7y1c9N'T n. #V\  PCkP#Object Classes with the TP ' Object Classes with theb8M' . #V\  PCkP#same name are the same TP '8 same name are the sameY/D' +l #V\  PCkP#Object Class. TP  ' Object Class.H H { { H { { H H R.=RS  #V\  PCkP#Neighborhood TP   NeighborhoodJ&5  #V\  PCkP#Type TP 8 TypeG#2  #V\  PCkP#1 TP  1  I%4 0 #V\  PCkP#has TP  hasG#2y  #V\  PCkP#1 TP  1G#2\ #V\  PCkP#1 TP  1^:I"#V\  PCkP#von Neumann Neighborhood TP "/von Neumann NeighborhoodU1@<#V\  PCkP#Type ==> a = 4 TP "kType ==> a = 4W3B"(e#V\  PCkP#Moore Neigborhood TP  #Moore NeigborhoodU1@"O'#V\  PCkP#Type ==> a = 8 TP  #Type ==> a = 8 2 , , 2 2 , , 2G#2|  .#V\  PCkP#U TP  ]UG#2} } 8#V\  PCkP#+ TP  g+ u +  +b  +   4 AAPPAPPAAK'6Z#V\  PCkP#Moore TP MooreG#2#V\  PCkP#1 TP 1    G#2(B #V\  PCkP#U TP yIUG#2**% #V\  PCkP#+ TP {T+>>>>>Q-< x#V\  PCkP#von Neumann TP  qvon NeumannG#2 #V\  PCkP#1 TP ^61    DT " !!!H"$H"$!!!$!$H"!H"!!J&5e" A$B"#V\  PCkP#User TP "q!Userq#q#T&T&q#&&Tq#Tq#K'6#%/#V\  PCkP#Color TP 1$^ColorH$3%N&#V\  PCkP#16 TP %16 $}$`)W)--W)W-W-))WM)8'*,o#V\  PCkP#Display TP x*DisplayJ&5*Yc,#V\  PCkP#Size TP *Size #,#D #DH+D H+DH+I%4|&c'#V\  PCkP#has TP &hasI%4*E+#V\  PCkP#0:1 TP c*0:1G#2J,x?-#V\  PCkP#1 TP ,1G#2"#`#V\  PCkP#1 TP J#1G#2]"R##V\  PCkP#1 TP "1I%4c#V\  PCkP#0:1 TP 0:1hDS $\#V\  PCkP#d = (Max X Pos + 1)(Max Y Pos + 1) TP ("Hd = (Max X Pos + 1)(Max Y Pos + 1)\8GY #V\  PCkP#Current State --> Rule TP ' Current State --> RuleO+:*).{#V\  PCkP#Maximum Y TP  S*Maximum YO+:*r,#V\  PCkP#Position: TP  `*Position:O+:$B(#V\  PCkP#Maximum X TP  $Maximum XO+:$q'#V\  PCkP#Position: TP  $ Position:w)~*q(w)w)~*q(w)  )&> )O,B )^w)^ w)\w)N*9Q#V\  PCkP#Position TP PositionJ&5>#V\  PCkP#Cell TP QCellN*9 #V\  PCkP#Position TP qPositionK'6.#V\  PCkP#Pixel TP Pixeli?T:! U"#V\  PCkP#Current State = 0 --> healthy TP #!Current State = 0 --> healthyoEZ:? } !#V\  PCkP#0 < Current State < 15 --> infected TP )# 0 < Current State < 15 --> infectedf<Q:{ #V\  PCkP#Current State = 15 --> ill TP Current State = 15 --> illQ'<$@#y\  PCkP# World uP gWorldwSb ' #V\  PCkP#Neighbor Position differs from Cell position by 1 TP 71B Neighbor Position differs from Cell position by 1T0?~$(#V\  PCkP#{0, .. , 1023} TP $K{0, .. , 1023}S/> *-#V\  PCkP#{0, .. , 767} TP  ]*1{0, .. , 767} 8 X' LV "+ [# LX LV "+ [# LX  .8???? & *+*+ F ) P aP ) ) P aP )      i    i   EIm$$IIm$$I cca<aa<a  9D D D i  D D i  D &T(_(:(:(_(_(:(:(_( z%az%\z%S%xT%xz%Sz%S%xT%xz%SLLLLLN*9E#V\  PCkP#Infected TP 7InfectedO+:OD#V\  PCkP#Weighting TP  sWeightingG#2I#V\  PCkP#1 TP Fx1H$3G-#V\  PCkP#k1 TP k1         I%4  #V\  PCkP#Ill TP  6IllO+:u  D#V\  PCkP#Weighting TP  sWeightingG#2  O#V\  PCkP#1 TP L ~1H$3g A #V\  PCkP#k2 TP  k2O+:#V\  PCkP#Infection TP  InfectionJ&5Q$##V\  PCkP#Rate TP RRateG#2A6<#V\  PCkP#1 TP k1G#2H#V\  PCkP#g TP gR(=%x #V\  PCkP#where: TP vwhere:g=R%#V\  PCkP#A - # of infected neighbors TP !v5A - # of infected neighborsb8M%mB#V\  PCkP#B - # of ill neighbors TP vqB - # of ill neighborsf<Q%,~#V\  PCkP#S - Sum of neighbor states TP vS - Sum of neighbor statesZ0E"lz #V\  PCkP#ns - new state TP sns - new stateZ0Ep#V\  PCkP#Healthy Rule:  TP <Healthy Rule: _5J $#V\  PCkP#ns= [A/k1] + [B/k2] TP <Sns= [A/k1] + [B/k2][1Fy`#V\  PCkP#Infected Rule:  TP <Infected Rule: Z0EJ#V\  PCkP#ns = [S/A] + g TP <ns = [S/A] + gU+@#V\  PCkP#Ill Rule: TP  <Ill Rule:R(=R#V\  PCkP#ns = 0 TP <Dns = 0S)>'!O+#y\  PCkP# Display uP (Display S 5 #f\  PC[&P# Implementing OSA Model Instances in Ada H H H H BSusan Bodily ADDavid W. Embley ?Scott N. Woodfield H <Brigham Young University ;sComputer Science Department DTMCB 3361 @ Provo, UT 84602 H @9EMail Addresses: =#sbodily@osm7.cs.byu.edu @embley@cs.byu.edu ?woodfiel@cs.byu.edu H H H  S *;DABSTRACTă Objectoriented Systems Analysis (OSA) [EKW92] is an analysis model whose purpose is to provide a way for analysts to capture and record realworld, systemapplication information. To produce software, OSA model instances must be mapped into code using some programming language. This paper shows how to map OSA model instances into productionquality Ada code. The technique uses templates that directly and efficiently support OSA concepts. We give basic templates, show how to map OSA concepts directly into the templates, and explain and discuss efficiency considerations. We illustrate our ideas with two sample applications.z0*0*0*  S      5 Implementing OSA Model Instances in Ada ă  S8 ;DABSTRACTă Objectoriented Systems Analysis (OSA) [EKW92] is an analysis model whose purpose is to provide a way for analysts to capture and record realworld, systemapplication information. To produce software, OSA model instances must be mapped into code using some programming language. This paper shows how to map OSA model instances into productionquality Ada code. The technique uses templates that directly and efficiently support OSA concepts. We give basic templates, show how to map OSA concepts directly into the templates, and explain and discuss efficiency considerations. We illustrate our ideas with two sample applications.  S  Њ I. A. 1. a.(1)(a) i) a) 1 .1 .1 .1 .1 .1 .1 .1 Papers Figure 1  Figure 1  This_Object);  {9  end  Interaction1 ;  {9  procedure  Interaction2 (This_Object : in Object) is begin  {9  This_Object. Interaction2 (Self => This_Object);  {9  end  Interaction2 ; ----------------------------------------------------------------------------- task body Object_Type is    begin    while not Object_Created loop select    end select; end loop; while not Task_Done loop select accept Change(       or  {9@  accept  Interaction1 (Self : in Object); or  {9  accept  Interaction2 (Self : in Object) do  {9>  if Id.Self /=  A_Spec_Class_1  then raise Interaction_Call_Error; end if;  {9  end  Interaction2 ; or accept Object_Id(    or accept Stop(Self : in Object) do    else -- Place to put non-interaction driven behavior.  {9V"   null ; -- Delete if no such non-interaction driven behavior. end select; end loop; end Object_Type;  {9$  end  An_Object_Class ; The package for an object class is, by far, the most complicated of the templates. Figures 4 and 5 show an abbreviated version of the template for an objectclass package. Figure 4 is the package specification and Figure 5 is the package body. (The full templates are 9 pages long, including comments [Bod93].) In the following discussion, an example of the use of the objectclass template is shown to aid in understanding. When templates are shown, the parts of a template package to be filled in for each object class are shown in bold, italicized, slightly larger letters. When filled in packages are shown, the filled in part is underlined. The following sections describe each part of the template and its use.  S  3.1.1 ObjectClass Package Specification There are five main areas in a template for an objectclass package specification: (1) the objectclass name and objectinstance type, (2) the objectinstance manipulation routines and the objectclass manipulation routines, (3) the package interface for interactions, (4) the objectclass package exceptions, and (5) the private part for an objectclass package. We discuss each of the five main areas in the following sections.  Q ObjectClass Name and ObjectInstance Type  S`  x'<T$ddCLOCK.ADS (#0*)8 S  <% Clock Package Specification g/ #dZ6X@KX@#package Clock is type Object is private; type Id_Type is private; type Object_Class_Names is (Universe, Clock); --*************************************************************************** -- Object instance manipulation procedures and functions. procedure Build(New_Object : in out Object; Parent_Name : in Object_Class_Names := Universe; Self_Name : in Object_Class_Names := Clock);    --*************************************************************************** -- Object class manipulation procedures and functions.    function Random_Object return Object;    --*************************************************************************** -- Object class unique procedures and functions. --*************************************************************************** -- -- Top-Level Interactions -- -- -- Specialization Interactions -- --************************************************************************** -- Object Class Set Exceptions --************************************************************************** Object_Class_Overflow : exception; -- The destination object class -- cannot grow large enough to -- complete the desired operation. Object_Is_In_Object_Class : exception; -- The object is already a member -- of the object class. Object_Is_Not_In_Object_Class : exception; -- The object is currently not a -- member of the object class. No_Objects_In_Object_Class : exception; -- No objects in the object -- class for iteration. Interaction_Call_Error : exception; -- Call made to a specialization -- interaction when the object is -- not in the specialization -- object class. --*************************************************************************** private type Id_Type is record Parent : Object_Class_Names; Self : Object_Class_Names; Internal_Id : Positive; end record; type Object_Type; type Object is access Object_Type; end Clock; In Figure 6 we show an abbreviated version of the filledin template for the Clock object class. The name of the objectclass package is the name of the object class in the ORM instance being  S implemented by the package. Observe in Figure 6 that the objectclass name Clock appears as the package name just as it is the object class name in Figure 1. Using the objectclass name as the package name gives an immediate correspondence between the ORM object class and the code.  S$ The objectclass name is also placed in the Class_Names enumeration type, which is used when  S& an object is instantiated. In Figure 6, Clock appears in the Class_Names enumeration type. The template in Figure 4 also shows placeholders for other objectclass names in the enumeration type. These arePH'0*((1'#?-'#?- '#?- P $(#(#(#(#'#$P0*((1'#?-'#?- '#?- PԒ$(#(#(#(#'#$@ 0*((!'#?- '#?- @Ԓ$(#(#(#(#'#$0 0*(('#?- 0Ԓ S names of any specializations of the class. Since the Clock class has no specialization, there are no additional names in the enumeration type in Figure 6. The type of an object instance is a private type as is the type of the object identifier. The type  S Object is used to declare variables for object instances. The type Id_Type is used when the information that identifies an object instance is needed. These type names do not change. They are referenced using  SZ the Ada expanded name, e.g. Clock.Object.  Q ObjectInstance and ObjectClass Manipulation Routines Objectinstance manipulation routines provide the operations required for an object instance to come into existence, to be used by the system, and to be destroyed. An object does not exist until it has  S been "built" and "created" by appropriate object instance manipulation routines. The Build routine initializes an object instance, establishes all required relationships for the object instance