ࡱ> noqc ˽cEPNG  IHDR^PLTE  #(4'.45G)9E4=F!=R9BK'D[9HU)Ke5Ma,Qm:Rf.Ur2[z:aGOXMYfYfugny4_7e;m>rDukxEQ_vUk}u}Äʬķɦյѹջp@tRNS{DbKGDH cmPPJCmp0712HsIDATx^]i{8Ȥb'x=W[d]6g*Tje'Gt|Ga01OpŇc~^MWMz1m& Itл܏FOOOtht?+U|nIaߎ1H܏&/|X,׆cXatNr9!ixd3;i~''BlC2 X^fBb(^FBϫt[x˫ͩkpqL<! VcV hB_k\0b405xX̐;=%zBQ+I/`o!d\R):B)2^ax>F0ɊQHV?٧Ō2x("uYrUc>A(CNDZCB,TD~s- c 67sG*#}G?(vLHZbDޤ^W)Bb琘x B&p;z#pBR_Bmu09OXaY/^da#h.E+!ߛ@bD$֍$BTR5ik\W  "p+ *rDNV!݌ VBARGdYxDE$}e~bFFNE>n}>D7 UGjبIoCDA\"k D@'H#TcfH>]0$!:X!ZxLdm-)C[DBIϠ΄NyyV"Av_.kJ !Dz',:!ϥJ#L9x$p2 #u38(_D5P I ~4Cc.D }cbÈ QigI܈x܍#8" {dR٪1B #$GE$*H)=h6H,l'-݈!qD0n DX"rjk- ARFD5 PBD]8CF "$GN,3Ԓ !Adͣ9!(X{HV"a% f& 0$:D\><ʉU,6/\RR~iJ(/~BH:.Ȓ**"$fHY!OBf)DXa˘~ 7^Y9p5kN$ z3Ew6Lpw"w2 ~J~D^/`BEM!'PUHN"~C2y$!i`fJ`EDZq 91[lN@[d5а[tGir>|9d1\(,I :~e G{,>1ő/XA}' q+"7k,(1%hVXȗcKv@`([[{I> dgXuu)'|rϘtQ< q->S~o+ -,9⁼\T >RPڕ-h.&>'3 0 2f䕬7גI>+/v-G\i@]ҿ115 R0đdyQ( }P u_H:ز!1hWN^AGeU""DrJm8B Bҥ\IN}9k'[] KM #KT݈ TaF*Eh>)hW譴kݴdv(bOT!V!nHJmΨ ~Qq:]5=<`|/ѣ=80-W B>Zڧg(H>fCb-(U8HZLsc ;[\Gm^?!sK#gn \]QfP|Sav)Bȷ` b&7:ʶ*R$({"t ) vi6 3>\ҒE=Ytf aK UE OaD-q0Xm.0`1ж|-W_q1H9қ$B2]#WMN vo Awq dO&$\ꝴy* l4VUn1~ЧvV\~G4ėOo`Nj{9F{ؼ_;MP ƴIT ~q};lN\=o-H'UZR"ըDȲGg*= Djcn^|LU ~>iҨZCe-ܘTG] nz Ϫ QXvnU:gD Ž_Ԣ,gqkC~1Jð^D1[F`=_cǵ(r@e`\tƥ:FҩVUl6'{n4Ey[wܟIB?Yzt_Q-ZOr8~nW@;n7 X3~[.n`(:IENDB`n 4b ,RPNG  IHDRzKsRGB pHYsodjPLTE    +*"9!?67&; /)(-0-=$4",:'158%.><)O@PDQ]NSTU\FBZIGAVELYXRMHJW^_vxinm|hylptq{}ud`erbgcj:IDATx_FǓf'+Jmkf5HA"Z끭'ZŶZ-jECkū xՃVw'3gP bNPb+LK)xd>Ha%)$)$)$)$)$)$)$)tP7I\>I$'SPE +{JRHRHRHRHRc*7&Y*J=jjc j PC`Hx]CR ]1mPF憶 UH{ J XG}nflm?W%Tv\!ʈ8QLoP:)  ]HE?9LW= S81Q<}4SD F3NS޵SKAKհfƗ >/%?B$Pd4+-6W $ 5Il:MAF YRQkSQФ d9$[ȵ't&0=BPUu4S`\]S8b ,t^oPLK5Q͠BxzÈaJKC7HiЖ7X$Tj)h_QRK!n(JnV9qkWkJg1<ljZ O2s6( ^ܓij6RM6s6W(,` qG'{yQ̜O!$:CiCAm)\M 5["l3h j(,Cm" =gPRZM[j )j$9 ;h+uOe )&LQI> )a ם8yzq,X\¯d)Bp縄B:BI]6.(ڱpMphT /rxnnṯXy̠~wPn&D2 7:b̻ xlIE Wl,> p9h[| rtaR d'|:Anr/՟y'f)螪yC1Ge;շ=6HL^mvii~W = d˩3qWWR Zh&XTCP3yfBXC#IPGU3x{@R tyd0&Qu slAl:Z 8onN7x0j JWObL;-]l"Dn<•e#UyKawVautN \H5`>XZ 6)TEZZUk3??-ׂ &=A30zUbxA1?5,ƚ9KaŲ&7@)Wam `9fp`BfF.ׂ2!j)3=76Jq‰9+B5౉PYנy PT6xT'2 4vt& +׼nLz3 ]q*uVjgA#;2/`͜R" ̙B̉yuM\ی)M@֫:3z!-`h["@lRMu.b@U:㳹+$^K##2/(l@Q3$?n4!5cΚ/<KI2c<^AZq+_`'#՘%oj"OBqj# sؚ%~w—K X(=R>ͻ QQQQ[+eT`$ܗIENDB`FS uؼ2eO*JFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222-c" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?_LEt.e # yyc+{Bmۄ{EgT`2@Ez2[L"q.U,$yxSymͮO9bVWSЂ&D\|P3 1t dgh7:lz CmP"4ҧȿgUKHִdG,oU ӌץzƏy_?<k-qQdtm51XX|UDYb~(S}?Mtocꖉw:ݳkx &#>'EheDAIWO-_L[XtyntڰyT$Ų$ tvksg4 [HvMqՋ^&voRTq>_'_j~_O~^vys2qʢiz YZR1nx8/w8! oF$'Gzm۲asZQëX|Vr\%`HNב29o,%F~<}ץO46,?y~[ <Ϙ@Oj|'jڜv'҃H֏Jxe*x<2+w%:mċ#Fi5ͪ>QF$ȊrѥaC_\ +"i7+۸7ێxsVcx乆̱M$[0# r׸ G'KG"$}jmnֆ[m>)HZ<Kf?CZO"O<tQyɏ OLVu[K(&1u-ӌ#La7Deeb6d;޸?0Es$w&?>O?1PyɏKƾX[^P]n,Wq?vˏfrN[Gg5D"Jkq`}Ҫ^/𵶓iַ%YY! ;!}r_ٗh̸o;SIv/{gs ?p꣫Bm:Uu.kYG^2+̸o;Ge~] xΏÞ)冋xf,fprN6 㯽V_4-N[̲aj,ap~Y85q?vˏf+ߑ?\/-2]c)t jtՕӺ-A߁,A_Wjoi*ViZj,$YcNѫXU;%iVa%T,®T۱"v1Owu:qQը|)NIź%(Xk)l!b K^/T{slmޫ fgC<ʌ2v94ʸ8֎”s$zIVBh`.A1n)lV..Ka?dPoVŊ:HSdO  =Ee=59x}`[, E) |!מjٳOړ' ]&JĤ %jmxhB8/BiU\LJ}GVFu#@&M~p%Ԥ3V\*1[7V!1 @]Я7%[[pI? ʫ$xd8^=Y=jٌʋ&-eS.ш2q>vV6&.1$Wkb=;Shk)=5. e0(;f@)ŇlpC/@o0zwUx^Kv!<_6 iD|57Bv%3#}X?ˮuuT*_8k}8g+\dϲB(m6O%Ϻ6n{`i);KNQR%ơ$%Ub:KhNQR%ơ$%Ub:KhNQR%ơ$%Ub:KhNQR%ơ$%Ub:KhNQR%ơ$%Ub:KhNQR%ơ$%Ub:KhNQR%ơ$%Ub:KhNRpl=s~:>8\"ur> 8nw\'W"/6m%ǼLƍS.˭4+G6o}6t_ou8c"tXl]C<9=|'t<ߔ׃{[ Y\:z?~"]E\[t:bm}mևIϮs=99r5:]Fo;zO1 }@V9\(Zj`s`a[d@gUYLtg$謸c@S3 biu'V;iEV;iEV;iEV;iEV;iEV1پK@/ӓ IusOČpbtV֝3:iEV;iEV;iEV;iEV;iEV;iEV;iEV;iEV;iEV;iEV;iEV;iEV;iEV;iEV;iEV;iExnJxKwD[tNN@mA]n0ί{Z-AK(ߝ:_2Az֭isqlз&Iw!ִί@܇i:~}Տ;ܬV:S\6}8|qu֞:..% $:#UDTJss8Re@t*ύHѩ?<7:#UDTJss8Re@t*ύHѩ?<7:#UDTJss8Re@t*ύHѩ?<7:#UD5t>'ǝl 6k\Lq-r1 tZ5$|Pw|y0y\_xІ;K#뮿%unauYeP/YHp,SE珁Cg.G/d,'JK{;A'4זԹ> <[=:{ .^?0;Z_I-%vw/Lw r^>s0BA.V /aמ>+˅U\B!]ΔPgrf^:V4nf|VO. IBBg7Ԃd\)m:D6/e2 rԡ~~'faǵiB*!էhh>۲A'Jf=2!>Rj|ob;Sn$%3ƝG %"FA Y~mU Djں )30߫rfؤvt'Jf˦| hr-ּImHQGr-J٭<߫ɮvwrqzGiIoe1=N"k>8Zd!DY4mEwS%4C/k!SXq]ž١oUkdHH(؉VhqǪ!ERV09d4\\3NyFV/MMEAp D5 yk'}` ]`A6&V 6W\udSl: 'C2&%߹?|6lCf1 \~5&'@c]_w_$e4Zl^$欹ӮH&skp"!$5Ա_sG.u|&@$Br2}O)S7ⱺkGw ` 8l*31~xG#CŽ`LH[ׁ{< 1x H;~OY]Q &.> 'ƘOM$_P@fQ2r3leD+@#x)9|;0d :|\7D1cH i(;1W{Yn:#`ljnd@oĝTGLPl`~޿?7]=n::[^!H#vزmݓ7Ϳ]:;$pT閰ݔwWD!tC:ptvdKϠS"#;k7qoon'uaڍ2r^{[W7=Q}(#bf%^ؤox}Ӛ,NnFGv'vx4t?nzznnD@zpȃHutx5x^ߜJ"wy;z(Dm g\c/$n pn ,Dq{g{/-8clam|,y.]HjW(_KdzW=a {Z&[,\@=]\?/x]=_]>TzSM&<IENDB`n{+mb'f&mhUPNG  IHDR&rnsRGB pHYs+PLTEBBBff3vg*IDATxCJ̖h-*hlmZQ%~a;9CѪ71䡝i?'y1iI0m5N]?"^ĶvipVrb_2l ӷ$Ir[f}!o4{ 4.unMo9ZL4|VT7it[!ܵG\fg̹kG"8iuh?Mԑ&Q^aaƒ(#aG͞g0p5w!>F[h_E@ݭ ƬH>{*$);PfGYUyq_'`0q_ΟV=mL읚v \p kvyt>("lƞCٿFEd.bmSf [p빀pzeHC?cB> Obe\7tĊŠ>]*@gB~CegFo|ki].]PtRfח2"gmV3;-vH>Pwخ!4v MD.5VkSZٷ^zW1F} vatͷf_ -k5؏l+6gwTnGA Ast429"5 y@OLIA=&:Ȁf_ Md< KY, 2g-yq(OsmUBٗa/[C85=ح莮dxRC9·BNokp+ٗa_cQpG'P7;)Joykz C;{C ӣ15V Ff{};Of]mrW}!Y$]]koKR;5cf;dvcf]kݤm doX|}' %Dgw/ivͮ5f]kvͮu]kvͮ5f]kvͮ5N]kvͮ5f]kvͮ5fIkv;vW]YM46 iB3+e>00l?3F +CCqa:{`M"86=w%MCeS43uom~PvPAfĮ\S34اdn];]_Sn!6ϳ C3j '^  +QvPo]f2f 0Yn/}3ParBIkAF0ͮ5f=ǽWuÔ|b8Wja棜)s{in=[#F|`m;0k4gv(c?A']t-at; 6/i6^${~@ǽ~Bp314v/i*Ȭ .{Ȏ!Ł>#Fw]( Gkī_e䈹{;t4=d>\.ٟe<T}u]ϲ{`Թ݄J^ۚ1{PL^0 Cgx[ކ>{{<^%v_6thwmmgވzNڐb:k4H[>H;=aMOgPZM/[삚`W XF[;}8bN@Fd~혝v뚂Cu$\}s{eri \Ԃ>o2&po>C.X ]q8S}a$ ^Uz 5ڥ,S-v<Mюt??2zJŞ?&k,5dٱ؁~,{uT!_xbMvk(씛⨏AfOTl+3sK/;|ӛdO kh1XCbfGu!v,xš}<éÿ Rxc-(zk920CϸQҘp͜ExgV(]3^ Gv#`-K`Iq3<-&I!S<>jt<P8*0){doӡ-x 0,:;n1 ;X.Sp <4ž_ą5R}m+Ppx*)+v<9Y"eɞ&edNrSS|t'5=E׭bGf<tH/'b]?ǿhІ=Z gǐRG0̉}[zDǹ}2 SWSc2jgUg,;&?b%pb:IWE6l vm;5ّ` X f쟻,UW;eG[d&!Ygk.@nR+jt.x'յHYPyکR!_n\#7v0eSUhvn3ccrZ/݄# Db݌1vdijm]`IJ!vK%ƥoi Ifٱ,vC&5ʹۥ%O&pтQz`?w 0!vJ_W:-|V_M,x3c:ޝ.dY]blO3\EW&`yPu'/O-9ɠB= LOOr<:R^ޛ~ 7^lpEC&<:s`Xcbofg "M!Hzw }|{-vˏutΫdoNgԨj٫s dŊ=ž ʇTq1c><{=g{9C]JGdg `pc z#ݛnXzSE3scUhg㚽vIImfe{DHZV[G:4ľ a5vSclٷۮz Bo 2rĢ=/,E0x.Lؘv ՓK&]F`&{ɾFrzޫ5]9A$dQu@V.@ Q}T(ԓfvD ;;e9Cp{TT{_P<:ktoYAkŜ0>Qcs!I kWE1TuIῸwW~cHu5OJwH.>iL#cnE|*$Va2"&FgTT'OïMd?s>] q' .JMW®jb?CQa T듛VI`pil[@:Yk_d\=:X[$ 8T;:;:؇I~?:Ek(`# yDE3LFg.6եdZ '`U}|6$",}XֆңxK/]0 5*s;.*Q;UY9;jYr= ~!B_ j 1i_*FGĎf&v8TBl8= 25f3٫ Ȏ)1QRfO٩g.Ozx$a25{Fvah;%zL=s!¯bCzaRcLnYnOvitҠ.BXN:|^V93It*󉝲CZ[q݄&bD {{ Mĸ^DB/խ}+a`)9f, ԑ]d]v݈ M0IM3$ Fxn}-KY 8ۤ )]X @1 mI'Zӷw^Q԰-j za4#s I;d_%Ο4/x2*fIZ2rU,3ɇ҉f_ibt/nw6QדlT7ĮҌݫ{NRٛ` JЎHc~NJ~ArqZ.;| ;]LU0b'hg!U< K>t&13vȞr׊Vx\T|=m}~v^/t, g'dn_ܞ*,fɊݩJ3fBqŸш .]#R_ ;&:{ž ϰKb~w#>:gGwNJ*c7Gf?灇?~,? ;NYs7NWN۔˃UI-wBü%?v]]Hegj8ٴQ8 rw~d(>oWYdREXX%_ުxˋbsCxJGү55~H:PZCjcV=5idx'%2z4ȪN]{rq}RWNGgEUl3f.ZtpQ츛!~jWz  7;]˿s0kN̖3v9UýjԥRP}'%0kzv^e[p*ߏDgق<`!Ul'vWxD2M:0TŞ{].-*Tlcru~:~wŁ%=Bpiݟ/{cg>-PW?;Џր18 ey$p)jVhAGtJYY}M]ZdAsiy=W 2":Sv\a 5HXáowVWCk;=֋4ԉA.'|N#>膧E`+1/`\WC=ڃ,Č3dL++;ǟ|&=d?ΟaqAA8}ΔA@QG 1/ۿ9{4Ca4DoA:%DԥDz®MWpFC(5]u2IR;Qqԭ6Go7Y\TOi(+U|Psnx>\dMWL\7c6lx>E°tfgQ{#;Š[ͮ}SÓGj 9g?BW fYqȢ=d;jU@}.k|A:tɩԷgladttۘ[P")%);'p2'2\tTeBk}4\elrPJ2.PCnļU&3,<{l%o2)V̈́qM/g]8p IUI]tC1>|e.fF[b_&-Vb/-̎@^20Īj5{8@{hu=Kڞ&9=eFY眃4O/\"Å!;0e.BphrqU*~yS;穥r{XZs{iܼUr;xtDOоb+~~"Φjsvɩ}=ECeeaTΦQ *% uZ%njff4\2L8-Ŏ/C]"iH>J]CC9;}3XKo=eٷ]g Kov6ͮ_`({+@AI4kUCfq ;>{evjg-C?^rƄ'}ӧ6F4ۘ؇1/Y]Cf3{aPi_ OZ>sU?⋕ Ekl\nO219uDW]i ddG-x#M2r),sY225 {.v5/=L=qd5:FfkIɨ*[h GyGP38@_x87okar$"۪3\(=5.C|&i$\T ].J$4p2O]K9th݉4VdO-$ͮ5f]7.b4]O}{KDށ,KD̐?"6Zz3s *"$#s|D-~1=TٷΝbL]5;w~,;!u7קK+ ]r;a S#% O8V.!ЗžaF\' ;JbW%a7KO7>𤣚͌PF0?Usg0FgIPF/SÁ^Kspx0E ;ˣh_^*v@s6ǃ~<_/kIQӴҀQOH`!Hw á7vޅAfrzU5MO.TWrSMw` ,ysʱg=˵5{,;=E/m]Թ}њ] #1߇}~&`׹3n' 2W`!!vqXGvȿٯg֥a‘?iyn/ ۗF3c/an*&LbNvkwpٳt62Mikv4#Y>#QMuMfHz|ljKf24f16įH_~Q~3A?ҟ-?bvt٧\f`le$m@[mgwԘ|@g9.Oo&{N[ 5V#k!˯`{ ;\8~"|M4d;{~&epr Ͼ$jIkvͮ5f}{ e kv5ؓe=y0feٛH|a|^jDlBk)886;~Qg#;ޑPC/pƎ>ScW-c߃.V.[״}#,f?̄Ŏ'S^j0<ޡ;,"8Vq (@xjϼ8}TGb,ase~Lv}1i|>aW C-OMFD^]Uf=`̿Om9-nWa{=7,FΑ'}dO;ح9ަL0BU ҿu@y4T {V5ǁ6cx( _XTdd mbXfǘ9i(! Wܥ0vESr6kΞGGz\#0+ͨklf_"}ؾf" [b4RIkvͮ_dwhD-gC{5{C?V >O66aZ{h]32 SRM }FE  jWa\!|BdWU;ii.ga\^҈g$|b/!6=eȞu]o&C;;LY M;4(Y8lZbI=M1O)Oi';;x:p\TA?[eI.pbb תPBɨ?6A햽T[k?N8c.jPW=G[]zTjjF2vyï,>a>mb%¨Ga U5{"L;;2Żgo*ܮ5f]kݱ?7nĮ9& +ʾ;.p`M&i㙨Ld[aI+'V9`Ɲf..lٿYPPgaW H!{|I"T!v87h/ÉunowwDkС̬5{î*,2Ln'fM8{2~FUgvcƱh&Shw54gqd:u;{sKw}WhKk؋d'.LfMU uz.ӳb~t:kWB^ 0KJo= :`warX ۅfo]p0 }#?1`;{?RQԓ!Ȩjv54JgUZaw4Fدimv~z>:ۍnH7ˎ[*,VVdjWb!0Hy0!0!#I$5{Y{| Y΁]~=t[G7 uD? rwL %ͮ5N]kv~Kͮs޲7޿S N]kvͮ5f]kvͮf]kvͮ5f׵K`Ikv4fIkv4`^54LpIENDB`>j(` / 0DArialNew bb+tb\b0tbz[ 0lbDWingdingsbb+tb\b0tbz[ 0lb DTimes New Romantb\b0tbz[ 0lb@ . @n?" dd@  @@``   l      " t     -,    ^AG  ! b$oqc ˽cEb$4b ,R b$Ye˦-S_ ]$R$uؼ2eO*[ }(b$FUŌ;2b$GtBx):F8S~6b$ݽ-vsmGl<b$5ЬX![ =Db$mb'f&mhU+P 0AA 3@8͙ ʚ;f9ʚ;g4IdIdbz[ 0:bppp0 <4ddddb 0bx+b g4)d)dbz[ 0Bbp@ pp<4!d!db 0bx+b<4!d!db 0bx+b,0___PPT10 pp___PPT9{TbA0}rVD:\karpenko\!! Karpenko\Intel ;01>@0B>@8O\>:C<5=BK 2 @01>B5\8@BC>7\CCSE_Courses\SE201\SE201_AllModules\SE201_Mod01_SETermsConcepts\vrtSE201_Mod01_SETermsConcepts_1_2.htm| AA04? -O  =TXT>4C;L 14 OCL  O7K: >1J5:B=KE >3@0=8G5=89++0  VC@A SE201 2545=85 2 ?@>3@0<<=CN 8=65=5@8N,,2  ! R/7K: >1J5:B=KE >3@0=8G5=89(OCL): GB> MB>?**0   "'0ABL O7K:0 UML, 8A?>;L7C5<0O 4;O >?8A0=8O >3@0=8G5=89 :;0AA>2, =5 7028AOI8E >B AB>@>==8E 87<5=5=89 ?@545;O5B =5 87<5=ONI85AO >A>15==>AB8 :;0AA0   >>G5<C E>@>H> 8A?>;L7>20BL OCL? 54>AB0B>G=> B>G=>5 >?8A0=85 :;0AA>2 A ?><>ILN D>@<0;L=KE O7K:>2 2CA<KA;5==>ABL !;>6=>ABL D>@<0;L=KE O7K:>2 57028A8<>ABL >B AB>@>==8E D0:B>@>2 3@0=8G5=8O OCL =5 C?@02;ONB 40==K<8 8;8 ;>38:>9 ?@>3@0<<K OCL ?>445@68205B B8?K 40==KE0 +  *45 8A?>;L7>20BL OCL? ?@545;5=85 8=20@80=B>2 2 AB@C:BC@0E 8 B8?0E <>45;8 :;0AA0 ?@545;5=85 8=20@80=B>2 B8?>2 ?8A0=85 ?@5- 8 ?>ABCA;>289 2 >?5@0F8OE 8 <5B>40E ?8A0=85  >E@0==8:>2 0: O7K: =02830F88 ?@545;5=85 >3@0=8G5=89 =0 >?5@0F88 ;2%;  3     #  < @8<5@ :;0AA0 P=20@80=BK 8 ?@54CA;>28O A ?>ABCA;>28O<8))p45=B8D8:0B>@ self: self.numberOfEmployees > 50 @5- 8 ?>ABCA;>28O: context Typename::operationName(param1 : Type1, ... ): ReturnType pre parameterOk: param1 > ... post resultOk: result = ... =20@80=B: context Company inv: self.numberOfEmployees > 50 Package: package Package::SubPackage ... endpackage  | 1 9 :   *6                             $Let  >?@545;5=8O    let income : Integer = self.job.salary->sum() let hasTitle(t : String) : Boolean = self.job->exists(title = t) in if isUnemployed then self.income < 100 else self.income >= 100 and self.hasTitle( manager ) endif +>0x2   :   9     *@5>1@07>20=85 B8?>2 &@8>@8B5BK >?5@0F89@pre  . 8  -> #=0@=K5  not 8  -  * 8  / 8=0@=K5  + 8  -  if-then-else-endif  < ,  > ,  <= ,  >=  = ,  <>  and ,  or 8  xor  implies *A:>1:8 <>3CB 1KBL 8A?>;L7>20=K 4;O 87<5=5=8O ?>@O4:0 2K?>;=5=8O **>?5@0F88  + ,  - ,  * ,  / ,  < ,  > ,  <>  <=  >= ,  and ,  or , and  xor <>6=> 70?8AK20BL 2 B0:>9 D>@<5: a.+(b), 345 +()  >?5@0F8O =04 b. P P       !%Q@     :;NG52K5 A;>20 8 :><<5=B0@88  !2>9AB20 :;0AA>2N!2>9AB20 self.property !2>9AB20: 0BB@81CBK self.age > 0 !2>9AB20: >?5@0F88 context Person::income (d: Date) : Integer post: result = age * 1000 !2>9AB20: A2O78 context Company inv: self.manager.isUnemployed = false inv: self.employee->notEmpty() ! #Q  ;   #                <02830F8O : :;0AA0<-0AA>F80F89`@8<5@K B0:8E :;0AA>2: 01>B0, @0:. 02830F8O : :;0AAC-0AA>F80F88 2 OCL 70405BAO G5@57  . 8 =0720=85 :;0AA0-0AA>F80F88 =0G8=0NI53>AO A> AB@>G=>9 1C:2K: context Person inv: self.job 02830F8O : :;0AAC-0AA>F80F88 B8?0 employeeRanking 2>7<>6=0 2 42CE @07;8G=KE 20@80=B0E 2 7028A8<>AB8 >B =0?@02;5=8O: context Person inv: self.employeeRanking[bosses]->sum() > 0 context Person inv: self.employeeRanking[employees]->sum() > 0`Z" ZvZ Z x~0 .      $ B         >02830F8O 87 :;0AA>2-0AA>F80F89 K <>65< C?@02;OBL =5?>A@54AB25==> 87 :;0AA0-0AA>F80F88 >1J5:B0<8 :>B>@K5 ?@8=8<0NB CG0AB85 2 0AA>F80F88: context Job inv: self.employer.numberOfEmployees >= 1 inv: self.employee.age > 21,k[ k[Ji %  $ N02830F8O G5@57 ><?5B5=B=K5 AA>F80F88((20;8D8F8@>20==K5 0AA>F80F88 8A?>;L7CNB >48= 8;8 =5A:>;L:> 0B@81CB>2 GB>1K 2K45;8BL >1J5:B A 4@C3>3> :>=F0 0AA>F80F88. context Bank inv: self.customer -B> ?@82>48B : ?>O2;5=8N Set(Person)  01>@C G5;>25: A>45@60I5<C 2A5E :;85=B>2 10=:0. context Bank inv: self.customer[8764423] -B> ?@82>48B : 2K45;5=8N :;85=B0 ;8G=K9 =><5@ :>B>@>3> = 8764423h Y ~k[w      #  : XA?>;L7>20=85 C:070=8O ?CB8 8<5= 4;O ?0:5B>2-- ?@545;0E UML @07;8G=K5 B8?K >1J548=ONBAO 2 ?0:5BK. OCL >15A?5G8205B A?>A>1 O2=>3> >1@0I5=8O : B8?C 2 4@C38E ?0:5B0E 8A?>;L7CO ?@8AB02:C 8<5=8 ?CB8 ?0:5B0. 0?@8<5@: Packagename:: Typename >7<>6=K 8 1>;55 A;>6=K5 :>=AB@C:F88: Packagename1:: Packagename2:: TypenameX &( &(  & l    %   V>ABC? : ?5@53@C65==K< A2>9AB20< A25@EB8?>2,,! AO:89 @07 :>340 A2>9AB20 ?5@5>?@545;ONBAO 2 ?@545;0E B8?0, : A2>9AB2C A25@EB8?0 <>65B 1KBL ?>;CG5= 4>ABC? 8A?>;L7CO >?5@0F8N oclAsType(). AO:89 @07 :>340 <K >?@545;O5< :;0AA B :0: ?>4B8? :;0AA0 A 8 A2>9AB2> p1 ?@8=04;568B :0: >4=><C, B0: 8 4@C3><C, <K <>65< =0?8A0BL: context B inv: self.oclAsType(A).p1 -- ?>;CG05< 4>ABC? : A2>9AB2C >?@545;5==><C 2 :;0AA5 A. Self.p1 -- ?>;CG05< 4>ABC? : A2>9AB2C >?@545;5==><C 2 :;0AA5 B.B 8G .  )    A      A    7 J@54?8A0==K5 A2>9AB20 2> 2A5E >15:B0E&&ABL =5A:>;L:> A2>9AB2 :>B>@K5 8A?>;L7CNBAO 2A5<8 >1J5:B0<8 8 ?@54?8A0=K 2 OCL.PPK HA>15==>AB8(A2>9AB20) !0<8E ;0AA>2  %#0   n!CI5AB2C5B =5A:>;L:> A2>9AB2 :>B>@K5 ?@54>?@545;5==K 2 :064>< B8?5.  ?@8<5@C B0:>2K< O2;O5BAO allInstances @57C;LB0B>< :>B>@>3> O2;O5BAO =01>@ 2A5E M:75<?;O@>2 B8?0 2 =0;8G88, 2 B>B <><5=B 2@5<5=8 :>340 2K@065=85 1C45B 2K?>;=5=>. A;8 <K E>B8< C1548BLAO 2 B>< GB> 2A5 M:75<?;O@K Person 8<5NB C=8:0;L=K5 8<5=0, <K <>65< =0?8A0BL: context Person inv: Person.allInstances->forAll(p1, p2 | p1 <> p2 implies p1.name <> p2.name)Jn _ 86 _    +         >;;5:F88 n>;;5:F8O MB> 01AB@0:B=K9 B8?, 2:;NG0O >1J548=5=8O :>;;5:F8>==KE B8?>2 8 53> ?>4B8?>2. OCL @07;8G05B B@8 B8?0 :>;;5:F89: Set (01>@), Sequence (>A;54>20B5;L=>ABL), 8 Bag (!C<:0). Set O2;O5BAO <0B5<0B8G5A:8< =01>@><. = =5 A>45@68B ?>2B>@=KE M;5<5=B>2. Bag ?>4>15= Set, :>B>@K9 <>65B A>45@60BL ?>2B>@K M;5<5=B>2. Sequence ?>4>15= Bag 2 :>B>@>< 2A5 M;5<5=BK C?>@O4>G5=K. Bags 8 Sets =5 8<5NB C?>@O4>G820=8O, >?@545;5==>3> 2 =8E. @8<5@K :>;;5:F89: A Set: Set { 1 , 2 , 5 , 88 } Set { 'apple' , 'orange', 'strawberry' } A Sequence: Sequence { 1, 3, 45, 2, 3 } Sequence { 'ape', 'nut' } Sequence{ 1..10 } A bag: Bag {1 , 3 , 4, 3, 5 }0P  P X       E  -   $  .  (>;;5:F88 >;;5:F89 Z ?@545;0E OCL, 2A5 >;;5:F88 >;;5:F89 @0725@BK20NBAO 02B><0B8G5A:8. >MB><C A;54CNI85 420 2K@065=8O @02=K: Set{ Set{1, 2}, Set{3, 4}, Set{5, 6} } Set{ 1, 2, 3, 4, 5, 6 },mA lB0  ]B r5@0@E8O >;;5:F8>==KE "8?>2 8 @028;0 !>>B25BAB28O "8?>2::6"8?K Set(X), Bag(X), 8 Sequence(X) 2A5 O2;ONBAO ?>4B8?0<8 Collection(X). @028;0 A>>B25BAB28O B8?>2 ?@>8AE>4OB A;54CNI8< >1@07>< 4;O B8?>2 :>;;5:F89: Type1 A>>B25BAB2C5B Type2 :>340 >=8 845=B8G=K (AB0=40@B=>5 ?@028;> 4;O 2A5E B8?>2). Type1 A>>B25BAB2C5B Type2 :>340 >= O2;O5BAO ?>4B8?>< Type2 (AB0=40@B=>5 ?@028;> 4;O 2A5E B8?>2). Collection(Type1) A>>B25BAB2C5B Collection(Type2) :>340 Type1 A>>B25BAB2C5B Type2. !>>B25BAB285 B8?>2 B@0=78B82=>: 5A;8 Type1 A>>B25BAB2C5B Type2, 8 Type2 A>>B25BAB2C5B Type3, B>340 Type1 A>>B25BAB2C5B Type3 (AB0=40@B=>5 ?@028;> 4;O 2A5E B8?>2). 0?@8<5@, 5A;8 25;>A8?54 8 <0H8=0 420 >B45;L=KE ?>4B8?0 B@0=A?>@B0 B>: Set(Bicycle) A>>B25BAB2C5B Set(Transport) Set(Bicycle) A>>B25BAB2C5B Collection(Bicycle) Set(Bicycle) A>>B25BAB2C5B Collection(Transport) "P          N  <   (      &       n                       0A?>;L7>20==K5 8AB>G=8:8H@8 @07@01>B:5 ?@54AB02;5==KE <0B5@80;>2 A @07@5H5=8O 02B>@>2 8;8 ?@02>>1;040B5;59 8A?>;L7>20;8AL A;54CNI85 8AB>G=8:8: 2B>@, 0720=85, 8740=85 (@0745;K <0B5@80;>2)6w ." w. " ?@>5:B5  "#&5;L ?@>5:B0 "8@BC>7" - ?>43>B>2:0 ?@5?>4020B5;59 : 2=54@5=8N 2 #0E >AA88 8 4@C38E AB@0= ! =>2>9 A?5F80;L=>AB8  "=D>@<0F8>==K5 B5E=>;>388". A=>2=0O 7040G0 ?@>5:B0 - A>25@H5=AB2>20=85 <5B>4>;>388 ?@5?>4020=8O ?@>3@0<<=>9 8=65=5@88. 50;870F8O MB>9 ?@>3@0<<K =0?@02;5=0 =0 A>740=85 =04Q6=>9 >1@07>20B5;L=>9 >A=>2K 4;O 40;L=59H53> @0728B8O >B5G5AB25==>9 "-8=4CAB@88.  @0<:0E ?@>5:B0 (023CAB-45:01@L 2004 3.) - >1CG5=85 A>2@5<5==K< <5B>48:0< ?@>3@0<<=>9 8=65=5@88, ?5@54>2K< 8=D>@<0F8>==K< B5E=>;>38O<, ?>;CG5=85 >?KB0 @01>BK ?> A>740=8N CG51=KE :C@A>2, A>>B25BAB2CNI8E <564C=0@>4=K< >1@07>20B5;L=K< AB0=40@B0< IEEE/ACM Computing Curricula 2001: Computer Science 8 Software Engineering, 0 B0:65 ?@>E>645=85 AB068@>2:8 2 :>@?>@0F88 Intel.  Pct   0/Pb. b` 33` Sf3f` 33g` f` www3PP` ZXdbmo` \ғ3y`Ӣ` 3f3ff` 3f3FKf` hk]wwwfܹ` ff>>\`Y{ff` R>&- {p_/̴>?" dd@ ? qPd2@% d B" @ ` n?" dd@   @@``PR    @ ` ` p>> 6 . @ (    6  "F2(  V"1@075F 703>;>2:0 j  0 "8(,  1@075F B5:AB0 B>@>9 C@>25=L "@5B89 C@>25=L '5B25@BK9 C@>25=L OBK9 C@>25=L M   0 "8  D*@>5:B  "# .>23>@>4, 20043.##c   0ܒ "d@   v*SE201. >4.01 @>3@0<<=0O 8=65=5@8O: =07=0G5=8O, ?@8=F8?K 8 ?>=OB8O 0@?5=:> !.., ____________________, 20043 (ut# c 6  @ -,  0 "f`  ! * 87 NNH # cc c `B  s *DԔ"`B  s *DԔ"]S]B   N?DԔ?"0?@NNN?NESSe`   C *Auml_logo"M4H  0@޽h ? 3380___PPT10. .D>@<;5=85 ?> C<>;G0=8Nf b `f(    6H8+ "> + V"1@075F 703>;>2:0   08:+ "   + \(1@075F ?>4703>;>2:0    0,?+ "^8 + D*@>5:B  "# .>23>@>4, 20043.##c 2  0xD+ "^)  + *SE210. @>3@0<<=0O 8=65=5@8O: =07=0G5=8O, ?@8=F8?K 8 ?>=OB8O 0@?5=:> !.., ____________________, 20043 tmc 5# c # c ## c 0 9 ,   0C+ "^q( + ! * 87 NN( # c  H  0@޽h ? 3380___PPT10. 0 $ (     0H P   H X*   0\H    H Z* d  c $ ?X  H  0H  0 H (1@075F B5:AB0 B>@>9 C@>25=L "@5B89 C@>25=L '5B25@BK9 C@>25=L OBK9 C@>25=Lb  M  6H _P  H X*   64H _  H Z* H  0޽h ? 3380___PPT10.  $8(  $ $ 08' P    >*  $ 0|,     @*  $ 6| _P   >*  $ 6 _   @* H $ 0޽h ? 3380___PPT10.7}b P$(    c $\+P  + x  c $^+ + N  C &Asplash/   0_+Iy RITLab, 8@BC>7, #, .>23>@>4, 2004 3.* 2*,  #RB   s *DԔ4S4B   N?DԔ?"0?@NNN?NSS<V  <e+  T>=NG5=:> .., >A=8F:89 !.!., OE>2 $..2+ 0   UUH  0@޽h ? 33___PPT10i.E+D=' b= @B + b 0(  x  c $+F2(  + x  c $+"8(, + H  0@޽h ? 33___PPT10i.C%+D=' b= @B +$ b $(  r  S +F2(  + r  S +8(, + H  0@޽h ? 3380___PPT10.A@ڊ $ b $(  r  S T/AF2(  A r  S @2A8(, A H  0@޽h ? 3380___PPT10.B@~0qj b j(  r  S 740BLACDSee BMP ImageW AH  0@޽h ? 3380___PPT10.D`L.$ b $(  r  S 8CAF2(  A r  S  DA8(, A H  0@޽h ? 3380___PPT10.E*>#b "w"p2]"(    c $VAF(`(  A T@07>2K5 B8?K 8 >?5@0F88 =04 =8<8! 8/2 \ #"6* '0/100000M4.% A : <T`A?n 2  >  @` 8 <iA?*n   u{ 1 , 2 , 5 , 88 }    @` 6 <qA?8n *  gSet   @` 3 <dsA?; 2n  tSelect(), reject()   @` 1 <xA?*; n  o Common type     @` / <TA?8; *n  o Collection       @` , <A? 2;  toUpper(), concat() @$ @` * <A?* ;  . to be or not to be...    @` ( <A?8 *;  jString   @` $ <A?u2 *, +, -, /, abs() @  @` " <ܺA?*u m 1, -5, 3678     @`   <A?8u* mInteger   @`  <A?2 >  @`  <A?* p{ 3, 47, 14 }     @`  <A?8* m Sequence       @`  <A? 2 >  @`  <A?*  q{ 12, 23, 34 }    @`  <A?8 * gBag   @`   <C?2  #and, or, not, implies, if-then-else$ $@#  @`   < C?*  m True, false     @`   <C?8*  kBoolean   @`   <`C?2 }*, +, -, /, floor() @  @`   < C?* m 1.5, 3.1415     @`  <)C?8* hReal   @`  <9C?/2u q Operation      @`  <BC?*/u mValue   @`  <KC?8/*u oType  B  @``B  0o ?8/2/ZB  s *1 ?82ZB  s *1 ?8 2 ZB  s *1 ?82`B  0o ?82ZB  s *1 ?*/*uZB  s *1 ?/`B  0o ?2/2ZB ) s *1 ?8; 2; ZB 0 s *1 ?8n 2n ZB 7 s *1 ?8 2 ZB I s *1 ?*u2u`B  01 ?8u*u`B J 01 ?8u8`B  0o ?8/8u`B K 0o ?88ZB M s *1 ?**`B L 01 ?*u*ZB N s *1 ?*2`B ! 01 ?8*H  0@޽h ? 3380___PPT10.F@OG$ b $(  r  S  CF2(  C r  S 4C8(, C H  0@޽h ? 3380___PPT10.LK b bZ +@(  x  c $CF2(  C   8  7 #""8  C   <hC?  freal   @`   <1@07C5< 2  @ @`  <D?8% mType  @  @``B   0o ?8 ZB  s *1 ?8% %ZB  s *1 ?8X XZB  s *1 ?8 `B  0o ?8 `B  0o ?88ZB  s *1 ?`B  0o ?   4(, = #""4(, D2 ( <D? (, :Boolean =5?@82>48< : integer " B(    @` ' <L$D?: , N=5B @ @` & <&D?4 :, u 1 * false  @  @`& % <0D? (  8String =5?@82>48< : integer  B(    @` $ <AD?:  N=5B @ @` # <JD?4 :  `1 + AB@>:0  @ @` " <LD? [ (  >  @` ! <UD?:[  P5ABL @ @`   <eD?4[ :  R 1 + 2 * 34  @ @`  <VD? ([  `1JOA=5=85   @ @`  <pD?: [  b>7<>6=>ABL   @ @`  <HD?4:[  ^K@065=85   @ @``B ) 0o ?4(ZB * s *1 ?4[ ([ ZB + s *1 ?4 ( ZB , s *1 ?4 ( `B - 0o ?4,(,`B . 0o ?44,ZB / s *1 ?::,ZB 0 s *1 ?  ,`B 1 0o ?((, 4 0(D4  T$!>>B25BAB285 B8?>2 5 0DZ L@5>1@07>20=8OH  0@޽h ? 33___PPT10i.OQ+D=' b= @B + b *(  r  S DF2(  D x  c $lD, D H  0@޽h ? 33___PPT10i.QI)+D=' b= @B + b  #Fu(  r  S DF2(  D  j  E #"6* MLMLMMMLMj  D ? <D? j 8  ePre   @` = <4D? 8  dOr   @` : <+?j Q iContext   @` 8 <D?Q iEndif   @` 5 <|D?Qj  eDev   @` 3 <D?Q  eNot   @` 0 <@D?lj  m Endpakage     @` . <E?l fThen   @` + <T E?j l kImplyes   @` ) <E?l fIf @  @`  <E? j  din   @`  <)E?  gXor   @`  <2E?8 j  fPost   @`  <(;E?8   eAnd   @`   < CE? j  eInv   @`   <KE?   eLet   @`  <TTE?j  jpakage   @`  <|]E? fElse   @``B  0o ?j ZB  s *1 ?j ZB  s *1 ? j ZB  s *1 ? j `B  0o ?j `B  0o ?ZB  s *1 ?`B # 0o ?j j ZB * s *1 ?lj lZB / s *1 ?j ZB 4 s *1 ? j ZB 9 s *1 ?Qj QZB > s *1 ?8 j 8  F 0aE] m ;O =0?8A0=8O :><<5=B0@852 =C6=> ?@5420@OBL 8E 42>9=K< 7=0:>< --CCH  0@޽h ? 33___PPT10u..QY+D=' b= @B +} b 0($(  (r ( S ,oEF2(  E r ( S oE8(, E H ( 0@޽h ? 33___PPT10i.^@+D=' b= @B +b $(  $ $ c $EF(`(  E <(!2O78 <564C :;0AA0<8 $ c $tE, E " context Person inv: Self.job ...F# B   $ c TA0!>740BLACDSee BMP Image d  EH $ 0@޽h ? 33___PPT10i.`#3+D=' b= @B + b @<<(  <~ < s *EF2(  E ~ < s *E8(, E H < 0@޽h ? 33___PPT10i.`#3+D=' b= @B + b P@J(  @~ @ s *EF2(  E  @ s *E8(, E H @ 0@޽h ? 33___PPT10i. S+D=' b= @B + b `D<(  D~ D s *LEF2(  E ~ D s * E8(, E H D 0@޽h ? 33___PPT10i.J`6ˍ+D=' b= @B + b pH6(  Hx H c $5:B "8@BC>7" 2K?>;=O;AO 2 8653>@>4A:>< 3>AC40@AB25==>< C=825@A8B5B5 8<. .. >10G52A:>3> ?> 8=8F80B825 :><?0=88 Intel ?@8 ?>445@6:5 Microsoft, IBM, Borland, 01>@0B>@8O 0A?5@A:>3> 8 4@.\ P`c #c#7c>v  x U z {  h \A splash< HH h 0@޽h ? 33___PPT10i. S+D=' b= @B +<   0   L (  ^  S  X   H  S   0  H H4 :>=F5 60-E  =0G0;5 70-E 3>4>2 ?@>H;>3> 25:0 ?@>87>H;> A>1KB85, :>B>@>5 2>H;> 2 8AB>@8N :0: ?5@2K9 :@878A ?@>3@0<<8@>20=8O. !>1KB85 A>AB>O;> 2 B><, GB> AB>8<>ABL ?@>3@0<<=>3> >15A?5G5=8O AB0;0 ?@81;860BLAO : AB>8<>AB8 0??0@0BC@K (65;570), 0 48=0<8:0 @>AB0 MB8E AB>8<>AB59 ?>72>;O;0 ?@>3=>78@>20BL, GB> : A5@548=5 90-3>4>2 2A5 G5;>25G5AB2> 1C45B 70=8<0BLAO @07@01>B:>9 ?@>3@0<< 4;O :><?LNB5@>2. ">340 8 703>2>@8;8 > ?@>3@0<<=>9 8=65=5@88 (8;8 B5E=>;>388 ?@>3@0<<8@>20=8O, :0: MB> =07K20;>AL 2 >AA88) :0: > =5:>B>@>9 48AF8?;8=5, F5;LN :>B>@>9 O2;O5BAO A>:@0I5=85 AB>8<>AB8 ?@>3@0<<. ! B5E ?>@ ?@>3@0<<=0O 8=65=5@8O ?@>H;0 4>AB0B>G=> 1C@=>5 @0728B85. -B0?K @0728B8O ?@>3@0<<=>9 8=65=5@88 <>6=> 2K45;OBL ?>-@07=><C. 064K9 MB0? A2O70= A ?>O2;5=85< (8;8 >A>7=0=85<) >G5@54=>9 ?@>1;5<K 8 =0E>645=85< ?CB59 8 A?>A>1>2 @5H5=8O MB>9 ?@>1;5<K. 0 A;0945 ?@54AB02;5=K @O4 DC=40<5=B0;L=KE ?@>1;5< @07@01>B:8 ?@>3@0<< 8 =0945==KE DC=40<5=B0;L=KE <5B>4>2 8E @5H5=8O. -B8 <5B>4K 8 ?> A59 45=L A>AB02;ONB >A=>2C ?>4E>4>2 : ?@>5:B8@>20=8N ?@>3@0<<=KE ?@>4C:B>2. H  0޽h ? 3380___PPT10. @r ;y5Fj|x̓$œٿXJC(  V "Q%')~,? ?o Oh+'0$O hp    1 Tim268Microsoft PowerPoint@`!j@ ]@GNt  &$    """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___www4$A o(oʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwwޘlllfflmlrlllmlmmmfllfmlflfrsmµr޻rglfl ՜.+,0D     A4 (210x297 )A4 A Arial WingdingsTimes New Roman + 14 OCL * (OCL): ? OCL? OCL? ) ! Let       - -( - , & %()  :      _Y@TimTim  !"#$%&'()*+,-./0123456789:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     Root EntrydO)Pictures|Current UserSummaryInformation(TOPowerPoint Document(?}@DocumentSummaryInformation8Root EntrydO)pF Pictures|Current UsernSummaryInformation(TO     2_Y@ 0@?5=:> !5@359 8:>;0528G