URL=http://www.sra.co.jp/people/sahara
$BK\%l%]!<%H$G$O!"%*%V%8%'%/%H;X8~J,@O$r$I$N$h$&$K9T$&$+$r>R2p$9$kCf$G!"(B Smalltalk$B$NJ,@O%D!<%k$H$7$F$NG=NO$rHdO*$9$k(B 1 $B!#(B
$BLdBj$H$7$FGD0.$7$d$9$$$,!"7k9=;u$4$?$($,$"$k$H$$$&$3$H$G!"NcBj$H$7$F!"?^=q4[(B
$B$NB_=P4IM}$r $B%I%a%$%sJ,@O$G$O!"%7%9%F%`$NBP>]$H$J$kLdBjNN0h(B($B%I%a%$%s(B)$B$O2?$r$7$F$$$k$+$r%b(B
$B%G%k2=$7!"%I%a%$%s%b%G%k$r:n@.$9$k!#%I%a%$%sJ,@O$G9T$&$Y$-:n6H$O!"0J2<$NDL$j(B
$B$G$"$k!#MQ8l=8$N:n@.$O!"%*%V%8%'%/%H;X8~3+H/5;K!0JA0$+$iI,MW$J:n6H$G!"=EMW@-(B
$B$O%*%V%8%'%/%H;X8~3+H/$K$J$C$F$bJQ$o$i$J$$!#(B
$B%I%a%$%sJ,@O9)Dx$G$O!"%I%a%$%s$K8GM-$JMQ8l$d$=$NB> $B5!G=$N5-=R$G$"$k$+$i!"(BUseCase$B$O2^$N$h$&$J3,AX!JF~$l;R!K9=B$$K$J$k!#(B
$B$G$O!"?^=q4[$NB_=P4IM}%7%9%F%`$N $B%H%C%W%l%Y%k$N(BUseCase$B%@%$%"%0%i%`$O!"%7%9%F%`$r$=$NFbIt$H30It$KJ,$16-3&$rL@(B
$B3N$K$9$kF/$-$b$"$k!#$3$N(BUseCase$B$N>l9g!";J=q$HMxMQ $BB_=P!&JV5Q=hM}$N(BUseCase$B$O2^$N$h$&$K$J$k!#GH@~$NLp0u$O!"0MB84X78$r<($9!#Nc(B
$B$($P!"B_=P$OMxMQ $B=>Mh7?$N $B$J$*!";EMM5-=R8@8l(BOCL$B$N5-K!$K$D$$$F$O!"5SCm$G@bL@$7$F$$$/!#FbMF$O<+A38@8l$K(B
$B$h$kCm
$BMxMQ --$B$+$D:#2sB_$7=P$9B"=q$O$9$Y$FB_=P2DG=$G$J$1$l$P$J$i$J$$!#(B
7
Set($BMxMQ -- $BB_=P8e$NB"=q$N=89g$G$"$k!#(B
Set($BB"=q(B) = Set($BB"=q(B)@pre
- Set($BB_$7=P$9B"=q(B) 10
-- $B$^$?$O!":#2sB_$7=P$9B"=q$KB_=PITG=$N$b$N$,$"$k!#(B
Set($BMxMQ Set($BB"=q(B) = Set($BB"=q(B)@pre
and $BB_=PITG=>uBV(B 13
$B!V(B1$B:}$G$bB_=PITG=$G$"$l$PB_$7=P$5$J$$!W$H$$$&$N$O!"8e7o$G5-=R$7$?>r7o$G$"$j(B
$B!"$3$N%7%J%j%*$,!V$9$Y$F=*$o$C$?8e!W$N>uBV$r5-=R$7$F$$$k!#$D$^$j!"%7%J%j%*Fb(B
$B$G?F@Z$J%f!<%6!<%$%s%?%U%'!<%9$r9=C[$7!"!VB_=P2DG=$J$b$N$@$1$G$bB_$7=P$9!W=h(B
$BM}$r9T$&$3$H$r6X;_$7$F$$$k$o$1$G$O$J$$!#$3$N$h$&$J5!G=$N8!F$$O!"@_7W9)Dx$N%f(B
$B!<%6!<%$%s%?%U%'!<%9@_7W$G9T$($P$h$$$N$G$"$k!#%I%a%$%sJ,@O$d%7%9%F%`J,@O$G$O(B
$B!"%7%9%F%`$N:,44$K4X$o$i$J$$$h$&$J:3Kv$J5!G=$O5-=R$7$J$$!#:#$N>l9g!"$;$$$<$$(B
$B!V%f!<%6!<$K$H$C$F;H$$$d$9$$%$%s%?%U%'!<%9$N9=C[(B
14 $B!W$r$&$?$C$F$*$1$P$h$$!#(B
$BJV5Q$N%7%J%j%*$O0J2<$N$h$&$K$J$k!#(B
Set($BMxMQ Set($BJV5Q$5$l$?B"=q(B)->notEmpty
and
Set($BMxMQ -- $B?7$?$JB"=q$N=89g$H$J$C$F$$$k(B
Set($BB"=q(B) = Set($BB"=q(B)@pre
union Set($BJV5Q$5$l$?B"=q(B) 17
OCL$B$N=89g1i;;$N5-K!$O?t3X$N$=$l$h$j$d$dJ,$+$j$K$/$$$,!"5-9f$,(BASCII$B5-9f$N$_$G(B
$B$G$-$F$$$k$N$G!"%o!<%W%m$d(BCASE$B%D!<%k$J$I$G;EMM$r=q$/$N$KFCJL$J$3$H$r$7$J$/$F(B
$BNI$$$H$$$&MxE@$,$"$k!#(B
$B!V=89g$O$I$&$b6l $B$@$$$V(BOCL$B$N(B->$B$H$$$&5-K!$H4{Dj5A$NA`:n$,=P$F$-$?$N$G!">/$7@bL@$7$h$&!#(BOCL$B$G$O(B
$B!"$b$N$N=8$^$j$rI=$9(BCollection$B$H$$$&7?$,$"$C$F!"(BSet$B!J=89g!K$d(BBag$B!J=EJ#$N$"$k(B
$B$b$N$N=8$^$j!K$d(BSequence$B!J=g=x$N$"$k$b$N$N=8$^$j$G!"MWAG$N=EJ#$,5v$5$l$k!K$H(B
$B$$$&7?$N%9!<%Q!<7?(B 19 $B$K$J$C$F$$$k!#(BOCL$B$O7?$H%/%i%9$rF10l;k$7$F$$$k!#$=$7$F!"%/%i%9$KDj5A$5$l$?%W(B
$B%m%Q%F%#(B 20 $B$d(BCollection$B7?$KDj5A$5$l$F$$$k%W%m%Q%F%#$r;XDj$9$k$?$a$K!"%T%j%*%I!J!%!K$HLp(B
$B0u5-9f!J(B->$B!K$r;H$C$F$$$k!#(B
$BNc$($P!"2^$N$h$&$K!V2q $B2q $B$H5-=R$9$l$P$h$$!#$3$3$G!"2q $B:#$N>l9g!"(Bself.$B=>6H0w$G!V?M!W%/%i%9$N%$%s%9%?%s%9$N=89g$r;XDj$7$?$3$H$K$J$k(B
$B!#$=$7$F!"$=$N=>6H0w$N=89g$K(B->size$BA`:n$rE,MQ$7!"7k2L$H$7$F$=$N=89g$NMWAG?t!J(B
$B$D$^$j=>6H0w?t!K$r5a$a$k$3$H$K$J$k!#(B
$B2q $B2q $B$H$7$F$b!"$b$A$m$s=>6H0w?t$O5a$^$k$,!"=>6H0w?tA`:n$NCf?H$O(B
$B?^=q4[$NB_=P4IM}%7%9%F%`$N$=$NB>$N%7%J%j%*$O!":#2s$N%l%]!<%H$G$O>JN,$9$k!#(B
$B$9$G$K!VMxMQ $B:o=|$9$kB"=q(B.$BK\(B.$BB"=q(B->size =
1
$B$J$I$H$$$&5-=R$r$7$?$,!"$3$l$O0J2<$N$h$&$J%/%i%9?^$N0lIt$r;W$$Ib$+$Y$F$3$=5-(B
$B=R$G$-$k!#%/%i%9!VK\!W$H%/%i%9!VB"=q!W$N4V$r!"K\$N%$%s%9%?%s%9$H$=$NK\$NB"=q(B
$B$N%$%s%9%?%s%9$r4X78IU$1$k4XO"$,7k$s$G$$$k!#K\%/%i%9$K$"$kB"=q(B()
23 $BA`:n$O!"$=$NK\$NB"=q$N%$%s%9%?%s%9=89g$rJV$9!#B"=q%/%i%9$K$"$kK\(B()$BA`:n$O!"$=(B
$B$NB"=q$NB0$9$kK\!J$N%$%s%9%?%s%9!K$rJV$9!#(B
$B?^=q4[$NB_=P4IM}%7%9%F%`$G$O!"%H%C%W%l%Y%k$N(BUseCase$B$+$i$O!"!V;J=q!W$H!VMxMQ(B
$B $B;J=q%/%i%9$O;J=q$N%$%s%9%?%s%9$r@8@.!&4IM}$9$kLr3d$H$9$k!#(B
$B?^=q4[%/%i%9$O!"?^=q4[$N%$%s%9%?%s%9$r@8@.$9$kLr3d$H$9$k!#(B
26
$BK\%/%i%9$O!"K\$N%$%s%9%?%s%9$r@8@.!&4IM}$7!"8!:w$9$kLr3d$H$9$k!#(B
$BB_=P%/%i%9$O!"B_=P%$%s%9%?%s%9$N@8@.!&4IM}$r9T$&!#(B
$BJ,Ln%/%i%9$O!"J,Ln%$%s%9%?%s%9$N@8@.!&4IM}!&8!:w$r9T$&!#(B
$B%b%G%j%s%0$K47$l$F$/$k$H!"D>@\%/%i%9?^$r=q$-;O$a$k$3$H$,$G$-$k$,!"IaDL$O%7%J(B
$B%j%*Kh$K=g=x?^$r:n$C$F$$$C$F!"%*%V%8%'%/%H4V$G$I$N$h$&$J%a%C%;!<%8$r$I$N$h$&(B
$B$J=gHV$G$d$j$H$j$9$l$PNI$$$+$r7h$a$F$$$/!#(B
$B0J2<$K!"B_=P$N=g=x?^$r<($9!#(B
$B=g=x?^$O%*%V%8%'%/%H4V$K$I$N$h$&$J=gHV$G%a%C%;!<%8$,N.$l$k$+$r5-=R$9$k$?$a$N(B
$B%@%$%"%0%i%`$G$"$k!#;M3Q$NH"$NCf$K%/%i%9L>$,5-=R$5$l$F$$$k$,!"2<@~$rIU$1$F!"(B
$B$=$N%/%i%9$N$"$k%$%s%9%?%s%9$G$"$k$3$H$r<($9!#%a%C%;!<%8$O2#J}8~$NLp0u$G<($7(B
$B!"%a%C%;!<%8L>(B($B%Q%i%a!<%?(B)$B!'JVCM$H$$$&7A<0$r$H$k!#;~4V$O>e$+$i2<$KN.$l!"%*%V(B
$B%8%'%/%H$N2<$N=DK@$,$=$N;~E@$N%*%V%8%'%/%H$rI=$9!#GH@~$NLp0u$O!"@)8f$NN.$l$r(B
$B<($9!#(B
$BNc$($P!"0lHV2<$N!VB_=P!W$+$i!V;J=q!W$X8~$+$&GH@~$NLp0u$O!"!V@8@.(B($BMxMQ $B$^$?!"!VMxMQ $B$B$3$3$G$O!"!VB_=P!W%*%V%8%'%/%H$,<+J,<+?H$K!VK\ $B$3$3$G$O!"$=$N$h$&$J%U%#!<%I%P%C%/$,2?2s$+$"$C$?$b$N$H%*$F!"%/%i%9?^$N$?$?$-(B
$BBf$r<($=$&!#(B
$B$^$:!"B_=P4IM}$NBP>]$H$J$kK\ $B$^$?!"?^=q4[$OK\$r;}$A!"K\$OK\ $BB_=P$N>pJs$O!"MxMQ $BMxMQ $B?^=q4[%/%i%9$OMxMQ $B:#$^$G$O!"%I%a%$%s$N@EE*$J9=B$$rCf?4$K9M$($F$$$?$N$G!"$3$N$"$?$j$G%I%a%$%s%*(B
$B%V%8%'%/%H$N?6$kIq$$$r9M$($k$3$H$K$h$j!"!V;W9M!W$NJP$j$r@'@5$7$F$*$3$&$H$$$&(B
$BLu$G$"$k!#$3$&$7$?J}$,!"%I%a%$%s%b%G%k$N8m$j$rAa$/H/8+$G$-$k$3$H$,B?$$!#(B
$B%I%a%$%s%*%V%8%'%/%H$N?6$kIq$$$O!"3F%*%V%8%'%/%H$N>uBVJQ2=$r5-=R$9$k$3$H$GJ,(B
$B@O$G$-$k!#$3$N$?$a$NF;6q$,!V>uBVA+0\?^!W$G$"$k!#(B
$B$^$:!"K\ $BL$B_=P>uBV$GB_=P%$%Y%s%H$,$/$k$H!">uBV$OB_=PCf$KA+0\$9$k!#B_=PCf>uBV$GJV5Q%$(B
$B%Y%s%H$,$/$k$H!">uBV$OL$B_=P$KA+0\$9$k!#(B
$B>uBVA+0\$rI=$9Lp0u$KIU$$$F$$$kJ8;zNs$O!"0J2<$N$h$&$J7A<0$G$"$k!#(B
$B%$%Y%s%HL>(B $B0z?t%j%9%H(B
41 $B%d(B[$B%f(B $B%,!<%I>r7o(B $B%d(B]$B%f%d(B/$B%f(B $BF0:n<0(B
$B%$%Y%s%HL>$O>uBV$rA+0\$5$;$k%$%Y%s%H$r<($7!"%,!<%I>r7o$O!V$"$k>r7o$,K~$?$5$l(B
$B$?$H$-!WA+0\$,5/$3$k$3$H$r<($9!#F0:n<0$O!"A+0\$N7k2L5/$3$k0l$D$^$?$OJ#?t$NF0(B
$B:n$rI=$9!#F0:n$O!":G=*E*$K$OA`:n$9$J$o$A%W%m%0%i%`$H$J$k!#(B
$B7k6I!"$3$N>uBVA+0\?^$G$O!"!V $B$3$N$h$&$J:n6H$r%/%i%9?^>e$G9M$($k$H$$$&$N$,!"%*%V%8%'%/%H;X8~J,@O$d@_7W$K$D(B
$B$$$F5-=R$7$?BgJ}$NK\$N $B2hLLCf1{2 $B%W%m%0%i%`K\BN$O!"(B| a$BB_=P(B |$B$N2<$K5-=R$7$F$"$j!"0J2<$N$h$&$K$J$C$F$$$k!#(B
self $B self $B $B$H$$$&7A<0$H$J$C$F$$$F!"Nc$($P(B1$B9TL\$N(B
self $B $B$H$$$&9T$,$"$k$,!"$3$l$O!"$3$N%a%=%C%I$,!V(Ba$BB_=P!W$H$$$&0l;~JQ?t$NFbMF$rJV$9(B
$B$3$H$r<($7$F$$$k!#(B
$B$5$F!"$3$N%W%m%0%i%`$r $B?^=q4[(B class>>example4$B!!(B"$B?^=q4[%/%i%9$N(Bexample4$B$H$$$&%a%=%C%I$G$"$k(B"
"$BMxMQ | a$B?^=q4[(B a$B;J=q%j%9%H(B a$BJ,N`;J=q%j%9%H(B
a$BMxMQ a$B?^=q4[(B := $B?^=q4[(B new: $B%fIpB"Ln%f(B
$B:GBgB_=P?t(B: 3 $B:GBgB_=PF|?t(B: 7.$B!!(B"$B?^=q4[%$%s(B $B%9%?%s%9$N@8@.(B"
a$B?^=q4[(B $B;J=qEPO?(B: $B%fNS70%f(B;
$B;J=qEPO?(B: $B%fB@ED70%f(B.$B!!(B"$B;J=q%*%V%8%'%/%H$NEPO?(B"
a$B;J=q%j%9%H(B := a$B?^=q4[(B $B;J=q%j%9%H(B.
a$B?^=q4[(B $BB"=qEPO?(B: ($BK\(B new: $B%f?M@8AjCL a$BB"=q%j%9%H(B do: [:e | a$B?^=q4[(B
$BK\ $BK\ $BK\ a$B?^=q4[(B $BMxMQ "$BBjL>$dL>A0=g$G%=!<%H$7$F!"JL$N0l;~JQ?t$KBeF~$9$k$3$H$G!"%F%9%H;~$KK\ a$BJ,N`K\ a$BJ,N`;J=q%j%9%H(B := SortedCollection
withAll: a$B;J=q%j%9%H(B sortBlock: [:x :y | x $BL>A0(B <= y $BL>A0(B].
a$BJ,N`MxMQ "4$B:}$NK\ error: $B%fMxMQ $B$5$F!"MxMQ self $B $B$H$$$&9T$rA^F~$9$k!#$3$l$O!"$3$NCOE@$KMh$?$i%W%m%0%i%`$N $B?^=q4[$N:GBgB_=P?t$,K\Ev$K(B3$B$+$I$&$+$O!":82<$N%5%V%&%#%s%I%&$G!"%$%s%9%?%s%9(B
$BJQ?t$N!V(Bi$B?^=q4[!W$rA*Br$7%]%C%W%"%C%W%a%K%e!<$+$i(Binspect$B$rA*Br$9$k$H?^(B20$B$N$h(B
$B$&$J%$%s%9%Z%/%?!Smalltalk$B$G$O!"%$%s%9%Z%/%?!pJs$r8+$?$j!">l9g$K$h$C$F$OJQ?t(B
$B$NCM$rJQ$($?$j$7$F;n9T:x8m$9$k$3$H$,$G$-$k!# Smalltalk$B$r;H$C$FJ,@O!&@_7W$7$?J}$,!"%$%s%?%U%'!<%9$,$h$jL@3N$K$J$j!"%V%i%&%6(B
$B!<$r;H%A$F3F $B
50 $B!#(BSmalltalk$B$N$h$&$JF0E*8@8l$O!"J,@O!&(B$B@_7W9)Dx$N$h$&$K!"%W%m%0%i%`A4It$r40@.$5(B
$B$;$:$K%"%$%G%"$r;n$7!"F0$+$9$H$$$C$?MQES$K8~$$$F$$$k$N$G$"$k!#(B
$B?^=q4[$NB_=P4IM}%7%9%F%`$NJ,@O%b%G%k$N>l9g$O!"2^$N$h$&$J%/%i%9$HLs(B1000$B9T$N(B
$B%W%m%0%i%`$r=q$/$3$H$GJ,@O%b%G%k$N $B$^$?!"6aG/(BSmalltalk$B$N%7%'%"$O=y!9$K8~>e$7$F$$$F!"3F(BOS$B>e$N%U%j!<$N(BSmalltalk$B$b(B
$BA}$($F$-$?!#$D$$:G6a$G$O!"%U%j!<$N(BSmalltalk$B$G$"$k(BSqueak
51 $B$,%7%c!<%W$N%6%&%k%9>e$K0\?"$5$l!"(BMacintosh$B!&(BWindows$B!&(BLinux$B!&(BWindows
CE$B!&(BBeOS$B$J$I$G$b!"3F $B$J$*!"I.
$B%*%V%8%'%/%H;X8~J,@O(B
$BMQ8l=8$N:n@.(B
UseCase$B$N:n@.$*$h$S@)Ls$NH/8+(B
$B?^(B 1. UseCase$B$N3,AX(B
$B?^(B 2. $B?^=q4[B_=P4IM}%7%9%F%`$N(BUseCase$BL\
$B?^(B 3. $B?^=q4[B_=P4IM}%H%C%W%l%Y%k$N(BUseCase
$B?^(B 4. $BB_=P$N(BUseCase
$BB_=P$N%7%J%j%*(B
$BJV5Q$N%7%J%j%*(B
$B?^(B 5.$B2q
$B?^=q4[B_=P4IM}$N@)Ls>r7o(B
$B?^(B 6.$BK\$HB"=q$N%/%i%9?^$N0lIt(B($BC!$-Bf(B)
$B%I%a%$%s%*%V%8%'%/%H$NH/8+(B
$B%*%V%8%'%/%H$NL>A0!&@UG$!&Lr3d$r8+$D$1$k(B
$B?^=q4[B_=P4IM}$N%I%a%$%s%*%V%8%'%/%H$N@UG$$HLr3d(B
$B%*%V%8%'%/%H$rJ,N`$7!"4XO"!&Jq4^4X78$r8+$D$1$k(B
$B?^(B 7.$BB_=P$N=g=x?^(B
$B?^(B 8.$BJV5Q$N=g=x?^(B
$B?^(B 9.$B?^=q4[B_=P4IM}$N%/%i%9?^(B($B$?$?$-Bf(B)
$B?^(B 10.$BK\
$B?^(B 11.$BMxMQ
$BMW5a;EMM5-=R(B
$B?^(B 12.Smalltalk$B$N%V%i%&%6(B
$B?^(B 13.$BMxMQ
$B?^(B 15.$BMxMQ
$B?^(B 16.$B%G%P%C%0MQ$N%H%l!<%9%&%#%s%I%&(B
$B?^(B 17.$B%$%s%9%?%s%9!&%*%V%8%'%/%H$H%Q%i%a!<%?$NI=<((B
$B?^(B 18.self halt$B$G;_$^$C$?$H$3$m(B
$B?^(B 19.$B!V
$B?^(B 20.$B?^=q4[%*%V%8%'%/%H$N%$%s%9%Z%/%?!
$B?^(B 21.$B!V(Bi$BMxMQ
$B?^(B 22.$BMxMQ
$B%I%a%$%s%b%G%k$N8!>Z(B
$B?^(B 23.$B:n@.$7$?%/%i%9$H9T?t(B(LOC)
$B=*$o$j$K(B
->$B$O=89g$NA`:n$r<($95-9f$G$"$j!"(Bsize$B$O4{Dj5A$NA`:n$G!"=89g$NMWAG?t$rJV$9!#(B
$B=>$C$F!"(BSet($BMxMQ