ࡱ> RdO)n>\~@Pictures (PowerPoint Document(SummaryInformation(x   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyz{|}~JH\K8>=rHCf05fy?j;:dqC[XyyK f18vpO7jqZ/5AkBwxXg#콾q?vz޸t!gZy0r`/Prd˃<+G`Qn>'H(QqrbI:Gt9HtA|%2C%}M[/J&- ΃I쇃{H ?sW@9iIҒHEQ45)@[Gu^Cd-y1Zu$rB:L߀TZM5I({ lTo%7٧ cd 4K Ks}%Ko6ڒ0 Tl$a0uT`äoQO)d߂4K8K*mWm%= ҄3FF>{}x*aUTx|wkfi; [,YF#RlLĎ3رLc߂R5Q]r,fwՊ% _/DgpR\4brndQ˿HOn&Uѹ'7m":]e̾&Z>G-fE@~xiS>|$%fz(G]s2Kh4ѮҘWDϥHwЄN䕂3^Rad,G,YN WclzAYr?jQ!lʲv-[eorܤZYxI,Bo|eo 7Hނ䛴`3 oAms~i0_`v1ʢ_~1eA\(dy lbpM.X TlSeg&ga<)c7RD<:xTKLQ=#6bB %M1.PYhčB6BQ.daTgHL'!QQWRrSBwsϽRR;&0:MkD{„4a6Va%U0PRFуEHG*^',P:Afp3Dz#V %?؊Ō$',m&#dwwy`Ej)6{rw-M(X@5llCq 1e;b7?ͯg q-nϖ1*ZJؖd*a#8?앁1(Wg!rpL(o!P]@)-BweϤJB>Rbk Urz!M6ƶ6Iφt̗itk扱olf7O#XO<XarŨ44UT'R2jIeJtDqBQwq;Խq5YXo\1 T f._l"`V~<$(v#xRMKQ=~Y.BAHX k"!Ei k)l" E̕ ?0Efޜ97(<A'hK vEDh5Yk PG謞G}| qDPz\t >,XA7z|eJ}$g`vNC'4 JjfEt,Tl;OAtͲSV+1.RSprȲ$̧A\)Ye_)*ܺ1aWlu'fGzո T2oC_EAܙhobXxDxW]hU>wL(i-du$cg#6A}jڊ>mB1i6mLƤo F$b[# R,`"5RhlsνffV0лߞ=~= [ug}R̭= 'Ą R0#pCހW?drථ؊C^>7-+ 0sxi'嚁Fv^beA`ƚZaHUfg?v仅b-kaU3jTQbY%籚{M!xiL+O:EgמIp;'}SW[G pF >"plٓI`k$5 I- w5,%[ɞȿblM%BAuW_=Oh1"AG.3;9NqW\n#}-r/6l߼15tI/;ѥ~9_=7_?`gx)3㖃υρ~ӚzGݪn/WXUwR s*h=)jN1)}> ߩT)?. v?uۃ')̐}OGqQ.7rܩ6գbX72: U\fq0u!4F2m.CV8wxYxZ#(ڹZ\m#e6򌠵\6WkKͭ:劶ZHsʬmnEoi-WJVa)DJ6+B5lV26V0lV2V2ܯsI_wx:#uݚϧ/ON>;Jv9D0&#" {沬]wvxp鴵EZ`5kQ7Ru pW;~Md"oj}v,&^X՘GcC*wmҮxc8nB/f_RCf\mlcOQ2b7#fh+C!v3"eiE[؍=%dحQl(n#+n6VibF;i,iPVldYKS.Ĝm}!w̵mF+&,o6@T}mRIXex'1 ?Sx̨XC+4ƞ$[njK{*gA5iE[x=%XDL5 kD k(sC'xy{X}i-}zPWݑopLe>ĜgɕU>R>O[ح{Aߺ7Gp M/[ڰ~K[nPGUw1bsn9eZY`VU1UD|?2:gkT~Q7[ʏDj+.z>OV&tO !|s%2S&Ҋ6&lcOQ2S&FӊԄ"5aD+,PNG  IHDR0 ܤsBIT&C`PLTE!!9)ޭJ91޵!{ZRkcKVtRNS@fbKGD IDATx횉HYC!m@t#39vD2N9^򒗼%/y'/W>OuS%,3d?wHu;',3$ ~%?OBvR::eVCkvԩ0 $ T"fZPv.I/g ]w]Eu pW38 ! )8:3 eB Lѩ 4攉(;|5E(tɡؿn5ϕ\<4;لfdV9p1Ǯ 4=f-EG0xpNT Yԅ%kq#ƠDhFD0(0fUk#SȮQ 5;`Pqa;Y[_vL0],JdPGhԵg@-pllK]xSGj$PZtlb IfqQO\sjS8-9%@ۥ!U=≆n,PJC&xArmJojLd㩖dP"I0Jz2Vˉ.f`^/F3 xP@ K)x͍:,@oѫ¶#A^x\e-B(vȬvhN6갣ݠK$Wg|KZb}:QI>f褶\{VR]n-h"w®ac2 ߊRWf e'"F! 7#d$l=DIRcɨ ܰ(J~/LZ*Xr4rZ5rC$AZ`>v(Y=պ_A4%]HC >=407R5bgV Ȣ'Y3sx|b7Q#HUkȪ*!%@v9$GC.]LuVSf# &J]m=];qON\tʄH"4(C?O2^wy/gY`4Νnnջ$|Y~H5"w(|>x,'wo }z#+t#5%5hc>"|_@ƙlD>d-b gdKBޫqDJQgY葍:6jG#2<&;GH#!-W^lG3/~܎O=ȁQ ՗3о:{q1*s. 5d=)@( rT\^ )ꪞ[YNk)?RgD%EZelrbU+=gpA`̪_@azmƬ 6~(`ѨW x$cS&ŸMpWl^^_*C)rFY&"-2mRm]?J#N@GoGoO= дpY#3y5(Xn?81qXU3 kSpVR;z"4+Iw1MR(t7<"ç˸>Ї9аâ)B]ȷ:ѐ蟋G?O#-@:r!Xh. DcyoFjz#B|G*"2 |c l xJPFel#+t"Fxfa Gii)?J]ÆFʒ\2IENDB` TAf7癲²N5<{x?HBQƿ+HJš*C,*% MȲIǠh%]lw}K9w9׼I .hr@ueb f$|LP64_Xb1x*ID6 +V+9]/\J&CEog1/\݊B1lR(ӪS};wޮ=l|NȴÜ1vc7fn{ԱUr6JUHcޏ/=R=vi?'jSbTu5Lp&IIp%.T]+(   d ef Word.Document.80"Microsoft Word ef / 0|DTimespe Sortsm mw7`Jm7`JmпDOsakape Sortsm mw7`Jm7`Jmп DArialpe Sortsm mw7`Jm7`Jmп"0Ds^b҉0000 W5rtsm mw7`Jm7`Jmп@DMonotype Sorts mw7`Jm7`Jmп  @n?" dd@  @@`` D<4-     #$%&'()*+,-4B$Seg&ga<)ctB$ f._l"`V~tB$2oC_EAܙ6b$ɿ(a>+,  B$Af7癲²B$ :;&q@ثB$}X S|h c $@8 g4pdpd`J7T~chmm`J7ppp@ ? -O =3.Nin0Wy N UMLn0NiOCLn0i Ver. 1.3 Niln0iN (3.1 UMLn0NiOCLn0i4jIBMn0Oz萀g0zvU00_0 wno0Syntropy0000 yr_ Sgqn0N'` e_0n0N萒0]00h0I{Oj00n0k0fM0cH0f000hQSOn0UO$P0asTL0 Y00j0D0S0h0 eckW0U0n0<f00000L0000Y0D0 0000000g0o0j0D0 000000000h00006R_o0fQ0j0D0 [ňk000S0h0o0hsg0M0j0D0 Wn0B00 Q0^S ASCIIeW[`0Q0g0ibU000+%+%@ OF04X@b000000n0000J00s0Wn0 N YagN self.allConnections->forAll (r1, r2 | r1. TMR = r2. TMR implies r1 = r2) d\Oh00000n0MRNh0_Nn0 b implies (b2 : Boolean) : Boolean post: (not b) or (b and b2) 000n0 [ not doorOpen ] 0000000h0W0f0 context N inv: self.ǖ(u->isEmptyG? !6 (     ?   fk0O(uY00000Vn0O UML00000h0n0O 6self @wvW0f0D00000000(contextual instance)n0Sgq0:yY0 N YagNn0Nh0W0f0OF04XT context O>y inv: self._miTpe > 1000 context c : O>y inv: c._miTpe > 1000 MRNh0_Nn0Nh0W0f0OF04XT context W T::d\O T(param1:Type1,...):ԏ$P pre : param1 > & post : result = & context N::@b_(d : Date) : Integer post : result = self.t^b * 200000@(E( ,  +)   W,gn0Wh0$P  Wk0d0D0f0hUML000K00n0W 000 Nn0Y0y0f0n0Wh0000o00OCLn0Wh0j00 Rcb_ enum{#value1,#value2,#value3} Wn0N puj00.z^n0W TXn0o{o0g0M0j0D0 Wn0N􁏉GR B00Wo00000Wh0NY00 Wn0No0cy_0n_0Y0 Wn0 Yc object.oclAsType(Type2) -- object0Type2n0Wh0W0f0UO / /| ?  o{P[n0*QHQMO*QHQMOn0ؚD0k0 .o{P[h0->o{P[ XSnoth0XS0 h0 h02o{P[0 and, or, xor implies if-then-else-endif <,>,<=,>=,=* V VH   *g[n0$PgqOP}gL0*g[n04XTo0ocl_0*g[ _0`0W00 true or _ j0008^k0true false and _ j0008^k0false6--J   Letecontext N inv: let @b_ : Integer = self.NN.f}N->sum in if 1Ymi-N then @b_ < 100 else @b_ >= 100 endifba -  yr'`(property) ^\'` context N inv: self.t^b >= 0 #n0z(AssociationEnd) 000 Tj0i0 context O>y inv: self.{t.1Ymi-N = false -- Nn0000000 inv: self._miT->size > 1000 -- size = 000000n0ƖTn0 Ppe inv: self._miT->notEmpty -- _miTL0E\j0Q00p0true gqOd\O~0_0o0gqO0000 gqO(isQuery)a"rKa YS(oR\O(u)n0j0D0S0h0 N.@b_(aDate) d\O0[ňW0_00n0L00000P  0! D      yr'`(property)n0P}T$ e,gn0P}ZZagN context N inv: self.Y->notEmpty implies (self.Y.t^b >= 16 and self.Y.'`%R = #sY and self.Y->size = 1) and self.+Y->notEmpty implies (self.+Y.t^b >= 18 and self.+Y.'`%R = #7u and self.+Y->size = 1) O>yk0o0ؚ050Nn0_miTW0K0D0j0D0 context O>y inv: self._miT->size <= 50.%       0000000#000x0n00000000 context N inv: self.NN.f}N->sum = 9100000 #000K00n00000000 context NN inv: self.ǖ(u._miTpe > 0 inv: self._miT.t^b >= 18 P[P[n00000000 context L inv: self.g[ -- Lg[n0ƖT context L inv: self.g[[123456] -- S^juS123456n0N )9 S "    CollectionLoclAny Collection {abstract} Bag -- ͑n0B00irn0Ɩ~00(^o0j0D0) Bag {1, 3, 4, 3, 5, 1} Set -- pef[n0ƖT͑o0j0D0 Set{1, 2, 3, 4, 5, 6} a" Set{ Set{1, 2}, Set{3, 4}, Set{5, 6}} Sequence -- }k0juL0B00irn0Ɩ~00͑L0B00 Sequence{ 1, 3, 45, 2, 3} Sequence{1..10}a" Sequence{1..(6+4)}a" Sequence{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}>!g>!gH Jg_N-Nn0bMRn0$P 0 &context N::ue0Reg() post : age = age@pre + 1 age@preo00ue0Reg()YBfn0t^bn0$P0Sgq @prelo0_Nn0[-Ng0n001U000 context N::00000(w) post : weight() = weight@pre() - w\,17 10z   % selecth0rejecto{P[, * select ƖTK00bQY00 context O>y inv: -- 50sk00 Nn0_miTn0ƖT0Bl00 self._miT->select(t^b > 50) self._miT->select(p | p.t^b > 50) -- T N self._miT->select(p : N | p.t^b > 50) -- T N -- 50skN Nn0_miTn0ƖT0Bl00 self._miT->reject(p.t^b > 50) -- 18N Nn0*gZZ_miT self._miT->reject(p.t^b < 18 or p.P}ZZ-N)   &k& k         collecto{P[,  context O>y inv: -- hQ_miTn0uen0Bag(͑ g0) self._miT->collect(ue) -- hQ_miTn0uen0Set(͑!qW0) self._miT->collect(ue)->asSet Collectn0weu collection->collect(propertyname) = collection.propertyname self._miT->collect(ue) = self._miT.ue <& <&\     &PϑP[forAll, exists ,  zforAll" context O>y inv: -- hQ_miTn0YL0puj0c0f0D00p0true self._miT->forAll (e1, e2 | e1<>e2 implies e1.l <> e2.l) exitsts" context O>y inv: -- NNg00'8O'L0D00p0true self._miT->exists( p : N | p. T = '8O') < &: #& # &     p~0ԏW0(iterator), lcollection->iterate (elem : Type; acc : Type = _ | elemh0acc0+T0_) collection->collect (x : T | x.property) = collection->iterate (x : T; acc : T2 = Bag{} | acc->including(x.property)) F[n0n0W(OclType), ^OclType type.name :String -- typen0 TMR type.attributes : Set(String) -- typen0^\'` Tn0ƖT -- typen0associationEnd Tn0ƖT type.associationEnds : Set(String) type.operation : Set(String) -- typen0d\O Tn0ƖT -- typen0Y0y0f0n0vcn00000Wn0ƖT type.supertype : Set(OclType) -- typen0Y0y0f0n00000Wn0ƖTn0cyS type.allSupertype : Set(OclType) -- typeh000Wn0hQ000000n0ƖT type.allInstances : Set(type) Person.allInstances->forAll(p1, p2 | p1 <> p2 implies p1.name <> p2.name)n^J^.2% 4       /OclAny, OclAny -- objecth0object2L0 TN000000j00true object = (object2 : OclAny) : Boolean -- objecth0object2L0 TN000000g0j0Q00p0true object <> (object2 : OclAny) : Boolean post : result = not (object = object2) object.oclType : OclType -- objectn0W -- typeL0000000n0Wn00000Wg0B00p0true object.oclIsKindOf(type : OclType) : Boolean post : result = type.allSupertypes->includes(object.oclType) or type = object->oclType object.oclIsTypeOf(type : OclType) : Boolean post : result = (object.oclType = type) -- 000000L0rKask0j0c0f0D00p0true oclIsInState(s : Enumeration) : Boolean -- _N-Nn00OH00]0n0d\O-Ng0000000L0ubU00f0D00p0true oclIsNew : Boolean'rW-)y'rW-)y  *   " $    RealgReal =,+,-,*,/,<.>,<=.>= r.abs : Real r.floor : Integer r.max(r2 : Real) : Real r.min(r2 : Real) : Real$ccJInteger,$TInteger =,+,-, *,/ i.abs : Integer i.div(i2 : Integer) : Integer -- tepeo{n0FU i.mod(i2 : Integer) : Integer -- YO0 i.max(i2 : Integer) : Integer i.min(i2 : Integer) : Integer`>,!<StringString = string.size : Integer -- eW[Rn0W[pe string.concat(string2 : String) : String -- stringh0string2n0#c string.toUpper : String string:toLower : String string.substring(lower : Integer, upper : Integer) : String$"% ,Boolean, EnumerationBoolean =, or, xor, and, not, implies if b then (expression1 : OclExpression) else (expression2 : OclExpression) endif : expression1.evaluationType Enumeration enumeration = (enumeration2 : Boolean) : Boolean enumeration <> (enumeration2 : Boolean) : BooleanP c cb,p  Collection, $Collection collection->size : Integer -- collectionn0 Ppe -- objectL0collectionk0+T~00f0D00K0 collection->includes(object : OclAny) : Boolean -- collectionk0+T~00f0D00objectn0 Ppe collection->count(object : OclAny) : Integer collection->isEmpty : Boolean -- collectionL0zzK0 collection->notEmpty : Boolean -- collectionL0zzg0j0D0K0 collection->sum : T -- collectionn0hQ }n0T collection->exists(expr : OclExpression) : Boolean collection->forAll(expr : OclExpression) : Boolean4  @3  ! !SetBag0 Ti , $ZSet set->union(set2 : Set(T)) : Set(T) -- set *"set2 set->union(bag : Bag(T)) : Bag(T) -- set asBag*"bag set = (set2 : Set) : Boolean -- set = set2 set->intersection(set2 : Set(T)) : Set(T) -- set )"set2 set->intersection(bag : Bag(T)) : Set(T) -- set )"bag asSet set - (set2 : Set(T)) : Set(T) -- set set20set2n0 }0dO0set set->including(object : T) : Set(T) -- set *" {object} set->excluding(object : T) : Set(T) -- set {object} -- (set *"set2) (set )"set2) set->symmetricDifference(set2 : Set(T)) : Set(T) set->asSequence : Sequence(T) set->asBag : Bag(T)4**t\  3  "Sequence, $HSequence Seth0 Tin0o{n0Nk0 sequence->append(object : T) : Sequence(T) -- _0x0R sequence->prepend(object : T) : Sequence(T) -- MRx0R sequence->subSequence(lower : Integer, upper : Integer) : Sequence(T) sequence->at(i : Integer) : T -- ijuvn0 } sequence->first : T -- gRn0 } sequence->last : T -- g_n0 }   .  S#"O1(Singleton0000)$ context Singleton::/UN000000ub() post: self.oclType.allInstances->size =1F )$>    /%O2(s^e9h)s^e9h0Bl00d\On0Ni context Real::root(x : Real) : Real pre: x >= 0.0 post: Real->exists(r : Real | r * r = x and r >= 0.0 and result = r) w     v0&O3(hQ^) }L0Integerg0B00Collection000n0000000L0{sorted}(hQ^)g0B00 context Collection inv: Collection->allInstances->exists(c | Integer->forAll(i1, i2 | i1 > 0 and i2 > 0 and i1 <= c->size and i2 <= c->size and i1 < i2 implies c->at(i1) <= c->at(i2)))3 B  w$O4(Vf(n0Q{t) context )R(u::ԏtS(B00,g[SO : ,g[SO):,g[SO pre: self.P(u,g->notEmpty and B00,g[SO->notEmpty and self.P(u,g->includes(B00,g[SO) post: Set(,g[SO) = Set(,g[SO)@pre->including(B00,g[SO) and self.Q->size = self.Q@pre->size 0 1 and B00,g[SO.QSK0 = true and result = B00,g[SO,(      %O5(Vf(n0Q{t]0n02)context )R(u::P(uSK0 : Boolean pre: --QB00 self.P(u,g->notEmpty post: --QB00 result = self.Vf(.g'YQpe >= self.P(u,g->size and self.Q->forAll(e | e.ԏtSe >= Date.s(We) pre: --Qj0W0 self.P(u,g->isEmpty post: --Qj0W0 result = true 5/      1'O6cNv֊tT0b xor (b2 : Boolean) : Booleann0_N0fQ0 post: (b or b2) and not (b = b2) }bo0_tW0j0D0 not self.oclType.allSupertypes->includes(self) sequence->append (object: T) : Sequence(T)n0_N0fQ0 post: (result->size = sequence->size + 1) and (result->at(result->size) = object) and (Sequence{1..sequence->size}->forAll(index : Integer | 00result->at(index) = sequence ->at(index)))4,! /1,  ,1&&d!  :u?2)O7 000000n0OT{t3(O7 000000n0OT{t/c0~00_0eQOёn0Q0YORj0eQOёo00ёh0Y00 context OT inv: self.0ё.eQOёNR = /ceQOё 0 self.OT[.OT.z%R.eQOё 0eQO ^gg0B00K0d0OTg0B00 0h0D0F0S0h0o0j0D0 OT->intersection(eQO ^g)->isEmpty OTo0[TNQ [->collect([T)->sum >= OT->size0B00D0o0 [.[T->sum >= OT->size 0[ 0g00OT.z%Rn0͑o0j0D0 [.OT.z%R->size = [.OT.z%R->asSet->size ckOTo0ckOTn0[TNQg0B00 [->select(OT.z%R = #ckOT).[T >= OT->select(OT[.OT.z%R = #ckOT)->size=!=%A/!=%@,,    )3.2Niln0i * Nin0kvm}[vNiK00Kb}M0vNix0n0 YclQ_0Oc0f0kvk0m}Y00 0000 W0g{ 300000000n0yf[0W(01991 000 NW00u-N v30000000Ni0HQ2bl-Z0000001993 CRI W0RAISE Method Manual01994 Jean-Raymond Abrial. The B-Book : Assigning Programs to Meanings. Cambridge University Press, 1996 John Fitzgerald, Peter Gorm Larsen, Dines Bjrner, Cliff Jones. Modelling Systems: Practical Tools and Techniques in Software Development, Cambridge University Press, 1998 000000L0Y0g0k0X[(WW0f0D00h0M0o00]000Oc0_0eL0eD0 \Q[RN0 gl0Α Nims^0N}Ɩ0000000xQ0qQzQHr01994 b y% y%\ %f dD+!Nin0kvm}Kb \OULo0UOg0B00K00bcY00 S0S0g0o0Rgo0B}0c0f0D00o0Z0j0n0g0weu MRN0_N0d0Q00 00000o0MRN0n_0Y0i00j0rKan0 Ng0[LW0f000 gPBfQk0[LL0B}000_N0n_0Y0rKa00_00Y0 Q0^~0_0o0p~0ԏW0k000MRN0_Nk0яe0Q0f0D0O0 [k0o00_N0}0f00MRNP 0K00_Nx00-Nn0 0agN 0P 1 , P 2j0i0 0\QY00  52 526 ,"_N01_00elMz0S0dO0 A, B, CL0B0c0f00A and B and Cn00F0j0b_0W0f0D00h0M0 0Mz 0h0|Tv00]0n0F0a0n0r0h0d0n00S0dD0f0agN0}000 O post: B00fen0ƖT->forAll(d | from <= d and d f"to and fejuS(d)=c[fe) implies feVpec[fe,from,to = B00fen0ƖT->size d f"to0S0dD0f000 [pe0 Ypek0nM0cH00 OH0p001f"df"10h0D0F00F0j0agNL0B0c0_0001f"df"I and 1f"if"10k0nM0cH0f000h0D0F0elg0B000 Ypen0W0^R00 OH0p001f"df"10h0D0F0agNL0B0c0_0000f"df"100k0nM0cH0f000h0D0F0elg0B0008Fy : .. 2  -  .    " -# N YagNh0P^pen0zv S_n0 NP0zl00 0˄ 0n0agN HQ{0i0S0dD0_0Mzd f"ton0&T[d to0OH0p00D0S0h0L0RK0c0f0D000 S_n0g-N Y00j0D0 N YagN k0n0MzY0j00a0from f"d and dayNumber(d)=dayOfTheWeekh0j00 S_L0B}NY00S0h00O to end; sumSSi:   >  ` ^WN̙f` ^WNff3` 999MMM` ^WNf` ff33` ff33` ^WN̙f>?" dd@(?zdd@ y x@" `  n?" dd@   @@``@n?" dd@  @@``PT   @ ` ` p>> h(  h h s *pc  `  P0000 0000n0f_-[  h c $Tqc  @  \0000 0000n0f_-[ ,{ 2 000 ,{ 3 000 ,{ 4 000 ,{ 5 000 / h s *qc Tt  G* 2G h s *rc Tt   I* (2G h s *trc T@t  3-*4(2gGx h PAA:\paint.GIF<@.Z h B޽h))? ? ^WNff3 *Contemporary Portrait  C;@l(   l l s *8h @@  P0000 0000n0f_-[  l c $D9h  @   T 0000 000000n0f_-[  l s *9h T  G* 2G^WN l s *:h T   I* (2G^WN l s *d:h T@  3-*4(2gG^WNx l PAA:\paint.GIF@rZ l B޽h))? ? ^WNff3 P8( E   0=h P    Y*   0mc     [* d  c $ ?     0mc  @  \0000 0000n0f_-[ ,{ 2 000 ,{ 3 000 ,{ 4 000 ,{ 5 000 /  6i `P   Y*   6Ti `   [* H  0޽h ? ̙33 0 (   l  C :hl@@  l  C $;hl @   H  0޽h ? ̙33  `$( p`5 r  S ih```   r  S ih @  H  0޽h ? ̙33  p$(  r  S tih `   r  S ԣih @  H  0޽h ? ̙33>  ~(  r  S ih `   r  S ih @  R  s *AH  0޽h ? ̙33   $( \D   r  S Tih `   r  S ih @  H  0޽h ? ̙33  (.( =w (r ( S tih `   | (0 0A ?hy   H ( 0޽h ? ̙33>  ,~(  D  ,r , S Ԧih `   r , S 4ih @  R , s *ADocumentSummaryInformation8Current User& XXH , 0޽h ? ̙33  0$( V" 0r 0 S ih `   r 0 S ih @  H 0 0޽h ? ̙33  4(  4r 4 S Tih `   l 4 C ih  H 4 0޽h ? ̙33  <$( ̙ <r < S ih `   r < S tih @  H < 0޽h ? ̙33  8( 4{ 8r 8 S 4ih `   l 8 C ih  H 8 0޽h ? ̙33  @( @ @r @ S Tih `   l @ C ih  H @ 0޽h ? ̙33  D$(  Dr D S Ԭih `   r D S 4ih @  H D 0޽h ? ̙33   H$(  Hr H S ih `   r H S Djh @  H H 0޽h ? ̙33  0L$( 5% Lr L S djh `   r L S jh @  H L 0޽h ? ̙33  @P$(    Pr P S $jh `   r P S jh @  H P 0޽h ? ̙33  PT$(  Tr T S  jh `   r T S d jh @  H T 0޽h ? ̙33  `X$(  Xr X S $ jh `   r X S  jh @  H X 0޽h ? ̙33  p\$(  \r \ S  jh `   r \ S  jh @  H \ 0޽h ? ̙33  `( <= `r ` S $ jh `   l ` C  jh @  H ` 0޽h ? ̙33  d$(  dr d S jh `   r d S jh  @d  H d 0޽h ? ̙33  p( ` pl p C ;hh `   l p C sjh @  H p 0޽h ? ^WNff3  t( f3o tl t C tjh `   l t C dtjh @  H t 0޽h ? ^WNff3  x(  xl x C 7lh `   l x C t7lh @  H x 0޽h ? ^WNff3  |(  |l | C oh `   l | C oh @  H | 0޽h ? ^WNff3  ( d0U l  C oh `   l  C $oh @  H  0޽h ? ^WNff3  (  l  C doh `   l  C oh 4  H  0޽h ? ^WNff3  ( ff l  C Doh `   l  C oh @  H  0޽h ? ^WNff3  ( ^WN l  C ph `   l  C ph   H  0޽h ? ^WNff3  ( hO l  C ^h `   l  C T^h @  H  0޽h ? ^WNff3  ( S l  C ^h `   l  C ^h @  H  0޽h ? ^WNff3   (  l  C ph `   l  C dph @  H  0޽h ? ^WNff3  0( > l  C Ĕqh `   l  C $qh   H  0޽h ? ^WNff3  (  l  C ^h `   l  C ^h @  H  0޽h ? ^WNff32  r(  l  C dPsh `   l  C Psh @  R  s *A 4 H  0޽h ? ^WNff3  (  l  C DOsh `   l  C Osh4  H  0޽h ? ^WNff3 @( ) l  C ql@@  l  C ql @   H  0޽h ? ^WNff3  P(  l  C $qh `   l  C qh @  H  0޽h ? ^WNff32  `r( ( l  C dqh `   l  C Ěqh @  R  s *A 0H  0޽h ? ^WNff3  p( ^WNf l  C $qh `   l  C qh @  H  0޽h ? ^WNff3  ( 8 l  C ĝqh `   l  C $qh4  H  0޽h ? ^WNff32   r(  l  C d7hh `   l  C 7hh d  R  s *A p H  0޽h ? ^WNff3bx\ t]U9$iҤSJ˽$4M87/# &mmlq]vw|B3#~~[.ZB}f KTA!-14[Nb5h+ :i/Gލ17^AA`Yc}]CXH=6]֭jh!-FF1Ec^B*Ro3 F),"jN̡+]HYXSKPJM'}bϢG\z3փ+1Md:]B 22})zn⼆C?0|8 ශ%^&!" .mD9vSqXZwú+YBT$ԸE \UkRs/㱩g 7܍4Fa :@AL)~z4= |iO'8jY>!f)F%k9n2< u#gf*GǬoY_F __uZ_fvG[ 'r&nj/e7ժnЛ>zvPWഎi bАQ:9AQ]zKowut }Qq fi-ZXB\Sֽ֧XI봥٦γ{}}}awv}߬egT0>T( XVoXK,c;O=~# w.ݶ'ԺN:<<cjOnfKIxZ޳+:[ %fE8<8VuS .Il}lE4f]|-8ggJU96^;|Mp?;^^:v٧q( ANC`6jjS{ >CY~JTi&))LK w{mm޽sۺ@{=Ӹ cTxeY^S04A^hC3l&hsV6T~g̥BGᄏg ]qVsVyP߱#A&ܽ8? 5%n) (Wn2YD꺓K"QwrUIdHڄ)wҞ\w$( kCz@Q' #EI7-d/ĝkEZ>PİkKi!UjQjVQmOz^c1?*9kHq4K}IBFc@C\Ҟ^%zf ̡cͲܣNW(G?8(:|۶#N-P {}TSh>M_LhO1 s]־$KsпIT ҹۤ9JBDbt>p^~z4T;(T`QݻSe}[Y-RnG(Yg^Pj/|$.KZk 5{>%zO{Y2 7:Pżr$Uo҈ k_& &1q.b[\6#"ŧNNŶm]&ElOuNNŶms&ElO[NNŶdC"I#C"I-^=$"X74!$uHz6 YTE mʟoN[=ݔ)>\c qs / օkkܣ 50~ WWWgyh.oExJGq>ժ2 HNbg.ӵjɲHŎlpfL O2ēf%"Oy% =-(a|E޸SRz7f][ F{6ػAQޭ( F{f Lbi~俿IuX5#s<=e_mu$٣+ylzc)?ܓ91:SP?6%ǂ"'! ǂ*g+myORM>w? 0'uT:`}|}6-}s뵒ΦUנx0Fh"  Pxowi_-85jDP}~+d>B*\WЛCXdq_6X YD jZP3#&2D`&UF< #N]@3)B_A :]ⷝ.Q#~zq_sy/Vw?<| x B1y'Z{|gwzo^K{o[}%jӻ|g.Z|4lYR[Taw➋(br ~/RB]~>\oUg9YK=>b<ߟ`lkkģ\D$hQQ:9KF9>/?;G4#da3wq$ۓW_}N'OσO9 C3s1sLLF4>~x?]X`9ʶux򬧆dy֝=ccEMvz?t@~|'LiR<<<G|!/=B,q%;xLm}|9B)]RZjWFoN{\*Augϑnh]r׬m:iUTG\|Xjh"ފ' Bڨ| \'uZ3xxxr0_K7}i_cwI/uU55)uU)3  Oh+'0t px, @L l x  仕様記述言語OCLP 佐原伸xApplication HD:Application:Microsoft Office 98:Templates:プレゼンテーション デザイン:Contemporary Portrait 佐原伸n 167Microsoft PowerPointati@Kc+@kj@`[覾@ v GPICT 1@@ HHKhKlff33̙ff33ff33ffffffffffff33ff33333333ff333333ff33ff33̙ff33̙̙̙̙ff̙33̙ffffffffffff33ff33333333ff333333ff33ff33̙ff33ff33ffffffffffff33ff33333333ff333333ff33ffffffffffff33ffffffff̙ffffff33ffffffffffffff33ffffffffffffffffffffffff33ffffff33ff33ff33ff33ffff3333ff33ffffffffffff33ff33333333ff333333333333̙33ff33333333333333ff33333333ff33ff33ff33ffff33ff3333ff3333333333333333ff333333333333333333ff333333ff33̙ff33ff33ffffffffffff33ff33333333ff333333ff33wwUUDD""wwUUDD""wwUUDD""wwwwwwUUUUUUDDDDDD"""""" +V< +VVVVVVG+VVVVIVV++VVVVVI+V+V+IVV+ ++IVO*+VV+VVV +L VV ++VV VV3 +VVVD--,,., -,, - ,-- -- -- - -- --l,-         . .  4   - ,,     &            '. . . 4 4 . / . .. . .4 / 5 4  - ,,, ,                          .  -           /// .  }+,++,,,       .  . . . - 3- . .   4  4    / . /  9+++,&,,,,,,---- -,-, =c \ e  o _ # Ӻ8 Ӻ9 Ӻ3 Ӻ:  ӺAӸ9ӹ Ӻ   ՜.+,0     画面に合わせるSRA|=E* 1TimesOsakaArial平成角ゴシック W5Monotype SortsContemporary PortraitMicrosoft Word 文書3.仕様記述の基礎)3.1 UMLの仕様記述言語OCLの概要 使う場所(説明に使用するクラス図の例UMLメタモデルとの関係基本の型と値型について演算子の優先順位未定義の値Let文特性(property)特性(property)の結合ナビゲーション Collection後件中の「前の値」selectとreject演算子collect演算子限量子(forAll, exists)繰り返し(iterator)定義済みの型(OclType)OclAnyRealIntegerStringBoolean, Enumeration CollectionSet(Bagも同様) Sequence例1(Singletonパターン)例2(平方根)例3(全順序)例4(図書館の貸出管理)&例5(図書館の貸出管理その2)例6'例7 テニスクラブの会員管理'例7 テニスクラブの会員管理3.2仕様記述法の概要仕様の段階的洗練仕様の段階的洗練手順後件を弱める方法%不変条件と限度関数の発見(一応完成したプログラムの例 "使用されているフォント デザイン テンプレート$埋め込まれた OLE サーバースライド タイトル*_LRdO)75`@Pictures (PowerPoint Document(SummaryInformation(   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyz{|}~DocumentSummaryInformation8Current User& 一応完成したプログラムの例 "使用されているフォント デザイン テンプレート$埋め込まれた OLE サーバースライド タイトル*_L