Transcript
Page 1: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,.

!"!#$%%&'$%!()*&+!"!,!-.!(./0.01!-.!2334

!"#$"%&%'(#)#'

*&%++,%+-

&56107!'8.91!:;<.=!'.>?

@-86108AB7!@-86!+8C!@-86108AB!DE+E

!"#$%&'(&')*$#*)(&*%$(+),$&*"--"#.&$'$/)0(1

+/)0/"&1-/),%)*#01%)2)(13-"145*16')(/),%)-#-%,1(%()#)0%"-/)(/)/3-%)#4"%)31')7'1&#)(/),5*"#8)9#(%)*#01%)-#-%,)#)0%"*1%,)(/4/"7)*1-%")/:0"/3%&/'-/)/,)'#&4"/)(/, )%5-#";)'#&4"/)(/),%)/(1-#"1%,)/)1'*,51")/3-%)&13&%),1*/'*1%;)%<%(1/'(#;)31)/3)*#01%),1-/"%,;),%)&/'*16')=*#01%),1-/"%,>8

+/)%5-#"1?%),%)&#(1@1*%*16')2)-"%(5**16')(/),%)#4"%)31')7'1&#)(/),5*"#)31/&0"/)A5/)3/)B%$%)*#'3-%")/'),%)#4"%)"/35,-%'-/)(/),%)&#(1@1*%*16')/,)'#&4"/)(/),%)#4"%)#"1$1'%"1%;)/,)%5-#")(/),%)#4"%)#"1$1'%"1%)2)/,)'#&4"/)(/),%)/(1-#"1%,8)C%)#4"%)"/35,-%'-/)-%&41D')3/"7),14"/&/'-/)"/0"#(5*1(%;)(13-"1451(%;)*#&5'1*%(%)%,)0E4,1*#)2)-"%'3@#"&%(%)/')-D"&1'#3)31&1,%"/3)%),#3)/:0"/3%(#3)/')/3-%),1*/'*1%8

FG222

Page 2: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,.

F)-#(#3)%A5/,,#3)A5/)3%4/')A5/),%)G/"(%(/"%)"/G#,5*16')(/),%)1'@#"&%*16')'#)#*5""1"7)B%3-%)A5/)3/%&#3)*%0%*/3)(/)"#&0/")5'%3)*5%'-%3)

4%""/"%38

2G222

Page 3: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,.

!"#$%&

H0;B191!IJ10!&BAC!KALM 4

)C601-5>>8;C ,@CN1O5. ,P.61-1B19QA R&B>AC>.!-.B!B8/01 R&5-8.C>8A R+8>.C>8A SD8681!T./ S&90A-.>8<8.C61U S

VW5X!.U!D<ABB6AB?Y F3Z1C>.J61U FF$/[.61U FFP.CUA[.U FF)C6.0NA= FF@C>AJU5BA>8;C F2H1B8<10N8U<1 F2ZBAU.U F2\A08A/B.U!-.!)CU6AC>8A F2PX61-1U F2].0.C>8A F^H0190A<A0!.U!U8<5BA0 F^

]8U6108A!-.B!D<ABB6AB? F^&J106.U!-.B!D<ABB6AB? F_

VW5X!.U!DO5.A?Y F4

H0190A<AC-1!>1C!D<ABB6AB? FR+A!>50`A!-.!AJ0.C-8=A[. FRH0.JA0A0U.!JA0A!5C!Ua1>?!>5B650AB FRb80A0!>;-891 FRb0A/A[1!8C>0.<.C6AB FR*1!aAL!A0>a8`1U!N5.C6.U FR

@B!>A<8C1!.U!BA091c!<.[10!C1!80!U1B1 FRD8C6Ad8U 23+86.0AB.U 23P.CUA[.U 22H0.>.-.C>8A 2_\A08A/B.U 2e+1U!C1</0.U!-.!>BAU.U!U1Cc!6A</8XCc!`A08A/B.U!9B1/AB.U 24#B1O5.U 2,Z1<.C6A081U ^3PX61-1!-.!@[.<JB1 ^3

].00A<8.C6AU ^F+8/0.0QA!-.!ZBAU.U!L!(0A<.T10?U ^FPfO58CA!\8065AB ^2

^G222

Page 4: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,.

gPAC1U!A!BA!$/0Ah ^^P1-8N8>AC-1!$/[.61U!\8`1U ^_@B!P5C-1 ^_#01TU.0!-.!ZBAU.U ^4b8J1U!-.!#01TU.0!-.!ZBAU.U ^4ZA6.910QAU!-.!ZBAU.!L!PX61-1U ^,DO5.A?!L!.B!%A6;C ^R(1>1!-.!6.>BA-1 ^Si10?UJA>. _2b8J1U!-.!i10?UJA>. _2@`AB5AC-1!Z;-891 _^D.C6.C>8AU!-.!@[.<JB1!JA0A!.`AB5A0c!8<J08<80c!8CUJ.>>81CA0!1!.dJB10A0 __)CUJ.>610 _e]16"K.LU _4

HA0U.0!-.!jP+!/AUA-1!.C!5CA!H8BA _SD<ABB6AB?!>1C!@U68B1 e3*1</0.'.ZBAU.kkC1</0.'.PX61-1 e3

)<J106A-10!-.!i8?8J.-8A eei8?8J.-8A eePX61-1U!-.!ZBAU.!`UE!PX61-1U!-.!)CU6AC>8A e,HBAC68BBA!JA0A!C5.`1U!<X61-1U 42&0>a8`1U!-.!.[.<JB1 4^H0."-.J50A-10 4_'.J50A-10 44'.J50A-10!F33l!.C!D<ABB6AB? 4RZ1C`.C>8;C!-.!C1</0.U ,^Z1B.>>81C.U R_Z1B.>>81C.U!m!D.6 Re\AB10!-.!0.610C1!J10!-.N.>61 R4Z1B.>>81C.U!m!<.CUA[.!nA--7 R,@dJB10A-10 RSZ1B.>>81C.U!m!$0-.0.-Z1BB.>681C SR)C8>8AB8=A>8;C!-.!1/[.61U FF3P.UUA9.bABBL FF2b8<.H01N8B.0#01TU.0 FFe

P1610!-.!i10?NB1T FF,i10?NB1T FF,b.U6!'08`.C!'.`.B1J<.C6 FF,DoC86 FFR%.NA>6108C9!#01TU.0 FFS%.NA>6108C9 FFS+1U!<X61-1U!-.!6.U68C9!>1<8.C=AC!J10!n6.U6 F23Z1CU.[17!H.CUA0!J08<.01!.C!BA!8C6.0NA=!Jp/B8>A F2F@U605>650A!-.!B1U!6.U6 F2FDoC86!b.U6!%5CC.0 F2^Z1B.>>81C.U!m!<.CUA[.!n>1BB.>67 F^3Z1CU.[17!@U!<fU!/A0A61!.U>08/80!>;-891!B8<J81 F^2@dJBA8C8C9!b.<J10A0L!\A08A/B. F^2Z1B.>>81C.U!m!<.CUA[.!nc F^eZ1CU.[17!H01/A0!BAU!U865A>81C.U!BQ<86. F^S

_G222

Page 5: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,.

P.CUA[.!naAB6 F_eZ1CU.[1!m!@B!-.J50A-10!C1U!/08C-A!<fU!8CN10<A>8;C!A!BA!a10A!-.!8<JB.<.C6A0 F_4Z1B.>>81C.U!m!<.CUA[.!n8C>B5-.U7 F_,D.C-.0U Fe3+1U!6.U6U!U1Cc!6A</8XCc!-1>5<.C6A>8;C FeSZ1B.>>81C.U!m!<.CUA[.!nACLDA68UNL7 F4FZ1<J1U.-!P.6a1- F42+1U!6.U6U!A5<.C6AC!BA!>1CN8AC=A F4RZ1B.>>81C.U!m!<.CUA[.!nU.B.>676a.CZ1BB.>67 F,3Z1B.>>81C.U!m!<.CUA[.!nU.B.>67 F,FZ1B.>>81C.U!m!<.CUA[.!nA678N&/U.C6H567 F,2Z1B.>>81C.U!m!'8>681CA0L F,^b0ACU>08J6 F,^HA60;C!-.!'8U.q1!m!&-AJ6.0 FRRPX61-1U!J08`A-1U FS3#01TU.0!r.0f0O58>1 FS4oUA0!.B!N5.C6.!-.!5C!<X61-1!JA0A!>0.A0!1601!<X61-1!JA0.>8-1 FSSP.CUA[.!nU5/>BAUU%.UJ1CU8/8B86L 23F

+A!LAJA 23^

(56501 2F2b0A86U 2F2bT.A? 2F24_!/86U 2F2$J.CZ01O5.6 2F2

Z1<1!>1C68C5A0 2F_+8/01U 2F_HAJ.0U!1!A06Q>5B1U 2F_:05J1U!-.!oU5A081U 2Fe

Z1C>B5U8;C 2F4

#8/B8190ANQA 2F,

].00A<8.C6AU!5UA-AU!.C!.B!B8/01 22F

eG222

Page 6: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"6,#$#)H0#")F,%')I%2J

'()*+,+-./+(-0*1"-2134

[email protected]

4G222

Page 7: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. K'-"#(5**16'

5"6(+#7%%$)"

D<ABB6AB?!.U!<5>a1!<fU!O5.!5C!B.C95A[.!-.!>1<J56A>8;CE

D<ABB6AB?!.U!5C1!-.!B1U!J01-5>61U!-.!5C!J01>.U1!-.!8C`.U689A>8;C!L!-.UA001BB1c!B8-.0A-1!J10!&BAC!KALc!O5.!LA!BB.`A!<fU!-.!^3!Aq1U!60A6AC-1!-.!8C`.C6A0!BA!>1<J56A-10A!J.0U1CABE!!D<ABB6AB?c!A-.<fU!-.!U.0!5C!B.C95A[.!-.!>1<J56A>8;C!<5L!J1-.01U1!L!`.0Uf68Bc!.U!5CA!8C6.0J0.6A>8;C!-.!>1<1!-./8.0AC!568B8=A0U.!BAU!>1<J56A-10AU7!!+AU!>1<J56A-10AU!-./.0QAC!U.0!a.00A<8.C6AU!O5.!U80`AC!JA0A!A<JB8N8>A0!.B!.UJQ0865!>0.A68`1!-.!BAU!J.0U1CAUE

D<ABB6AB?!C1!.U!BA!>5B<8CA>8;C!-.!.UA!`8U8;Cc!.U!U;B1!5C!JAU1E!D8!D<ABB6AB?!68.C.!5C!1/[.68`1!.C!U8!<8U<1c!.U.!.U!.B!-.!U.0`80!-.!a.00A<8.C6A!JA0A!>0.A0!.B!J01-5>61!O5.!`5.B`A!1/U1B.61!AB!<8U<1!D<ABB6AB?E

+A<.C6A/B.<.C6.!BAU!8-.AU!-.60fU!-.!D<ABB6AB?!C1!U1C!BAU!<fU!.d6.C-8-AU!.C!.B!<5C-1!-.!BA!8CN10<f68>Ac!L!A5CO5.!<5>aAU!8CC1`A>81C.U!-.B!J01L.>61!BB.9A01C!A!C5.U601U!-QAUc!.U6AU!BB.9A01C!-.UJ1[A-AU!-.!B1!N5C-A<.C6AB!L!U;B1!U.!>1J8;!BA!>AU>A0A!-.!BAU!8-.AUE

@U1!aA>.!O5.!BA!J08<.0A!.dJ.08.C>8A!>1C!D<ABB6AB?c!JA0A!5CA!J.0U1CA!A>1U65</0A-A!A!5UA0!>1<J56A-10AU!1!8C>B5U1!A!J0190A<A0BAUc!U.A!-.U>1C>.06AC6.!J10!B1!-8U68C61!O5.!0.U5B6AE

'.!61-AU!N10<AUc!.B!.UN5.0=1!-.!.C60A0!.C!5C!f0.A!-.U>1C1>8-1!68.C.!U5U!0.>1<J.CUAUE!P5>a1U!U1<1U!B1U!O5.!U.C68<1U!O5.!D<ABB6AB?!C1U!-.`1B`8;!BA!NAU>8CA>8;C!O5.!C1U!J01-5[1!5UA0!5CA!>1<J56A-10A!J10!J08<.0A!`.=E!*1!.U!0A01!`.0!>1<1!9.C6.!O5.!>1<8.C=A!A!J0190A<A0c!>1C!D<ABB6AB?c!>A</8A!U5!>1C>.J>8;C!-.!B1U!J10O5XU!-.!BAU!>1<J56A-10AUE!!H0f>68>A<.C6.!61-1U!B1U!J0190A<A-10.U!-.!D<ABB6AB?!O5.!L1!>1C1=>1!568B8=AC!.B!A</8.C6.c!C1!U;B1!JA0A!60A/A[A0!L!J01-5>80!U1N6TA0.c!U8C1!O5.!6A</8XC!B1!568B8=AC!>1<1!5CA!a.00A<8.C6A!-.!8C`.U689A>8;CE!@U!<5L!>1<pC!.C>1C60A0U.!>1C!J01L.>61U!<5L!s0A01Ut!.!8CC1`A-10.U!-.UA001BBA-1U!>1C!D<ABB6AB?c!J10O5.![5U6A<.C6.c!D<ABB6AB?!U80`.!>1<1!A<JB8N8>A-10!-.B!.UJQ0865!>0.A68`1!O5.!61-1U!BB.`A<1U!-.C601E

!"#$%&'

@U6.!B8/01!J0.6.C-.!<1U60A0!A!J.0U1CAU!O5.!LA!U.JAC!J0190A<A>8;Cc!>1<1!.B!a.>a1!-.!`8`80!.C!5C!A</8.C6.!-.!1/[.61Uc!8<JA>6A!.C!.B!>8>B1!-.!-.UA001BB1!-.!U1N6TA0.E

+A!J0190A<A>8;C!>1C!D<ABB6AB?!.U!<5L!-8N.0.C6.!AB!>BfU8>1!>8>B1!.-8>8;CG>1<J8BA>8;CG.[.>5>8;C!O5.!-1<8CA!A!BA!<AL10QA!-.!BAU!a.00A<8.C6AU!5UA-AU!a1L!.C!-QAE!Z1C!D<ABB6AB?!U.!-A!5C!J01>.U1!<5>a1!<fU!8C6.0A>68`1E!*1!U.!J.CAB8=A!BA!8C`.U689A>8;C!C8!U.!>AU689A!<fU!N5.06.<.C6.!BAU!J08<.0AU!-.>8U81C.UE!&B!<8C8<8=A0!.B!>1U61!-.!B1U!>A</81Uc!U.!J5.-.C!J1UJ1C.0!BAU!-.>8U81C.U!<fU!8<J106AC6.U!-.B!-8U.q1!aAU6A!.B!<1<.C61!O5.!U.JA<1U!B1!U5N8>8.C6.E!D.!J01<5.`.!5C!<X61-1!-.!-.UA001BB1!-1C-.!.B!U1N6TA0.!>A</8A!>1CN10<.!BAU!J.0U1CAU!O5.!B1!-.UA001BBAC!B1!aA>.CE

,G222

Page 8: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. K'-"#(5**16'

@U6.!B8/01!J0.6.C-.!<1U60A0!AB91!-.!.U.!J01>.U1u!JA0A!.U1!-.UA001BBA0.<1U!AB95CAU!AJB8>A>81C.U!-.!.[.<JB1!JAU1!A!JAU1!.!80.<1U!8C601-5>8.C-1!>1C>.J61Uc!-.U>08J>81C.Uc!.6>E!>1CN10<.!B1!C.>.U86.<1U!JA0A!.B!-.UA001BB1!-.!.U1U!.[.<JB1UE!!+1U!.[.<JB1U!U1C!5CA!.U>5UA!JA0A!<1U60A0!.B!5U1!-.B!A</8.C6.!-.!D<ABB6AB?c!C1!U1C!1/[.68`1U!.C!U8!<8U<1U!L!C1!U.!`AC!A!-.UA001BBA0!AB!F33lE

(')$*$+$,-.

&5CO5.!61-1U!B1U!J0190A<A-10.U!D<ABB6AB?!>1<JA068<1U!>8.06AU!>1U65</0.Uc!J0190A<A0!>1C!D<ABB6AB?!.U!5CA!6A0.A!<5L!J.0U1CAB!L!>A-A!J0190A<A-10!>1CN8950A!L!5UA!.B!A</8.C6.!-.!N10<A!-8N.0.C6.E!*1!.U!-.!.d60AqA0!O5.!BA!J0190A<A>8;C!U.!>1C`8.06A!.C!5CA!6A0.A!6AC!J.0U1CAB!>5AC-1!U.!-.UA001BBA!.C!5C!.C610C1!CA>8-1!>1<1!BA!>1C>.J>8;C!-.!BA!>1<J56A-10A!J.0U1CABE

@C!.U6.!B8/01!B.U!`1L!A!<1U60A0!>1<1!L1!5U1!.B!A</8.C6.E!@U1!C1!O58.0.!-.>80!O5.!L1!>0.A!O5.!.U6A!.U!BA!pC8>A!1!BA!<.[10!N10<AE!@B!<X61-1!O5.!B.U!<5.U601!.U!U;B1!.B!O5.!A!<8!<fU!<.!95U6A!L!C1!J0.6.C-1!8<J1C.0!<8!N10<A!-.!60A/A[1!C8!CA-A!O5.!U.!B.!JA0.=>AE!+1!O5.!U8!-.U.1!.U!O5.!>A-A!5C1!-.!5U6.-.U!5U.!AB!D<ABB6AB?!-.!BA!N10<A!O5.!<fU!B.!95U6.c!L!O5.!>1<JA06AC!>1C!BA!>1<5C8-A-!BAU!<.[10AU!O5.!aA9AC!.C!U5U!A</8.C6.UE

H01/A/B.<.C6.!0.>1C1>.0fC!AB95CAU!>1UAU!-.!BAUc!Aa10A!-.C1<8CA-AUc!<.61-1B19QAU!B89.0AUu!L!.U1!C1!-./.0QA!U.0!-.!.d60AqA0!LA!O5.!BA!J08C>8JAB!<.61-1B19QA!f98Bc!O5.!.U!BA!@d60.<<.!H0190A<<8C9!IH0190A<A>8;C!@d60.<AMc!U.!N10<AB8=;!.C!5C!J01L.>61!-.UA001BBA-1!>1C!D<ABB6AB?!-1C-.!K.C6!#.>?!.0A!JA06.E

/+0."0'1*'+1+234$

@U6.!B8/01!C1!.U!5CA!95QA!>1<JB.6A!-.!D<ABB6AB?c!U;B1!J0.6.C-.!<1U60A0!BA!N8B1U1NQA!-.!5U1!-.B!A</8.C6.!L!U.0!5C!J5C61!-.!.C60A-A!A!J.0U1CAU!O5.!-.U..C!AJ0.C-.0!D<ABB6AB?E

+A!<AL10QA!-.!BAU!0.UJ5.U6AUc!A!BAU!J0.95C6AU!O5.!C1U!aA>.<1U!>5AC-1!J0190A<A<1U!.C!D<ABB6AB?c!.U6fC!-.C601!-.B!<8U<1!A</8.C6.E!!@U6.!B8/01!J0.6.C-.!.CU.qA0!A!/5U>A0!BAU!0.UJ5.U6AU!.C!.B!A</8.C6.!.C!B59A0!-.!>1C6.U6A0BAU!-80.>6A<.C6.E

@C!.B!>AJQ65B1!-.!/8/B8190ANQA!8C>B5L1!5CA!B8U6A!-.!B8/01U!-.!D<ABB6AB?!O5.!J5.-.C!U.0!-.!>1<JB.<.C61!A!.U6.!B8/01E!!P5>a1U!-.!.U1U!B8/01U!J5.-.C!U.0!/A[A-1U!-.!N10<A!90A6586A!-.!)C6.0C.6E

/&*2'"02.

@U6.!B8/01!C1!J0.6.C-.!.CU.qA0!J0190A<A>8;C!U8C1!O5.!U.!AU5<.!O5.!U.!UA/.!J0190A<A0!L!O5.c!8C>B5U1c!U.!.U6f!NA<8B8A08=A-1!>1C!B1U!>1C>.J61U!-.!BA!J0190A<A>8;C!108.C6A-A!A!1/[.61UE!

@U6.!B8/01!.U!8-.AB!I<.[10!-8>a17!J0.6.C-.!U.0B1M!JA0A!J0190A<A-10.U!O5.!.U6XC!/5U>AC-1!C5.`AU!L!<.[10.U!N10<AU!-.!J01-5>80!U1N6TA0.!L!O5.!>0.AC!O5.!D<ABB6AB?!J5.-.!U.0!5CA!1J>8;CE!!)C>B5U1c!A5CO5.!C1!U.!6.C9A!1J1065C8-A-!-.!5UA0!D<ABB6AB?!.C!.B!-QA!A!-QAc!AJ0.C-.0!D<ABB6AB?!L!.B!JA0A-89<A!-.!1/[.61U!6AB!L!>5AB!N5.!>0.A-1!B1U!>1C`.0680f!.C!<.[10.U!J0190A<A-10.UE

RG222

Page 9: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. K'-"#(5**16'

520'"02.

H0.6.C-8<1U!U.0!N8.B.U!AB!8-.AB!-.!>1<JB.6A!B8/.06A-!O5.!0898;!.B!-.UA001BB1!-.B!J01L.>61!D<ABB6AB?!L!.U>198<1U!5CA!B8>.C>8A!O5.!J.0<86.!BA!B8/0.!>80>5BA>8;C!-.!B1U!>1C6.C8-1U!-.!.U6.!B8/01E

!"#$%&'(&')*$#*)(&*%$(+),$&*"--"#.&$'$/)0(1

+/)0/"&1-/),%)*#01%)2)(13-"145*16')(/),%)-#-%,1(%()#)0%"-/)(/)/3-%)#4"%)31')7'1&#)(/),5*"#8)9#(%)*#01%)-#-%,)#)0%"*1%,)(/4/"7)*1-%")/:0"/3%&/'-/)/,)'#&4"/)(/,)%5-#"; )'#&4"/)(/),%)/(1-#"1%,)/)1'*,51")/3-%)&13&%),1*/'*1%;)%<%(1/'(#;)31)/3)*#01%),1-/"%,;),%)&/'*16')=*#01%),1-/"%,>8

+/)%5-#"1?%),%)&#(1@1*%*16')2)-"%(5**16')(/),%)#4"%)31')7'1&#)(/),5*"#)31/&0"/)A5/)3/)B%$%)*#'3-%")/'),%)#4"%)"/35,-%'-/)(/),%)&#(1@1*%*16')/,)'#&4"/)(/),%)#4"%)#"1$1'%"1%; )/,)%5-#")(/),%)#4"%)#"1$1'%"1%)2)/,)'#&4"/)(/),%)/(1-#"1%,8)C%)#4"%)"/35,-%'-/)-%&41D')3/"7),14"/&/'-/)"/0"#(5*1(%;)(13-"1451(%;)*#&5'1*%(%)%,)0E4,1*#)2)-"%'3@#"&%(%)/')-D"&1'#3)31&1,%"/3)%),#3)/:0"/3%(#3)/')/3-%),1*/'*1%8

62)2$17'3

@B!.CN1O5.!-.!.U6.!B8/01!aA>.!O5.!U.A!J081086A081!0.-5>80!AB!<QC8<1!.B!68.<J1!-.!.UJ.0A!AC6.U!-.!<.6.0U.!.C!.B!A</8.C6.E!!+A!.dJ.08.C>8A!-.!J08<.0A!<AC1!.C!.B!A</8.C6.!.U!N5C-A<.C6AB!JA0A!AJ0.C-.0!A!5UA0!D<ABB6AB?E

HA0A!A>.B.0A0!.B!J01>.U1!8C8>8AB!a8>.!5CA!8<A9.C!-.!DO5.A?!J0.">1CN8950A-A!>1C!BAU!a.00A<8.C6AU!<fU!aA/865AB.U!A!BA!a10A!-.!J0190A<A0E!!@C!5C1!-.!B1U!>AJQ65B1U!N8CAB.U!U.!.dJB8>A!.C!-.6ABB.!O5.!>1UAU!U.!8CU6ABA01C!L!>A</8A01C!-.!5C!DO5.A?!v`809.CvE

H5.-.C!.C>1C60A0!BA!8<A9.Cc!>1<1!AUQ!6A</8XC!160AU!>1UAU!0.BA>81CA-AU!>1C!.U6.!B8/01c!.C!.B!T8?87

!""#$%%&'())"()*+,-.&/)"(0+,-'

/,4.*'0282'")$9

'8U>5BJ.C!<8!NAB6A!-.!10898CAB8-A-c!J.01!6.C91!O5.!A90A-.>.0!.UJ.>8AB<.C6.!A!<8!Cp>B.1!NA<8B8A0!J10!.B!U1J106.!L!>1<J0.CU8;C!O5.!<.!aAC!/08C-A-1E!P8B!90A>8AU!A!<8!>1<JAq.0A!-.!`8A[.!%AO5.B!L!A!<8U!a8[1U!*8>1BfU!L!*Aa5.Bu!.BB1U!U1C!B1U!O5.!0.AB<.C6.!aAC!a.>a1!UA>08N8>81U!JA0A!O5.!.U6.!B8/01!BB.95.!A!/5.C!6X0<8C1E

SG222

Page 10: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. LM5D)/3)+&%,,-%,.N

897:-&;-<=1**61*>?

@U!<5L!-8NQ>8B!.dJB8>A0c!A!J.0U1CAU!O5.!C1!B1!>1C1=>ACc!O5.!.U!D<ABB6AB?!L!J10O5.!.U!6AC!-8N.0.C6.!A!160AU!a.00A<8.C6AU!<fU!J1J5BA0.UE

@B!1089.C!-.!.U.!-.U".C6.C-8<8.C61!`8.C.!A!0A=;C!-.!O5.!.B!J01L.>61!D<ABB6AB?!.U65`1!"!L!U895.!.U6AC-1!"!0.98-1!J10!5CA!>1C>.J>8;C!-8N.0.C6.!-.!>1<1!-./8.0AC!5UA0U.!BAU!>1<J56A-10AU7

C%3)*#&05-%(#"%3)(/4/')3/")B/""%&1/'-%3)A5/)31"G%')*#&#)%&0,1@1*%(#"/3)(/,)/30O"1-5)*"/%-1G#)(/),%3)0/"3#'%38

@U1!8<JB8>Ac!.C60.!160AU!>1UAUc!O5.7

! b1-1!.B!U8U6.<A!68.C.!O5.!U.0!.C6.C-8/B.c!L!J10!.C-.!<1-8N8>A/B.c!J10!5CA!U1BA!J.0U1CAE

! @B!U8U6.<A!68.C.!O5.!.U6A0!>1CU6058-1!>1C!5C!<QC8<1![5.91!-.!JA06.U!8C6.0>A</8A/B.UE!!ZA-A!JA06.!J5.-.!U.0!>A</8A-A!U8C!O5.!.B!0.U61!-.B!U8U6.<A!U.!<1-8N8O5.E

! b1-1!.B!U8U6.<A!68.C.!O5.!.U6A0!>1CU6058-1!/AUA-1!.C!5CA!<.6fN10A!O5.!J5.-A!U.0!AJB8>A-A!.C!61-AU!BAU!JA06.UE

! ZA-A!>1<J1C.C6.!-.B!U8U6.<A!68.C.!O5.!J1-.0!U.0!8CUJ.>>81CA-1!L!>A</8A-1E

+&%,,-%,.)/3)5')%&41/'-/)(/)#4P/-#38)C#3)#4P/-#3)1'-/"%*-E%')/'G17'(#3/)&/'3%P/3)/'-"/)318

D<ABB6AB?!8C>B5L.!5C!B.C95A[.!-.!J0190A<A>8;C!L!.U6.!N5.!-.UA001BBA-1!5UAC-1!B1U!J08C>8J81U!O5.!LA!U.!.C5<.0A01CE!!@U61!O58.0.!-.>80c!J10!.[.<JB1c!O5.!.B!B.C95A[.!D<ABB6AB?!J5.-.!U.0!>A</8A-1!"!>1<1!>5ABO58.0!160A!JA06.!"!L!0..<JBA=A-1!J10!1601u!1!O5.!J5.-.C!>1C`8`80!-8N.0.C6.U!B.C95A[.U!-.!J0190A<A>8;C!.C!.B!<8U<1!A</8.C6.Uc!.6>E

oC!A</8.C6.!-.!D<ABB6AB?!6QJ8>1!6A</8XC!8C>B5L.!<5>aAU!a.00A<8.C6AU!O5.!AU8U6.C!.C!BA!6A0.A!-.!J0190A<A>8;CE!H.01!.U6AUc!>1<1!61-1c!6A</8XC!J5.-.C!U.0!<1-8N8>A-AU!1!0..<JBA=A-AU!J10!160AUE

&!U5!`.=c!5C!A</8.C6.!-.!D<ABB6AB?c!8C>B5L.!1/[.61U!JA0A!>0.A0!8C6.0NA>.U!-.!5U5A081U!90fN8>AUE!b1-1!.U>0861!.C!D<ABB6AB?c!61-1!A!BA!`8U6A!L!61-1!<1-8N8>A/B.E

@U6.!.U!5C!B8/01!-.!J0190A<A>8;C!JA0A!J0190A<A-10.Uc!AUQ!O5.!C1U!`A<1U!A!>.C60A0!.C!BAU!>AJA>8-A-.U!-.!5C!A</8.C6.!-.!D<ABB6AB?!JA0A!BA!>0.A>8;C!-.!U1N6TA0.E!!D8C!.</A091!6.C.<1U!O5.!UA/.0!O5.!BAU!8-.AU!-.60fU!-.!D<ABB6AB?!U1C!B1!U5N8>8.C6.<.C6.!J1-.01UAU!>1<1!JA0A!J1-.0!aA>.0!5C!U8U6.<A!1J.0A68`1!>1<JB.61E!@U6AU!8-.AU!68.C.C!.B!J16.C>8AB!JA0A!>1C`.0680!.B!5U1!-.!B1U!10-.CA-10.U!.C!5CA!A>68`8-A-!<5>a1!<fU!>0.A68`A!O5.!BA!.dJ.08.C>8A!O5.!J1-.<1U!1/6.C.0!>1C!.B!U1N6TA0.!O5.!

F3G222

Page 11: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. LM5D)/3)+&%,,-%,.N

5UA<1U!C10<AB<.C6.E

Z.C60fC-1C1U!.C!.B!J5C61!-.!`8U6A!-.!<.01U!J0190A<A-10.U!<106AB.Uc!J1-.<1U!-.>80!O5.!D<ABB6AB?7

! )C>B5L.!5C!B.C95A[.!-.!J0190A<A>8;CE

! )C>B5L.!5CA!B8/0.0QA!-.!>BAU.U

! )C>B5L.!5C!.C610C1!-.!-.UA001BB1

bAC61!.B!B.C95A[.c!>1<1!BA!B8/0.0QA!-.!>BAU.U!L!.B!.C610C1!-.!-.UA001BB1!BB.`AC!<fU!-.!^3!Aq1U!-.!5U1!L!-.J50A>8;CE!!*1!.C!`AC1!D<ABB6AB?!aA!U8-1!BA!0.N.0.C>8A!JA0A!.B!-.UA001BB1!-.!B.C95A[.U!L!.C610C1U!-.!-.UA001BB1E

:$"0';)$9

D<ABB6AB?!.U6f!-.N8C8-1!>1C!5C!>1C[5C61!<5L!J.O5.q1!-.!>1C>.J61U!J.01!U1C!5C!U89C8N8>A-1!<5L!.UJ.>QN8>1E!!@U!Nf>8B!>1CN5C-80!B1U!>1C>.J61U!J10O5.!.U61U!U1C!5UA-1Uc!.C!-8N.0.C6.U!B.C95A[.Uc!>1C!-.N8C8>81C.U!<5L!-8N.0.C6.UE

@AB&6+;

b1-1!.C!D<ABB6AB?!.U!5C!#4P/-#E!!oC!1/[.61!.U!5CA!JA06.!8C-8U68C958/B.!-.B!0.U61!-.B!A</8.C6.c!>1C!>A0A>6.0QU68>AU!L!0.UJ1CUA/8B8-A-.U!/8.C!-.<A0>A-AUE

C&";1B&;

oC!&/'3%P/!.U!5C!0.O5.08<8.C61c!O5.!U.!aA>.!A!5C!1/[.61!-.6.0<8CA-1c!JA0A!O5.!.U6.!BB.`.!A!>A/1!AB95CAU!-.!U5U!0.UJ1CUA/8B8-A-.UE

oC!<.CUA[.!.UJ.>8N8>A!O5.!.U!B1!O5.!U.!.UJ.0A!-.B!"/*/0-#"!I.B!1/[.61!O5.!0.>8/.!.B!<.CUA[.M!J.01!C1!N5.0=A!5CA!-.6.0<8CA-A!N10<A!-.!0.U1B`.0B1E!!@B!0.>.J610!.U!.B!0.UJ1CUA/B.!-.!-.>8-80!>1<1!U.!BB.`A!A!>A/1!BA!1J.0A>8;C!JA0A!0.UJ1C-.0!AB!<.CUA[.E

5"6&(D1E

@B![5.91!-.!<.CUA[.U!O5.!5C!-.6.0<8CA-1!1/[.61!J5.-.!.C6.C-.0!U.!-.C1<8CA!U5!1'-/"@%?E!+A!pC8>A!N10<A!-.!8C6.0A>65A0!>1C!5C!1/[.61!.U!A!60A`XU!-.!U5!8C6.0NA=E

FFG222

Page 12: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. LM5D)/3)+&%,,-%,.N

F"%1/;7*1%$)"

D.!BBA<A!/'*%035,%*16'!AB!a.>a1!O5.!C8C9pC!1/[.61!J5.-.!A>>.-.0!A!BA!.U605>650A!8C6.0CA!-.!1601!1/[.61E!!D;B1!.B!1/[.61!>1C1>.c!L!J5.-.!<AC8J5BA0c!U5!J01J8A!.U605>650A!8C6.0CAE

@U.!a.>a1c!U5<A-1!A!O5.!B1U!<.CUA[.U!U;B1!.UJ.>8N8>AC!O5.!U.!.UJ.0A!-.B!0.>.J610!J.01!C1!.UJ.>8N8>A!>1<1!U.!-./.!0.AB8=A0!BA!6A0.Ac!AU.950AC!O5.!C8C9pC!1/[.61!-.J.C-A!-.!BA!.U605>650A!8C6.0CA!-.!1601E!!

@B!.C`Q1!-.!<.CUA[.U!U5<A-1!A!BA!.C>AJU5BA>8;C!J.0<86.C!.B!-.UA001BB1!-.!U8U6.<AU!<5L!&#(5,%"/3)LA!O5.!>5ABO58.0!JA06.!J5.-.!U.0!0..<JBA=A-A!J10!160A!<8.C60AU!BA!C5.`A!JA06.!0.UJ.6.!BA!8C6.0NA=!-.!BA!JA06.!0..<JBA=A-AE

'+*$=+(D$;=+

'1U!1/[.61U!U1C!0#,1&6"@1*#3!.C60.!UQ!>5AC-1!5C!-.6.0<8CA-1!.<8U10!C1!J5.-.!-8U68C9580!A!5C1!-.B!1601E!'8>a1!-.!160A!N10<A7!U8!J1-.<1U!8C6.0>A</8A0!5C!1/[.61!J10!1601c!.C!5C!-.6.0<8CA-1!>1C6.d61c!.U!J10O5.!U1C!J1B8<;0N8>1UE

G*1;&;

oCA!*,%3/!-.U>08/.!BA!8<JB.<.C6A>8;C!-.!5C!>1C[5C61!-.!1/[.61UE!!+1U!1/[.61U!8C-8`8-5AB.Uc!-.U>0861U!J10!BAU!>BAU.Uc!U.!BBA<AC!1'3-%'*1%3E!!+A!>BAU.!-.U>08/.!BA!.U605>650A!8C6.0CA!-.!B1U!1/[.61U!L!-.U>08/.c!6A</8XCc!>1<1!U.!0.UJ1C-.!A!B1U!<.CUA[.UE!

H1($1A*&;-#&-5";61"%$1

+A!.U605>650A!8C6.0CA!-.!B1U!1/[.61U!.U6f!>1<J5.U6A!J10!G%"1%4,/3)(/)1'3-%'*1%E!+A!`A08A/B.U!-.!8CU6AC>8A!U1C!C1</0.U!O5.!.B!1/[.61!J5.-.!5UA0!JA0A!aA>.0!0.N.0.C>8A!A!1601U!1/[.61UE

C:6+#+;

+1U!&D-#(#3!U1C!BA!N10<A!-.!.UJ.>8N8>A0!>1<1!B1U!1/[.61U!-.!5CA!-.6.0<8CA-A!>BAU.!0.UJ1C-.C!A!B1U!<.CUA[.UE!ZA-A!<X61-1!.UJ.>8N8>A!>1<1!U.!BB.`A!A!>A/1!BA!1J.0A>8;C!JA0A!0.UJ1C-.0!A!5C!-.6.0<8CA-1!<.CUA[.E!oC!<X61-1!J5.-.!A>>.-.0!A!BA!.U605>650A!8C6.0CA!-.B!1/[.61!>1<1!AUQ!6A</8XC!.C`8A0!<.CUA[.U!A!U8!<8U<1!1!A!1601U!1/[.61UE!!+1U!<X61-1U!.UJ.>8N8>ACc!6A</8XCc!>5AB!.U!BA!0.UJ5.U6A!O5.!.B!/&13#"!I.B!1/[.61!O5.!.C`QA!.B!<.CUA[.M!0.>8/.E

b1-1U!B1U!1/[.61U!-.!D<ABB6AB?!U1C!8CU6AC>8A!-.!AB95CA!>BAU.E!!+A!J0190A<A>8;C!.C!D<ABB6AB?!>1CU8U6.!.C!>0.A0!>BAU.Uc!>0.A0!8CU6AC>8AU!-.!.UAU!>BAU.U!L!.UJ.>8N8>A0!BA!U.>5.C>8A!-.!.C`Q1!-.!<.CUA[.U!.C60.!.U1U!1/[.61UE

F2G222

Page 13: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. LM5D)/3)+&%,,-%,.N

I&(&"%$1

+AU!>BAU.Uc!.C!D<ABB6AB?c!.U6fC!109AC8=A-AU![.0f0O58>A<.C6.E!!oCA!>BAU.!0.N8CA!.B!>1C>.J61!-.!160A!>BAU.!<fU!A/U60A>6AE!!+A!>BAU.!<fU!A/U60A>6A!.U!!"#$%&E!!b1-AU!BAU!>BAU.U!U1C!a.0.C>8AU!-.!!"#$%&!IJ10O5.!61-1!.U!5C!1/[.61M!1!a.0.C>8A!-.!AB95CA!>BAU.!O5.!a.0.-A!-.!!"#$%&E

+A!0.BA>8;C!O5.!.d8U6.!.C60.!BA!>BAU.!<fU!A/U60A>6A!IBA!350/"*,%3/M!L!BA!>BAU.!<fU!>1C>0.6A!IBA!354*,%3/M!J.0<86.!>BAU8N8>A0!.B!>1C1>8<8.C61!O5.!6.C9A<1U!-.B!-1<8C81!<1-.BA-1E

'(+,(1=1(-&;-;$=7*1(

H0190A<A0!>1C!1/[.61U!.U!J0190A<A0!5CA!U8<5BA>8;CE

+A!<.6fN10A!.C!BA!J0190A<A>8;C!>1C!1/[.61U!.U6f!/AUA-A!.C!J.0U1C8N8>A0!A!5C!1/[.61!NQU8>1!1!>1C>.J65AB!-.B!-1<8C81!0.AB!.C!1/[.61U!U8<5BA-1U!-.B!A</8.C6.E!!b0A6A<1U!-.!0..C>A0CA0!B1U!1/[.61U!0.AB.U!.C!.B!A</8.C6.!-16fC-1B1U!-.!BAU!<8U<AU!>A0A>6.0QU68>AU!L!N5C>81CAB8-A-.U!O5.!B1U!1/[.61U!0.AB.U!A!B1U!O5.!0.J0.U.C6ACE

<29)$42.1*'+168.++).+=

D<ABB6AB?!IC1!U.!.U>08/.!D<ABBbAB?c!C8!D<ABB"6AB?c!C8!D<ABB"bAB?M!.U!5C!J01L.>61!O5.!BB.`A!<fU!-.!^3!Aq1U!-.!-.UA001BB1E!(5.!8C`.C6A-1!J10!5C!905J1!-.!8C`.U689A-10.U!B8-.0A-1U!J10!&BAC!KALc!.C!j.01d!H&%Z!IHAB1!&B61!%.U.A0>a!Z.C6.0Mc!-50AC6.!B1U!Aq1U!,3UE!!@B!J01L.>61!-.!8C`.U689A>8;C!J01-5[1!`A081U!0.U5B6A-1U!8C6.0<.-81U!O5.!N5.01C!>1C1>8-1U!>1<1!D<ABB6AB?G,Fc!D<ABB6AB?G,2c!D<ABB6AB?G,4!L!D<ABB6AB?GR3E!!Ia66J7GG.CET8?8J.-8AE109GT8?8GD<ABB6AB?M

F^G222

Page 14: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. LM5D)/3)+&%,,-%,.N

+&%,,-%,.)/')/,)%<#)QRSS

@B!D<ABB6AB?!5UA-1!a1L!.C!-QA!.U!5C!-.U>.C-8.C6.!-80.>61!-.B!D<ABB6AB?GR3!L!>1CU.0`A!J0f>68>A<.C6.!61-AU!U5U!>A0A>6.0QU68>AUE

@B!J01L.>61!aA!9.C.0A-1!5CA!>AC68-A-!<5L!90AC-.!-.!8C`.C>81C.U!O5.!BB.9A01C!A!C5.U601U!-QAUE

0/+(6&;-#&*-<=1**61*>

H10!0A=1C.U!O5.!-.U>1C1=>1!.B!J01L.>61!D<ABB6AB?!C1!>5.C6A!>1C!BA!0.J56A>8;C!L!BA!NA<A!O5.!U.!<.0.>.E!!@U!<5L!N0.>5.C6.!.C>1C60A0U.!>1C!J01N.U81CAB.U!-.!BA!8CN10<f68>A!O5.!C1!UA/.C!-.B!J01L.>61!C8!-.!U5U!AJ106.UE!D8C!.</A091!568B8=A<1U!A!-8A081!`A08AU!8-.AU!O5.!N5.01C!-.UA001BBA-AU!.C!.B!J01L.>61!D<ABB6AB?E

*2345678297&!:9;2<7=>!+A!8-.A!-.!O5.!>A-A!J.0U1CA!J5.-A!-8UJ1C.0!-.!5CA!>1<J56A-10A!-.!5U1!J.0U1CABc!>1C!5CA!J16.C>8A!-.!>fB>5B1!U5N8>8.C6.!JA0A!U.0!BA!a.00A<8.C6A!-.!A>>.U1!A!BA!8CN10<A>8;Cc!68.C.!U5U!0AQ>.U!.C!BAU!8-.AU!-.!BA!'LCA/11?!-.!&BAC!KAL!Ia66J7GG.CET8?8J.-8AE109GT8?8G'LCA/11?ME

F_G222

Page 15: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. LM5D)/3)+&%,,-%,.N

T%A5/-%)(/),%)U2'%4##.

)<6:9?7@:;&A9B?C@7;&8:&5;579C2>!D<ABB6AB?c!-.U-.!U5U!8C8>81Uc!>1C6;!>1C!5CA!08>A!8C6.0NA=!-.!5U5A081!90fN8>A!<AC.[A-A!J10!5C!0A6;CE!!+AU!`.C6ACAU!U5J.0J5.U6AUc!BAU!/A00AU!-.!-.UJBA=A<8.C61c!.B!>1J8A0!L!J.9A0c!B1U!<.CpU!-.!>1C6.d61c!.6>!U1C!61-1U!-.UA001BB1U!-.B!J01L.>61!D<ABB6AB?!O5.!Aq1U!<fU!6A0-.!&JJB.!AL5-;!A!<AU8N8>A0E

!!! +&%,,-%,.VWX

)<?293B6C@7>!D1C!8CC5<.0A/B.U!BA!>AC68-A-!-.!AJ106.U!O5.!.B!D<ABB6AB?!aA!a.>a1!A!BA!8CN10<f68>AE!@<J.=AC-1!>1C!.B!JA0A-89<A!-.!108.C6A>8;C!A!1/[.61U!L!6.0<8CAC-1!>1C!>1UAU!<5L!6X>C8>AU!>1<1!BA!1J.0A>8;C!#86#B6!Ia66J7GG.CET8?8J.-8AE109GT8?8G#86w/B86ME!+A!B8U6A!>1C68C5A!>1C!BAU!<.61-1B19QAU!f98B.U!Ia66J7GG.CET8?8J.-8AE109GT8?8G@d60.<.wH0190A<<8C9Mc!B1U!JA601C.U!-.!-8U.q1!Ia66J7GG.CET8?8J.-8AE109GT8?8G'.U89CwHA66.0CUMc!.B!>1C>.J61!-.!.C610C1!-.!-.UA001BB1c!.6>E

@B!J01L.>61!D<ABB6AB?!6A</8XC!AL5-;!A!AN8AC=A0!.B!5U1!-.!B1U!B.C95A[.U!-8Cf<8>1Uc!B1U!0.>1B.>610.U!-.!/AU50Ac!.B!5U1!-.!<fO58CAU!`8065AB.Uc!.6>E

+A!B8U6A!>1C68C5A7!oC86!b.U68C9!Ia66J7GG.CET8?8J.-8AE109GT8?8GoC86w6.U6Mc!%.NA>6108C9!L!%.NA>6108C9!#01TU.0!Ia66J7GG.CET8?8J.-8AE109GT8?8G%.NA>6108C9Mc!.6>E

FeG222

Page 16: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. LM5D)/3)+&%,,-%,.N

>?&@1'916%&'.=A

DO5.A?!.U!5C!D<ABB6AB?!<1-.0C1c!-.!>;-891!A/8.061c!.U>0861!.C!U8!<8U<1c!<5L!J106A/B.!L!<5L!0fJ8-1E!!&!BA!N.>aA!DO5.A?!J5.-.!>100.0!.C!JBA6AN10<AU!i8C-1TUc!&JJB.c!+8C5dc!8HAOUc!.6>E

DO5.A?!.U!BA!>1C68C5A>8;C!-.B!J01L.>61!10898CAB!-.!D<ABB6AB?!L!>5.C6A!>1C!B1U!AJ106.U!-.!`A081U!-.!B1U!-.UA001BBA-10.U!10898CAB.U!-.!B1U!Aq1U!,3UE!!@C60.!.BB1U!&BAC!KALc!'AC!)C9ABBUc!b.-!KA.aB.0c!.6>E

+A!>1<5C8-A-!-.!-.UA001BBA-10.U!L!5U5A081U!-.!DO5.A?!U.!.d68.C-.!J10!61-1!.B!<5C-1!L!>5/0.!5C!A/AC8>1!<5L!90AC-.!-.!5U1Uc!.C60.!.BB1U7!.-5>A>8;Cc!8C`.U689A>8;Cc!-.UA001BB1!<5B68<.-8Ac!-.UA001BB1!T./c!.6>E

+A5/%.)G/"316')Y8Z

@B!J01L.>61!DO5.A?!>1<.C=;!.C!&JJB.c!.C!.B!Aq1!FSSec!J10O5.!B1U!A5610.U!C.>.U86A/AC!5C!.C610C1!-.!-.UA001BB1!-.!U1N6TA0.!.-5>A68`1!O5.!J5.-A!U.!5UA-1!m!.!8C>B5U1!J0190A<A-1!m!J10!J.0U1CAU!C1!6X>C8>AUE!+1U!-.6ABB.U!-.!BA!<168`A>8;C!O5.!A00AC>;!>1C!.B!J01L.>61!DO5.A?!J5.-.C!B..0U.!.C!.B!JAJ.0!=[%*.)-#)-B/)\5-5"/)])9B/)+-#"2)#@)+A5/%.;)%)0"%*-1*%,)+&%,,-%,.)^"1--/')1')1-3/,@>!I`.0!/8/B8190ANQAME

DO5.A?c!.C!>8.06A!N10<Ac!.U!5C!0.90.U1!A!BAU!8-.AU!O5.!aA/QAC!<168`A-1!61-1!.B!-.UA001BB1!-.B!J01L.>61!D<ABB6AB?!.C!B1U!,3UE!!&B95C1U!-.!B1U!-8AB.>61U!>1<.0>8AB.U!-.!D<ABB6AB?!aAC!J.0-8-1!JA06.!-.!BA!>1C>.J>8;C!10898CAB!L!DO5.A?!`5.B`.!A!61<A0!.U1U!`AB10.UE!!b1-1!B1!O5.!J5.-A!aA>.0U.!>1C!5CA!>1<J56A-10A!68.C.!O5.!J1-.0!aA>.0U.!>1C!DO5.A?E!!&JB8>A0!.U.!>1C>.J61!>1C`8.06.!A!DO5.A?!.C!

F4G222

Page 17: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. LM5D)/3)+&%,,-%,.N

5C!A</8.C6.!<5L!<5B68<.-8A!-1C-.!61-1U!B1U!<.-81U!-.!.dJ0.U8;C!L!U1J106.!-.!8CN10<A>8;C!J5.-.C!>1CNB580!.C!5CA!pC8>A!a.00A<8.C6AE!!DO5.A?!>5.C6A!>1C!.d>.B.C6.!U1J106.!JA0A!90fN8>1U!2'!L!^'c!J01>.UA<8.C61!-.!6.d61!L!C5<X08>1c!<pU8>A!IPH^c!P)')c!9.C.0A-10!-.!U1C8-1!(PMc!J01>.UA<8.C61!-.!`Q-.1c!.6>E

DO5.A?!6A</8XC!-8UJ1C.!-.!.d>.B.C6.U!a.00A<8.C6AU!JA0A!BA!J0190A<A>8;C!>1<1!.B!%.NA>6108C9!#01TU.0c!.-8610.U!-.!>;-891!>1C!U8C6Ad"a89aB89a6c!N0A<.T10?!JA0A!5C86"6.U68C9c!.6>E

x!>5.C6A!>1C!.d>.B.C6.U!1J>81C.U!JA0A!-.UA001BB1!-.!U1N6TA0.!>1<.0>8AB!>1<1!D.AU8-.!I5C!N0A<.T10?U!-.!-.UA001BB1!-.!AJB8>A>81C.U!T./!/AUA-1!.C!>1C68C5A681CUMc!A>>.U1!A!/AU.U!-.!-A61U!$'#Zc!/AU.U!-.!1/[.61U!>1<1!PA9<Ac!0Db!m!%.<16.!D<ABB6AB?!IU1J106.!-.!1/[.61U!-8U608/58-1UMc!.6>E

@d8U6.Cc!A!N8C.U!-.!.C.01!-.!2334c!<fU!-.!433!JAO5.6.U!>1C!AJB8>A>81C.U!JA0A!8CU6ABA0!.C!DO5.A?!0.98U60A-AU!.C!DO5.A?PAJ!Ia66J7GG<AJFEUO5.A?N15C-A681CE109GU<ME!!

DO5.A?!.U!.B!-8AB.>61!-.!D<ABB6AB?!.U>198-1!JA0A!.U6.!B8/01E!D8C!.</A091!aAL!O5.!UA/.0!O5.!.B!Sel!-.!B1!O5.!U.!AJ0.C-A!.C!5C!-.6.0<8CA-1!-8AB.>61!`AB.!JA0A!.B!0.U61!-.!B1U!-8AB.>61UE!!D8!DO5.A?!C1!.U!BA!a.00A<8.C6A!-.!U5!J0.N.0.C>8Ac!J5.-.!J01/A0!AB95CA!-.!BAU!`A08AU!AB6.0CA68`AU!O5.!D<ABB6AB?!/08C-AE

F,G222

Page 18: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

'(+,(1=1"#+-%+"-<=1**61*>

Z1<.C=A0!>1C!D<ABB6AB?!C1!.U!Nf>8B!JA0A!J.0U1CAU!O5.!`.C8<1U!-.!1601U!.C610C1UE!!&C6.U!-.!<.6.0C1U!-.!BB.C1!>1C!>1UAU!>1<1!BA!U8C6Ad8Uc!.U61U!U1C!AB95C1U!>1CU.[1U!L!>1<.C6A081U!O5.!J0.6.C-.C!NA>8B86A0!.B!A>>.U1!A!D<ABB6AB?E

5.10&4B.1*'1.;4'"*2C.D'

H0.Jf0.U.!JA0A!5CA!>50`A!-.!AJ0.C-8=A[.!AB6A!AB!>1<8.C=1E!D<ABB6AB?!68.C.!5CA!`8U8;C!-8N.0.C6.!-.!>1<1!-./8.0A!U.0!BA!.dJ.08.C>8A!>1C!B1U!10-.CA-10.Uc!.UA!-8N.0.C>8A!-.!>1C>.J>8;C!aA>.!O5.!B1U!8C8>81U!>1C!D<ABB6AB?!U.AC!5C!J1>1!-.U>1C>.06AC6.!JA0A!J.0U1CAU!O5.!LA!6.C9AC!.dJ.08.C>8A!.C!8CN10<f68>AE

E4';.4.49'1;.4.1&"19F$0=10&+)&4.+

+A!<AL10QA!-.!B1U!-.U.C6.C-8<8.C61U!8C8>8AB.U!68.C.C!O5.!`.0!>1C!5CA!N10<A!-8N.0.C6.!-.!`.0!L!.C6.C-.0!BA!8CN10<f68>AE!D<ABB6AB?!C1!.U!-8NQ>8Bc!U;B1!.U!-8N.0.C6.E

J$(1(-%)#$,+

@B!>;-891!.U>0861!.U!8<J106AC6.c!J.01!<5>a1!<fU!8<J106AC6.!.U!.B!>1C1>8<8.C61!O5.!`A<1U!1/6.C8.C-1!>1CN10<.!J0190A<A<1UE!!D8!AJ0.C-.<1U!-QA!A!-QAc!J01/A/B.<.C6.!.B!>;-891!`8.[1!C1!U.A!/5.C1E!!b80A0!>;-891!C1!.U!<AB1c!B1!<AB1!.U!C1!AJ0.C-.0!A!-8A081E

J(1A1B+-$"%(&=&"61*

oC!A</8.C6.!>1<1!D<ABB6AB?!.U!8-.AB!JA0A!60A/A[A0!-.!N10<A!8C>0.<.C6ABE!!+1U!`8>81U!O5.!6.C.<1Uc!J01-5>61!-.B!>8>B1!-.!-.UA001BB1!.-8>8;CG>1<J8BA>8;CGJ05./Ac!C1!68.C.C!U.C68-1!.C!D<ABB6AB?!Lc!.C!>8.06A!N10<Ac!6.C.<1U!O5.!AJ0.C-.0!A!J0190A<A0!-.!160A!N10<AE

H10!1601!BA-1!.B!>1U61!-.!B1U!>A</81U!.U!<5>a1!<fU!/A[1!.C!D<ABB6AB?!O5.!.C!1601U!B.C95A[.Uc!.U1!J.0<86.!0.BA[A0U.!L!-.<10A0!BAU!-.>8U81C.U!8<J106AC6.U!-.!-8U.q1!aAU6A!O5.!U.JA<1U!U5N8>8.C6.!-.B!-1<8C81E!!*1!.U!-.!.d60AqA0U.!O5.!BAU!<.61-1B19QAU!f98B.U!aALAC!U8-1!-.UA001BBA-AU!.C!D<ABB6AB?E

K+-L13-1(%L$M+;-D7&"6&;

@C!D<ABB6AB?!C1!aAL!5C!A0>a8`1!>1C!B1U!N5.C6.U!L!61-1c!8C>B5U1!.B!>;-891c!.U6f!-.C601!-.B!A</8.C6.!-.!1/[.61UE!@U61!C1!O58.0.!-.>80!O5.!C1!U.!J5.-A!<1`.0!>;-891!.C60.!8<f9.C.U!-.!D<ABB6AB?!L!.d8U6.C!-8U68C6AU!1J>81C.U!JA0A!<1`.0!>;-891!-.!5C!D<ABB6AB?!A!1601E

!+10.82"$1'91+.4,$G18'D$41"$12419$+$

W58=fU!BA!N10<A!<fU!Nf>8B!-.!AJ0.C-.0!D<ABB6AB?!U.A!>1C!5C!65610E!D.!O5.!.U!-8NQ>8B!>1CU.9580!5C!

FRG222

Page 19: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

65610!A!68.<J1!>1<JB.61!L!-.!N10<A!J0.U.C>8ABc!J.01!aAL!B8U6AU!-.!>100.1U!L!905J1U!-.!5U5A081U!O5.!J5.-.C!AL5-A0!/AU6AC6.!.C!B1U!>1<8.C=1UE

FSG222

Page 20: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

62").H29

H0f>68>A<.C6.!61-1!.B!JA0A-89<A!-.!1/[.61U!U.!J5.-.!0.U5<80!.C7!$/[.61U!O5.!0.>8/.C!<.CUA[.UE!!+A!U8C6Ad8U!D<ABB6AB?!.U!5CA!-80.>6A!>1CU.>5.C>8A!-.!.U1E!+A!.U605>650A!/fU8>A!-.!BA!U8C6Ad8U!.U7

#4P/-#!<.CUA[.E

N$6&(1*&;

&B95C1U!1/[.61U!U1C!>1C1>8-1U!J10!.B!>1<J8BA-10!L!J5.-.C!U.0!8CU6AC>8A-1U!>1C!B86.0AB.UE

#D3:92;>

D<ABB6AB?!>5.C6A!>1C!5CA!08>A!`A08.-A-!-.!1/[.61U!C5<X08>[email protected]!I'()**+,&$-$.c!/).-$0123&34$+,&$-$.!L!/).-$5$-)&34$+,&$-$.Mc!Z1<A!NB16AC6.!I6*1)&Mc!(0A>>81C.U!I6.)%&31,Mc!'.>8<AB.U!I'%)*$78$%3()*Mc!.6>E!!&B95C1U!-.!.U1U!1/[.61U!J5.-.!8CU6AC>8A0U.!5UAC-1!B1U!U8958.C6.U!B86.0AB.UE

E$<6:92;EFEGFEFHIJKLMNOPFHIJKLMNOPEGFHIJKLMNOPFHIJKLMNOPE

E*237&?=267<6:EF1FEGF1FEFHIJKLMNOPFHIJKLMNOP1PEGFHIJKLMNOPFHIJKLMNOP1PE

*797@6:9:;>

+1U!>A0A>6.0.U!I9:).)%&$.M!J5.-.C!8CU6AC>8A0U.c!6A</8XCc!5UAC-1!B86.0AB.UE

E*797@6:9:;Ey7EyQEyBEyFE

23G222

Page 21: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

yRE

*78:<7;&8:&*797@6:9:;>

+AU!>A-.CAU!I'&.3,-M!U1C!5CA!U.>5.C>8A!-.!>A0A>6.0.UE

E*78:<7&8:&*797@6:9:;ESTU2=7&35<82TSES.37==67=VSESBWXYDSESZ<&;69C<A&@2<&5<7&@23C==7&;C34=:&[SS\S

.X3Q2=2;>

+1U!UQ</1B1U!I';("1*M!U1C!>A-.CAU!-.!>A0A>6.0.U!I'&.3,-M!5UA-AU!J10!.B!U8U6.<A!>1<1!C1</0.!-.!>BAU.c!<X61-1Uc!.6>E!!*5C>A!aA/0fc!.C!61-1!.B!U8U6.<Ac!2!UQ</1B1U!>1C!B1U!<8U<1U!>A0A>6.0.Uc!.U1!J.0<86.!>1<JA0A>81C.U!<5L!0fJ8-AUE

E.X3Q2=2;E]5<.X3Q2=2E]S5<&;X3Q2=2&@2<&:;47@C2;SE

(997^>

oC!<..);!.U!5CA!.U605>650A!-.!-A61U!U8<JB.!O5.!J.0<86.!A>>.-.0!A!B1U!.B.<.C61U!>1C6.C8-1U!8C-8>AC-1!BA!J1U8>8;C!>1C!5C!Cp<.01E!D.!J5.-.C!>0.A0!&00ALU!-.!B86.0AB.U!>1C!5C!B86.0ABE!!@B!B86.0AB!JA0A!>0.A0!5C!A00AL!.U!5CA!U.>5.C>8A!-.!B86.0AB.U!.C>.00A-AU!.C60.!=>!L!?E

E(997^EnIF!H!I!JMEnIF!F1P!y7!S5<&;69C<AS!]5<.X3Q2=2MEnInIFM!nIHMME

@C!DO5.A?!IL!C1!.C!1601U!-8AB.>61UM!U.!J5.-.!8CU6AC>8A0!5C!&00AL!>1C!.B!0.U5B6A-1!-.!BA!.`AB5A>8;C!-.!.dJ0.U81C.U!D<ABB6AB?!U.JA0A-AU!J10!5C!J5C61!L!.C>.00A-AU!.C60.!BBA`.U!I@!L!AME

2FG222

Page 22: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

E(997^;&:<&._5:7VEzF!`!FE!H!>BAUU{EznIFM!>BAUU{E

C&";1B&;

+1U!<.CUA[.U!0.J0.U.C6AC!BA!8C6.0A>>8;C!.C60.!B1U!>1<J1C.C6.U!-.!5C!U8U6.<A!D<ABB6AB?E!oC!<.CUA[.!.U!5C!J.-8-1!O5.!5C!1/[.61!B.!aA>.!A!1601!1/[.61E

oC!<.CUA[.!.U6f!>1<J5.U61!J10!.B!9:@:4629!I.B!1/[.61!AB!O5.!U.!B.!aA>.!.B!J.-8-1Mc!.B!;:=:@629!I.B!C1</0.!-.B!<.CUA[.M!Lc!U8!>100.UJ1C-.c!J10!B1U!79A53:<62;E

'.U-.!.B!J5C61!-.!`8U6A!U8C6f>68>1c!aAL!^!68J1U!-.!<.CUA[.U7!Z<79^c!aC<79^!L!b:^c298E

-:<;7d:;&Z<79^

+1U!<.CUA[.U!oCA0L!U1C!<.CUA[.U!U8C!A095<.C61UE!D1C!B1U!<fU!U8<JB.U!L!>1CU6AC!-.7

.$%$B&1.C($,2)#$E

E$d:34=2;&8:&3:<;7d:;&Z<79^EGF!A/UEH!>BAUUEFPPP!NA>6108ABES7:C25S!U8=.E076:!61-ALE+C3:!C1TE"98:9:8*2==:@6C2<!C.TE];X3Q2=2!>BAUUE.69C<A!>A6.910LE

-:<;7d:;&aC<79^

+1U!<.CUA[.U!#8CA0L!.U6fC!>1<J5.U61U!-.!BA!U8958.C6.!N10<A7

.$%$B&1.CD,!B$.)71.C).-D($,&1E

22G222

Page 23: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

+1U!1J.0A-10.U!`fB8-1U!.U6fC!>1<J5.U61U!J10!F!;!<fU!-.!B1U!U8958.C6.U!>A0A>6.0.U7

!ECFCGCHCICJCKCLCMCNCOCPCQCRCSCT

E$d:34=2;&8:&3:<;7d:;&aC<79^EI!`!KEI!e!MEI!f!KEH!g!FPESZ<&.69C<A&Sh!S@2<@76:<782&7&2692SES(=7<&b7^S!Ge!.37==67=VE

-:<;7d:;&b:^c298

+1U!<.CUA[.U!K.LT10-!.U6fC!N10<A-1U!>1C!F!;!<fU!JABA/0AU!>BA`.c!>1C!U5U!0.UJ.>68`1U!A095<.C61Uc!>1C!BA!N10<A7

.$%$B&1.CB)*)".)9*)4$UVC).-D($,&1UE

$!-.!BA!N10<A7

.$%$B&1.CB)*)".)9*)4$UVC).-D($,&1UCB)*)".)9*)4$WVC).-D($,&1WE

x!AUQ!>1C!^c!_!;!<fU!JABA/0AU!>BA`.U!L!U5U!A095<.C61UE

E$d:34=2;&8:&3:<;7d:;&b:^c298ESZ<&.69C<AS!N80U67!IESZ<&.69C<AS!ABB#56(80U67!IESZ<&.69C<AS!>1JL(01<7!H!617!KEK!/.6T..C7!F!AC-7!FPEF!617!KE(997^!T86a7!F!T86a7!<C=!T86a7!S;69C<AS

,7=29&8:&9:629<2

@B!B.C95A[.!D<ABB6AB?!J01`..!5C!<.>AC8U<1!-1/B.!-.!>1<5C8>A>8;CE!!@B!U.B.>610!L!B1U!A095<.C61U!-.B!<.CUA[.!J.0<86.C!O5.!.B!.<8U10!B.!.C`Q.!8CN10<A>8;C!AB!0.>.J610E!H10!1601!BA-1!.B!0.>.J610!

2^G222

Page 24: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

-.`5.B`.!8CN10<A>8;C!>1C!5C!1/[.61!>1<1!0.U5B6A-1!-.B!.C`Q1!-.!<.CUA[.UE

+1U!<X61-1Uc!O5.!U1C!BA!N10<A!O5.!68.C.C!B1U!1/[.61U!-.!0.UJ1C-.0!A!B1U!<.CUA[.Uc!J5.-.C!.UJ.>8N8>A0!.B!`AB10!-.!0.610C1!5UAC-1!.B!>A0A>6.0!XE

5<-W6282*2<,7=290:%:629<2F!!!!E$;6:&:;&5<&:d:34=2&8:&3W6282&_5:&9:;42<8:&<C=&@232&i7=29&8:&9:629<2E

!!!!j!<C=

5<-W6282*2<,7=290:%:629<2H!!!!E$;6:&:;&5<&:d:34=2&8:&3W6282&_5:&9:;42<8:&7=&3C;32&9:@:4629&@232&i7=29&8:&9:629<21

&&&&.C&:=&3W6282&<2&6C:<:&5<&i7=29&8:&9:629<2&:k4=X@C62h&:=&9:@:4629&:;&:=&9:;5=6782E

*7;@78C<A&3:;;7A:;

&!`.>.U!.U!C.>.UA081!.C`8A0B.!`A081U!<.CUA[.U!AB!<8U<1!0.>.J610E!!@C!.B!B.C95A[.!D<ABB6AB?!aAL!5CA!N10<A!U8C6f>68>A!-.!.C`8A0!<fU!-.!5C!<.CUA[.!AB!<8U<1!0.>.J610E

+A!N10<A!.U!6.0<8CA0!.B!.C`Q1!-.B!J08<.0!<.CUA[.!>1C!.B!>A0A>6.0!J5C61!L!>1<A!IuM!L!A!>1C68C5A>8;C!.U>08/80!.B!U8958.C6.!<.CUA[.E

E-:<;7d:;&:<&@7;@787E+97<;@9C46!!!!>B.A0u!!!!Ua1T7!S7=A2&:<&:=&+97<;@9C46Su!>0u!!!!Ua1T7!S^&7=A2&3B;Su!>0E

'(&%&#&"%$1

+1U!<.CUA[.U!U.!.`ABpAC!-.!8=O58.0-A!A!-.0.>aAE!+1U!<.CUA[.U!oCA0L!68.C.C!J0.>.-.C>8A!U1/0.!B1U!#8CA0Lc!L!A!U5!`.=!B1U!#8CA0L!68.C.C!J0.>.-.C>8A!U1/0.!B1U!<.CUA[.U!K.LT10-E!!D8.<J0.!U.!J5.-.C!01<J.0!BAU!0.9BAU!-.!J0.>.-.C>8A!568B8=AC-1!JA0XC6.U8UE

2_G222

Page 25: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

S;69C<AS!A67!GH!C.9A6.-!!!kkk!!!S;69C<AS!A67!IGH!C.9A6.-M

S;69C<AS!A67!H!`!GF!C.9A6.-!!!kkk!!!S;69C<AS!A67!IH!`!IGF!C.9A6.-MM

+AU!U8<JB.U!0.9BAU!-.!J0.>.-.C>8Ac!-.!BA!U8C6Ad8U!D<ABB6AB?c!68.C.C!AB95CAU!8<JB8>A>81C.U!-.U>1C>.06AC6.U!JA0A!J.0U1CAU!A>1U65</0A-AU!A!1601U!B.C95A[.U!-.!J0190A<A>8;CE!!@C!D<ABB6AB?!.B!>1<J8BA-10!*$!UA/.!-.c!J10!.[.<JB1c!U5<AU!L!<5B68JB8>A>81C.UE!!@U1!O58.0.!-.>80!O5.!.B!>1<J8BA-10!C1!J5.-.!-.6.0<8CA0!O5.c!>5AC-1!1J.0A<1U!>1C!Cp<.01Uc!BA!<5B68JB8>A>8;C!68.C.!J0.>.-.C>8A!U1/0.!BA!U5<AE

&CAB8>.<1U!.U6A!U.C6.C>8A7

I!`!H!l!J!!!kkk!!!!HP

D.9pC!BAU!0.9BAU!-.!J0.>.-.C>8A!-.!D<ABB6AB?!U.!.C`QA!J08<.01!.B!<.CUA[.!L!I>1C!.B!A095<.C61!2M!L!AB!0.U5B6A-1!IeM!U.!B.!.C`QA!.B!<.CUA[.!K!I>1C!.B!A095<.C61!_ME!!'.!.UA!N10<A!.B!0.U5B6A-1!.U!23!L!C1!FF!>1<1!a5/8.U.!U8-1!.C!1601U!B.C95A[.UE

D8.<J0.!J1-.<1U!568B8=A0!JA0XC6.U8U!JA0A!N10=A0!BA!J0.>.-.C>8A!O5.!-.U.A<1U7

I!`!IH!l!JM!!!kkk!!!!FF

H1($1A*&;

+A!<.<108A!-8UJ1C8/B.!JA0A!5C!1/[.61!U.!109AC8=A!.C!`A08A/B.UE!!+AU!`A08A/B.U!68.C.C!5C!C1</0.!L!>A-A!5CA!aA>.!0.N.0.C>8A!A!5C!pC8>1!1/[.61!.C!>A-A!<1<.C61E!!@B!C1</0.!-.!BAU!`A08A/B.U!J5.-.!U.0!5UA-1U!.C!.dJ0.U81C.U!O5.!O58.0AC!0.N.080!A!.U.!1/[.61E

3W62820:$d:34=2>!%"$5&/'-#!!!!E$;6:&3W6282&35:;697&:=&5;2&8:&8C?:9:<6:;&6C42;&8:&i79C7Q=:;1

&&&&79A53:<62>&79A53:<62&7=&3W6282&&&&i79C7Q=:+:34297=>&i79C7Q=:&6:34297=&7=&3W6282&&&&i79C7Q=:0:)<;67<@C7>&i79C7Q=:&8:&C<;67<@C7&&&&.37==67=V>&i79C7Q=:&A=2Q7=&&&&:7@m>&79A53:<62&4797&:=&Q=2_5:&&&&E

!!!!|!G%"1%4,/9/&0#"%,!|

2eG222

Page 26: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

!!!!G%"1%4,/9/&0#"%,!>f!.37==67=V!ABBZBAUU.UE

!!!!i79C7Q=:0:)<;67<@C7!>f!G%"1%4,/9/&0#"%,!U.B.>67}7/%*B!|!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!|!G%"1%4,/9/&0#"%,F,[,#A5/!|!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!G%"1%4,/9/&0#"%,F,[,#A5/!>f!FE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/%*B!CA<.!/.98CUi86a7!%"$5&/'-#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!~E

@B!C1</0.!-.!BAU!`A08A/B.U!.U6f!>1<J5.U61!J10!5CA!U.>5.C>8A!-.!B.60AU!L!-Q9861Uc!.<J.=AC-1!>1C!5CA!B.60AE!+AU!`A08A/B.U!6.<J10AB.U!L!-.!8CU6AC>8A!>1<8.C=AC!>1C!5CA!B.60A!<8CpU>5BAc!BAU!9B1/AB.U!>1<8.C=AC!>1C!5CA!B.60A!<ALpU>5BAE!!$60A!>1C`.C>8;C!.C!B1!O5.!0.UJ.>6A!AB!C1</0.!-.!BAU!`A08A/B.U!.U!O5.!U8!.U6.!.U6f!>1<J5.U61!-.!`A08AU!JABA/0AUc!>A-A!5CA!I.d>.J61!BA!8C8>8AB!.C!AB95C1U!>AU1UM!-./.!>1<.C=A0!J10!<ALpU>5BAE

!"#$%"&'()#$*)$+,-#)#$#"%.$/-&'01%.$2-(0-',)#$3,"'-,)#

./%'(#0120)"2%"0/'%0)+%12302+0*&%++,%+-0)"2%0/'%04%"5%6+20$+#6%+07/20"282"2')5%0%+0#692,#0)+%12:00;20%<=0120(21>"2'(207/20+%0)#'42')5?'0(20'#&6"210(20)+%12012%0+%0&51&%07/20+%0)#'42')5?'0(20'#&6"210(204%"5%6+210$+#6%+21:

oC!B86.0AB!U8.<J0.!U.!0.N8.0.!A!5C!pC8>1!1/[.61!J.01!5CA!`A08A/B.!J5.-.!0.N.080U.!A!-8N.0.C6.U!1/[.61U!.C!-8N.0.C6.U!<1<.C61UE

(;CA<7@CY<>

@B!1/[.61!0.N.0.C>8A-1!J10!5CA!`A08A/B.!>A</8A!>5AC-1!5CA!7;CA<7@CY<!.U!.`AB5A-AE!!+AU!AU89CA>81C.Uc!.C!D<ABB6AB?c!68.C.C!BA!N10<A7

4).3)"*$CVMCYZB.$23[,'()**&)*\E

E$d:34=2;&8:&7;CA<7@C2<:;E:!>f!PE2!>f!FE05'-#!>f!:!g!2E*,%3/3!>f!.37==67=V!ABBZBAUU.UE

!;:582Gi79C7Q=:;>

oCA!JU.5-1"`A08A/B.!.U!5C!8-.C68N8>A-10!O5.!0.N.0.C>8A!A!5C!1/[.61E!+A!-8N.0.C>8A!>1C!BAU!`A08A/B.U!sC10<AB.Ut!.U!O5.!C1!U.!J5.-.C!AU89CA0!L!U8.<J0.!0.N.0.C>8AC!AB!<8U<1!1/[.61E

24G222

Page 27: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

E!;:582Gi79C7Q=:;&@2<;67<6:;E

<C=1&E%:?:9:<@C7&7&5<&2Qd:62&5;782&@57<82&m7^&_5:&9:49:;:<679&:=&@2<@:462&8:&S<787S&2&8:&Si7@X2S1&'7;&i79C7Q=:;&_5:&<2&;:&7;CA<792<&<5<@7h&9:?:9:<@C7<&7&<C=E

695:1&E%:?:9:<@C7&7&5<&2Qd:62&_5:&9:49:;:<67&:=&i:9878:92&=YAC@21E

?7=;:1&E%:?:9:<@C7&7&5<&2Qd:62&_5:&9:49:;:<67&:=&?7=;2&=YAC@21E

E!;:582Gi79C7Q=:;&<2G@2<;67<6:;E;:=?1&E%:?:9:<@C7&7=&9:@:4629&8:=&3:<;7d:1E

;54:91&E%:?:9:<@C7&7=&9:@:4629&8:=&3:<;7d:h&4:92&C<8C@7&_5:&<2&8:Q:&5;79;:&=7&@=7;:&8:=&9:@:4629&:<&=7&QD;_5:87&8:=&3W6282&7&:i7=5791&.:&5;7h&;2Q9:&6282h&@57<82&;:&:;4:@C7=Cn7&5<&3W6282&:<&5<7&;5Q@=7;:&^&;:&_5C:9:&C<i2@79&:=&3W6282&8:&=7&;54:9@=7;:1E

6mC;*2<6:k61&E%:?:9:<@C7&7=&2Qd:62&@2<6:k62G8:G:d:@5@CY<&_5:&6C:<:&6287&=7&C<?2937@CY<&9:?:9:<6:&7&=7&7@6Ci7@CY<&8:=&3W62821E

$k4=C@79&=7&8C?:9:<@C7&:<69:&i79C7Q=:;&A=2Q7=:;h&6:34297=:;h&8:&C<;67<@C7h&:6@1

O*+P7&;

@C!D<ABB6AB?!.B!>1<J106A<8.C61!I.B!>;-891M!6A</8XC!.U!5C!1/[.61E!!+1U!/B1O5.U!U1C!5CA!N10<A!-.!>AJ650A0!>1<J106A<8.C61!I>;-891M!.C!5C!1/[.61!JA0A!568B8=A0B1!A!C5.U60A!-8U>0.>8;CE!!+A!N10<A!/fU8>A!-.!5C!/B1O5.!.U!5CA!B8U6A!-.!.dJ0.U81C.Uc!U.JA0A-AU!J10!5C!J5C61c!.C>.00A-AU!.C60.!>10>a.6.U!I]^ME

]YZB.$23[,'()**&)*\U^E

]YZB.$23[,'()**&)*\U_CYZB.$23[,'()**&)*\W^E

+A!N10<A!-.!A>68`A0!5C!/B1O5.!I-.!.[.>56A0!.B!>;-891!O5.!.C>8.00AM!.U!.C`8fC-1B.!.B!<.CUA[.!=4)*D$E!!+A!pB68<A!.dJ0.U8;C!-.B!/B1O5.!U.0f!.B!`AB10!-.!0.610C1E

E$d:34=2&@2<&5<&Q=2_5:&UC<&79A53:<62;&<C&i79C7Q=:;&6:34297=:;E

|!4,#A5/!|4,#A5/!>f!}o29=8!NBAUa~E!E$<&:;6:&45<62&:=&35<82&#"&479478:7E

2,G222

Page 28: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

4,#A5/!`AB5.E!E(m297&_5:&:i7=5732;&:=&Q=2_5:&:=&35<82&.)&479478:7E

oCA!>1UA!<5L!8C6.0.UAC6.!-.B!B.C95A[.!D<ABB6AB?!.U!O5.!C1!.d8U6.Cc!>1<1!JA06.!-.!BA!U8C6Ad8Uc!BAU!v.U605>650AU!-.!>1C601BvE!!+A!N5C>81CAB8-A-!O5.!B1U!B.C95A[.U!60A-8>81CAB.U!U.!-A!>1C!.d6.CU81C.U!.C!BA!U8C6Ad8Uc!.C!D<ABB6AB?!U.!0.U5.B`.!>1C!<.CUA[.U!A!1/[.61UE

E$;695@6597;&6C42&)pE.37==67=V!ABBZBAUU.U!U8=.!e!HPPP!!!!!!!!8Nb05.7}+97<;@9C46!Ua1T7!Sq*57<67;&@=7;:;TSu!>0~E

.37==67=V!ABBZBAUU.U!U8=.!e!HPPP!!!!!!!!8Nb05.7}+97<;@9C46!Ua1T7!Sq*57<67;&@=7;:;TS~!!!!!!!!8N(ABU.7}+97<;@9C46!Ua1T7!Sq#2&;2<&67<67;&=7;&@=7;:;TS~E+97<;@9C46!>0E

E$;695@6597;&6C42&)pE|!'E&/"#!0%"1(%(!|

'E&/"#!>f!FFE

I'E&/"#!rr!HM!f!P!!!!8Nb05.7}0%"1(%(!>f!P~!!!!8N(ABU.7}0%"1(%(!>f!F~E

+97<;@9C46!Ua1T7!S:=&<D3:92&Sh!'E&/"#!AUD608C9h!S&6C:<:&479C878&CA57=&7&Sh!0%"1(%()AUD608C9u!>0E

E$;695@6597;&6C42&)pE|!'E&/"#!0%"1(%(!|

'E&/"#!>f!FFE0%"1(%(!>f!I'E&/"#!rr!HM!f!P!8Nb05.7}P~!8N(ABU.7}F~E

+97<;@9C46!Ua1T7!S:=&<D3:92&Sh!'E&/"#!AUD608C9h!S&6C:<:&479C878&CA57=&7&Sh!0%"1(%()AUD608C9u!>0E

E$;695@6597&6C42&oU)'$E|!1'(/:!|1'(/:!>f!FE}1'(/:!s!FP~!!!!Ta8B.b05.7}!!!!!!!!+97<;@9C46!Ua1T7!1'(/:u!>0E

2RG222

Page 29: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

!!!!!!!!1'(/:!>f!1'(/:!`!F!!!!~E

E$;695@6597;&6C42&p"%EF!617!FP!-17}71'(/:!|!+97<;@9C46!Ua1T7!1'(/:u!>0~EF!617!FP!/L7!H!-17}71'(/:!|!+97<;@9C46!Ua1T7!1'(/:u!>0~E

HK!68<.U%.J.A67}+97<;@9C46!Ua1T7!S1S~E+97<;@9C46!>0E

@U!<5L!8C6.0.UAC6.!`.0!BA!8<JB.<.C6A>8;C!-.B!B1U!<X61-1U!`.D$RR3a`.D$V3a6)*2$V!L!6)*2$RR3a`.D$V3a6)*2$V!JA0A!.C6.C-.0!>1<1!N5C>81CAC!BAU!v.U605>650AU!-.!>1C601Bv!>1C!1/[.61U!L!<.CUA[.UE!

&!B1U!/B1O5.c!6A</8XCc!U.!B.U!J5.-.!A>68`A0!>1C!A095<.C61UE!!+A!U8C6Ad8U!JA0A!-.N8C80!5C!/B1O5.!O5.!C.>.U86A!A095<.C61U!JA0A!.`AB5A0U.!.U!BA!U8958.C6.7

]V).-D($,&1UCOCYZB.$231,$2^E

]V).-D($,&1UCV).-D($,&1WCOCYZB.$231,$2^E

HA0A!A>68`A0!5C!/B1O5.!O5.!0.O58.0.!5C!A095<.C61!U.!5UA!.B!<.CUA[.!=4)*D$Vc!JA0A!A>68`A0!5C1!O5.!0.O58.0.!2!A095<.C61U!U.!5UA!.B!<.CUA[.!=4)*D$V4)*D$Vc!L!AUQ!U5>.U8`A<.C6.!JA0A!/B1O5.U!>1C!^!1!<fU!A095<.C61UE

E$=&3:<;7d:&]82>&9:_5C:9:&5<&Q=2_5:&@2<&5<&79A53:<62E|!35&%!|35&%!>f!PEnIH!I!K!M!FF!FIM!-17}70"1&#!|!35&%!>f!35&%!`!0"1&#~E+97<;@9C46!Ua1T7!35&%u!>0E

E'2&3C;32&:=&3:<;7d:&]@2==:@6>E|!0"#(5*-#3!|0"#(5*-#3!>f!nIH!I!K!M!FF!FIM!>1BB.>67}70"1&#!|!0"1&#!l!0"1&#~E+97<;@9C46!Ua1T7!0"#(5*-#3u!>0E

E(&=7;&@2=:@@C2<:;&.296:8*2==:@6C2<&;:&=:;&45:8:&:;4:@C?C@79&5<&Q=2_5:&@2<&H&79A53:<62;&@232&@234797829E|!*#,/**16'!|*#,/**16'!>f!.296:8*2==:@6C2<!U106#B1>?7}7:!72!|!:!U8=.!s!2!U8=.~E*#,/**16'!A--7!S5<&;69C<A&3B;&=79A2SE

2SG222

Page 30: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

*#,/**16'!A--7!S5<&;69C<ASE*#,/**16'!A--7!nI]5<!]7997^!]@2<!g;C3Q2=2;ME+97<;@9C46!Ua1T7!*#,/**16'u!>0E

xc!J10!pB68<1c!U.!J5.-.C!-.>BA0A0!`A08A/B.U!6.<J10AB.U!AB!/B1O5.!>1C!BA!U8958.C6.!U8C6Ad8UE

]OC4).3)"*$`$(B1.)*COCYZB.$231,$2^E

]V).-D($,&1UCOCOC4).3)"*$`$(B1.)*COCYZB.$231,$2^E

G+=&"61($+;

D.!J5.-.C!8CU.06A0!>1<.C6A081!.C!>5ABO58.0!JA06.!-.B!>;-891E!!+1U!>1<.C6A081U!.U6fC!.C>.00A-1U!.C60.!>1<8BBAU!-1/B.UE!!@B!J08<.0!>1<.C6A081!-.!5C!<X61-1!U.!>1CU8-.0A!>1<.C6A081!-.B!<X61-1E

C:6+#+-#&-FB&=/*+

@B!U8958.C6.!<X61-1!-.!.[.<JB1!<5.U60A!<5>a1U!-.!B1U!AUJ.>61U!-.!BA!U8C6Ad8U!-.B!B.C95A[.!D<ABB6AB?E

3W62820:$d:34=2>!%"$5&/'-#!!!!E$;6:&:;&5<&4:_5:t2&3W6282&_5:&35:;697&i79C7;&8:&=7;&4796:;&8:&=7&&&&;C<67kC;&8:=&=:<A57d:&.37==67=V1

&&&&$=&3W6282&6C:<:&:<iX2&8:&3:<;7d:;&Z<79^h&aC<79^&^&b:^c298u&&&&&8:@=797&79A53:<62;&^&i79C7Q=:;&6:34297=:;u&7@@:8:&7&5<7&i79C7Q=:&&&&A=2Q7=u&5;7&=C6:97=:;&@232&7997^h&@m797@6:9h&;^3Q2=h&;69C<Ah&C<6:A:9&&&&^&?=276u&5;7&=7;&4;:582Gi79C7Q=:;&695:h&?7=;:h&<C=h&;:=?&^&;54:9u&5;7&&&&Q=2_5:;&@2<&^&;C<&79A53:<62;h&@2<&^&;C<&i79C7Q=:;&6:34297=:;&7=&&&&Q=2_5:u&m7@:&5<7&7;CA<7@CY<u&8:i5:=i:&5<&9:;5=6782&7=&?C<7=Cn79&^h&&&&?5<873:<67=3:<6:h&<2&m7@:&<787&D6C=1

&&&&a7;782&:<&:=&3W6282&:<@2<69782&:<>

&&&&m664>vvcCVC1@;15C5@1:85v,C;57=o29V;v(`;37==`3:6m28`6m76`5;:;`7==`2?`6m:`.37==67=V`;^<67kE

!!!!|!G%"1%4,/9/&0#"%,!4,#A5/_#'`%"1%4,/9/&0#"%,!|

!!!!695:!w!?7=;:!C16!w!I<C=!8U*8BM!8N(ABU.7!};:=?!aAB6~E

!!!!G%"1%4,/9/&0#"%,!>f!;:=?!U8=.!`!;54:9!U8=.E

!!!!4,#A5/_#'`%"1%4,/9/&0#"%,!>f!}

^3G222

Page 31: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!|!G%"1%4,/9/&0#"%,F,[,#A5/!|!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!G%"1%4,/9/&0#"%,F,[,#A5/!>f!FE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!G%"1%4,/9/&0#"%,F,[,#A5/!>f!G%"1%4,/9/&0#"%,F,[,#A5/!`!F&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&~E!!!!4,#A5/_#'`%"1%4,/9/&0#"%,!`AB5.E

!!!!nIy7!]7!S7S!F!F1PM!!!!!!!!-17!}7/%*B!|!+97<;@9C46!Ua1T7!I/%*B!>BAUU!CA<.Mu!Ua1T7!S&Su!>0~E

!!!!j!%"$5&/'-#!s!G%"1%4,/9/&0#"%,

<'44.82'").9

oC!A</8.C6.!D<ABB6AB?!6QJ8>1!>5.C6A!>1C!<5>aAU!a.00A<8.C6AU!O5.!AU8U6.C!.C!BA!6A0.A!-.!-.UA001BB1!-.!U1N6TA0.E!!D.9pC!.B!.U68B1!O5.!.U>198<1U!JA0A!.B!B8/01c!.dJB8>A0.<1U!BAU!a.00A<8.C6AU!U.9pC!B1!0.O58.0AC!B1U!.[.<JB1U!O5.!-.UA001BBA<1U!.C!.B!>AJQ65B1!sgPAC1U!A!BA!$/0Aht

5234'4-.1*'1:+.9'91I1J4.8'7$4=9

+A!8<A9.C!-.!5C!D<ABB6AB?!>5.C6A!>1C!>8.C61Uc!U8!C1!<8B.Uc!-.!>BAU.U!>1C!N5C>81CAB8-A-!AJ01`.>aA/B.!J10!C5.U601!-.UA001BB1E

+AU!>BAU.U!O5.!`8.C.C!.C!D<ABB6AB?!C1U!/08C-ACc!.C60.!160AU!>1UAUc!BA!U8958.C6.!N5C>81CAB8-A-7

#D3:92;>[email protected]!61-1!68J1!-.!Cp<[email protected]!>1<A!NB16AC6.c!N0A>>81C.Uc!.6>E

*2=:@@C2<:;>!@B!N0A<.T10?!-.!>1B.>>81C.U!-.!D<ABB6AB?!.U!5C1!-.!B1U!<fU!AC68951U!L!<fU!N5C>81CAB.U!O5.!.d8U6.C!.C!BA!A>65AB8-A-E!+A!B8U6A!-.!>1B.>>81C.U!8C>B5L.!b)-c!'$&c!!.7$.$791**$%&31,c!'1.&$791**$%&31,c!83%&31,).;c!.6>E

.69C<A>!D1J106.!JA0A!>A-.CAU!-.!>A0A>6.0.U!-.!/L6.U!L!>A-.CAU!O5.!U1J106AC!>A0A>6.0.U!5C8>1-.E

a22=:7<>!+AU!>BAU.U!b11*$),c!`.D$!L!6)*2$!U.!5UACc!.C60.!160AU!>1UAUc!JA0A!8<JB.<.C6A0!AB95CAU!-.!BAU!v.U605>650AU!-.!>1C601BvE

*92<2=2AX7>!ZBAU.U!>1<1!8)&$c!`3($c!8)&$<,7`3($c!c1,&:c!d$$\c!e$).c!

/9B?C@2;>!D<ABB6AB?!68.C.!<5>a1!O5.!`.0!>1C!.B!-.UA001BB1!-.!BAU!8C6.0NA>.U!-.!5U5A081!90fN8>AUE!@C!B1U!D<ABB6AB?!>1<JB.6A<.C6.!A561">1C6.C8-1U!I>1<1!DO5.A?M!61-1!B1!0.N.0.C6.!AB!J01>.UA<8.C61!90fN8>1!.U6f!8<JB.<.C6A-1!.C!D<ABB6AB?!Lc!J10!.C-.c!.U!8CUJ.>>81CA/B.!L!<1-8N8>A/B.!J10!.B!5U5A081E!D.!>5.C6AC!>1C!1J.0A>81C.U!2'!/fU8>AU!I>1<1!#86#6BM!aAU6A!U1J106.!JA0A!90fN8>1U!^'!>1C!$J.C:+E!@B!DO5.A?c!A!BA!N.>aAc!68.C.!U1J106.!JA0A!>1B10.U!>1C!.B!>ACAB!ABNA!I60ACUJA0.C>8AMc!AC68"AB8AU8C9c!0.C-.08=A-1!-.!bb(!Ib05.!bLJ.!(1C6UMc!.6>E

.69:73>!]AL!`.>.U!O5.!.U!C.>.UA081!>1</8CA0!1J.0A>81C.U!-.!A>>.U1!A!B1U!.B.<.C61U!-.!5CA!>1B.>>8;C!>1C!1J.0A>81C.U!-.!8CU.0>8;C!-.!.B.<.C61UE!!+1U!6QJ8>1U!<.CUA[.U!-.!.C5<.0A>8;C!-.!BAU!

^FG222

Page 32: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. !"#$"%&%'(#)*#')+&%,,-%,.

>1B.>>81C.U!-.!D<ABB6AB?!C1!J.0<86.C!8CU.06A0!.B.<.C61U!<8.C60AU!U5>.-.!BA!86.0A>8;CE!!+A![.0A0O5QA!-.!>BAU.U!-.!D60.A<!J.0<86.!BA!86.0A>8;C!-.!>1B.>>81C.U!A!BA!`.=!O5.!BA!8CU.0>8;C!-.!.B.<.C61UE!!+A!<.6AN10A!-.!B1U!sU60.A<U!-.!1/[.61Ut!N5C>81C;!!6AC!/8.C!.C!D<ABB6AB?!O5.c!A!JA0680!-.!.C61C>.Uc!U.!5UA!JA0A!A>>.-.0!A!N5.C6.U!-.!-A61U!.d6.0CAU!.C!D<ABB6AB?!L!.C!<5>a1U!B.C95A[.U!108.C6A-1U!A!1/[.61UE

o:7V&%:?:9:<@:;>!D.!J5.-.!aA>.0!5C!5U1!A`AC=A-1!-.B!0.>1B.>610!-.!/AU50A!568B8=AC-1!0.N.0.C>8AU!-X/8B.U!A!1/[.61UE!!+AU!0.N.0.C>8AU!-X/8B.Uc!AB!>1C60A081!-.!BAU!0.N.0.C>8A!C10<AB.U!1!N5.06.Uc!C1!.`86AC!O5.!5C!1/[.61!U.A!0.>BA<A-1!J10!.B!0.>1B.>610E!!oC!1/[.61!J5.-.!U.0!0.>BA<A-1!J10!.B!0.>1B.>610!>5AC-1!C1!6.C9A!0.N.0.C>8AU!.C!A/U1B561c!1!6.C9A!U;B1!0.N.0.C>8AU!-X/8B.UE!!P5L!p68B!JA0A!8<JB.<.C6A0!>A>a.Uc!J11B!-.!8CU6AC>8AUc!<.>AC8U<1U!-.!N8CAB8=A>8;C!-.!1/[.61Uc!.6>E!

-5=6C6m9:78C<A>!@B!D<ABB6AB?!U1J106A!<5B686a0.A-8C9!-.U-.!B1U!8C8>81UE!!D.!>5.C6A!>1C!5CA!08>A!`A08.-A-!-.!>BAU.U!JA0A!aA>.0!>1<J56A>8;C!>1C>500.C6.!-.!N10<A!U.C>8BBAE!!+AU!>BAU.U!0.1%$22CIH01>.U1!�!ba0.A-M!L!'$()B:1.$!ID.<fN101M!U80`.C!-.!/AU.!JA0A!BA!J0190A<A>8;C!>1C!6a0.A-UE

$k@:4@C2<:;>!D<ABB6AB?!>5.C6A!>1C!5C!<1-.0C1!.UO5.<A!-.!.d>.J>81C.UE!!&!-8N.0.C>8A!-.!1601U!B.C95A[.Uc!61-A!BA!8<JB.<.C6A>8;C!-.!.d>.J>81C.U!.U6f!.U>086A!.C!.B!<8U<1!B.C95A[.E!@C60.!160AU!>1UAUc!.B!<.>AC8U<1!-.!.d>.J>81C.U!-.!D<ABB6AB?!J.0<86.!>1C68C5A0!>1C!BA!.[.>5>8;C!.C!.B!J5C61!U8958.C6.!-1C-.!1>5008;!BA!.d>.J>8;CE

-:67@=7;:;>!b1-1!.C!D<ABB6AB?!.U!5C!1/[.61E!!b1-1U!B1U!1/[.61U!68.C.C!5CA!>BAU.E!!+AU!>BAU.Uc!>1<1!61-1c!U1C!1/[.61UE!+AU!>BAU.U!68.C.C!U5!>BAU.c!O5.!U.!BBA<A!BA!P.6A>BAU.E!!b1-1!.B!<.>AC8U<1!-.!a.0.C>8A!.U6f!<1-.BA-1!>1C!>BAU.U!L!<.6A>BAU.UE

.:7;C8:>!@B!D.AU8-.!.U!5C!N0A<.T10?!JA0A!aA>.0!AJB8>A>81C.U!T./!/AUA-1!.C!>1C68C5A681CUE!!oC!N0A<.T10?!>1<1!D.AU8-.!U8<JB8N8>A!<5>aQU8<1!.B!<AC.[1!-.B!NB5[1!-.!5C!U8681!T./E

.Z<C6>!@U6.!.U!.B!N0A<.T10?!vJA-0.v!-.!61-1U!B1U!N0A<.T10?U!-.!5C86"6.U68C9!O5.!.d8U6.CE

-7A37>!#AU.!-.!-A61U!-.!1/[.61Uc!<5B685U5A081c!O5.!J.0<86.!5CA!>1<JB.6A!60ACUJA0.C>8A!A!BA!a10A!-.!J.0U8U680!1/[.61UE!

(K%&2".1L24)&.+

+A!<fO58CA!`8065AB!I`8065AB!<A>a8C.!"!\PM!-.!DO5.A?!.U6f!.U>086A!.C!DO5.A?E!!@B!605>1!>1CU8U6.C6.!.C!BA!568B8=A>8;C!-.!5C!U5/>1C[5C61!-.B!B.C95A[.!D<ABB6AB?!O5.!J5.-.!U.0!60A-5>8-1!A!B.C95A[.!Z!L!>1<J8BA-1!JA0A!BA!JBA6AN10<A!C.>.UA08AE!@U1!J.0<8C6.c!.C60.!160AU!>1UAUc!5C!C8`.B!-.!J106A/8B8-A-!<5L!AB61!O5.!>1C`8.06.!A!DO5.A?!.C!5CA!-.!BAU!J8.=AU!-.!U1N6TA0.!<fU!J106A/B.!>1C6AC-1c!A!BA!N.>aAc!5CAU!2e!JBA6AN10<AU!-8N.0.C6.UE!b1-1!.B!J01>.U1!-.!-.J50A>8;C!-.!BA!<fO58CA!`8065AB!J5.-.!aA>.0U.!.C!DO5.A?c!.U61!NA>8B86A!<5>a1!BA!8C`.U689A>8;C!>1C!A0O586.>650AU!-.!\P!-8N.0.C6.Uc!.d6.CU81C.Uc!.6>E!!

+A!\P!-.!DO5.A?c!A!BA!N.>aAc!.U!-.!^2!/86U!IA5CO5.!LA!.d8U6A!5CA!\P!-.!4_!/86UME!Z5.C6A!>1C!5C!0.>1B.>610!-.!/AU50A!I9A0/A9.!>1BB.>610M!9.C.0A>81CAB!-.!<5L!AB6AU!J0.U6A>81C.UE

^2G222

Page 33: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

QC1"+;-1-*1-@A(1R

\A<1U!A!8C601-5>80C1U!-.!BB.C1!.C!BA!J0190A<A>8;C!>1C!D<ABB6AB?E!!&J0.C-.0!A!J0190A<A0!>1C!D<ABB6AB?!.U!<5>a1!<fU!O5.!AJ0.C-.0!5CA!U8C6Ad8U!L!5CA!B8/0.0QA!-.!>BAU.Uu!.U!<5>a1!<fU!8<J106AC6.!>1C1>.0!>1<1!568B8=A0!.B!A</8.C6.!.C!C5.U601!/.C.N8>81!L!.C6.C-.0!O5.!8<JB8>A!568B8=A0!5C!A</8.C6.!-.!1/[.61U!`8`1UE

D<ABB6AB?!C1!.U!U;B1!5C!B.C95A[.!-.!>1<J56A>8;Cc!!D<ABB6AB?!.U!5C!A</8.C6.!-1C-.!>1C`8`.C!1/[.61U!L!.U61U!8C6.0A>6pAC!.C60.!UQ!.C`8fC-1U.!<.CUA[.UE!!b1-A!BA!>1<J56A>8;C!1>500.!>1<1!.B!0.U5B6A-1!-.B!.C`Q1!-.!<.CUA[.U!A!B1U!1/[.61UE!!Z5AC-1!5C!5U5A081!8C6.0A>6pA!>1C!5C!A</8.C6.!D<ABB6AB?c!.U6.!A</8.C6.!U.!`.!<1-8N8>A-1!>1<1!.N.>61!-.!.UA!8C6.0A>>8;CE

%.>10-.<1U!O5.!.C!D<ABB6AB?!61-1!.U!5C!1/[.61E!+AU!>BAU.Uc!B1U!<X61-1Uc!.6>!I1/`8A<.C6.M!6A</8XC!U1C!1/[.61U!L!JA0A!8<JA>6A0!U1/0.!.BB1U!-./.<1U!.C`8A0B.U!<.CUA[.UE!@U61!8<JB8>A!O5.!BA!6A0.A!-.!J0190A<A>8;C!C1!.U!-8N.0.C6.!A!>5ABO58.0!160A!>1UAU!O5.!U.!aA9A!.C!5C!A</8.C6.!D<ABB6AB?7!$/[.61U!O5.!0.>8/.C!<.CUA[.U!L!O5.!0.A>>81CAC!>1<1!.N.>61!-.!.U.!.C`Q1!-.!<.CUA[.UE

@C!D<ABB6AB?!C1!.d8U6.!-8N.0.C>8A!.C60.!s-.UA001BB1t!L!s.[.>5>8;Ctc!U8C1!O5.!BA!J0190A<A>8;C!U.!aA>.!<1-8N8>AC-1!1/[.61U!<8.C60AU!.U61U!.U6fC!N5C>81CAC-1E!!HA0A!8B5U60A0!<.[10!.U6A!8-.A!`A<1U!A!-.UA001BBA0c!JAU1!A!JAU1c!5C!.[.<JB1!U.C>8BB1E!!@B!.[.<JB1c!6A</8XCc!C1U!U.0`80f!JA0A!61<A0!5C!J08<.0!>1C6A>61!>1C!BAU!J08C>8JAB.U!a.00A<8.C6AU!-.!-.UA001BB1!>1C!D<ABB6AB?E

^^G222

Page 34: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

($*2#20."*$1M3D')$91L2B$9

\A<1U!A!>0.A0!5CA!>BAU.!-.!C1</0.!9*3$,&$!O5.!U.0QA!BA!0.J0.U.C6A>8;C!.C!C5.U601!A</8.C6.!-.!B1U!>B8.C6.U!0.AB.U!-.!5C!U5J5.U61!U8U6.<A!JA0A!NA>650A>8;CE!HA0A!.U1!C1U!`AB-0.<1U!-.!5CA!BAU!a.00A<8.C6AU!O5.!D<ABB6AB?!C1U!/08C-A!JA0A!8C6.0A>65A0!>1C!.B!A</8.C6.7!@B!#01TU.0!-.!ZBAU.UE

HA0A!aA>.0C1U!-.B!#01TU.0!-.!ZBAU.U!A>68`A<1U!.B!<.Cp!-.B!P5C-1!aA>8.C-1!>B8>!U1/0.!.B!P5C-1!-.!DO5.A?!L!U.B.>>81CA<1U!BA!1J>8;C!v1B$,___v!JA0A!1/6.C.0!.B!U5/<.Cp7

4,$56%*"

@+0#692,#0$"A85)#07/20)#',52'20%0,#(#10+#10(2&A10#692,#10$"A85)#10120++%&%0cD,71:

@+0B/'(#0(20*7/2%-021015&5+%"0%+021)"5,#"5#0(20+#10151,2&%10#>2"%,54#10%),/%+2130>2"#0"21>2,%'(#0+%0"2$+%06A15)%0(20*&%++,%+-C0D#(#0210/'0E692,#:

@+0B/'(#0210/'0#692,#0F0(51>#'2&#10(20/'%04%"5%6+20$+#6%+0>%"%0%))2(2"0%02+0++%&%(%0d1.*7:0!#(2&#1024%+/%"0%+$/'%10(20+%1015$/52',21012',2')5%10>%"%042"0)#&#0"2%))5#'%02+0&/'(#C

78-&'0-($),$+","($-,$56%*"79"(,*0)#+#"C08","(0+5$<,G2++#H0&/)<I5$<,2":9"(,*0)#+#"C08","(0H<5,2:

74,$56%*"$#)$"#+6()+)$:"($6%$0%#/-%/)7

^_G222

Page 35: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

9"(,*08+%1<:

7;636)&"#$+"%$),$'"(*)$*),$56%*"79"(,*06#"(2"J5(,<C0<:9"(,*06#"(2".#+#"C08","(0"2(:

+5.91!U.B.>>81CA<1U!BA!1J>8;C!v".1f2$.C>"?v7

x!1/6.C.<1U!.B!#01TU.0!-.!ZBAU.U7

^eG222

Page 36: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

=(">#)($*)$8,-#)#

@1,%0<2""%&52',%0'#10>2"&5,2042"0F0&#(585)%"0,#(%10+%10)+%12107/20,2'2&#102'0'/21,"#0%&652',2:0!#(2&#10,%&65K'0)"2%"0#02+5&5'%"0)%,2$#"=%10(20)+%12130)+%12130)%,2$#"=%10(20&K,#(#10F0&K,#(#1:

.#&#0*7/2%-021,A021)"5,#02'0150&51&#3021,%0<2""%&52',%0'#10>2"&5,2042"0%61#+/,%&2',20,#(#02+08/')5#'%&52',#0(20*7/2%-:00;21(202+0.#&>5+%(#"0<%1,%0+%10L2',%'%130(21(20+#10MN&2"#10@',2"#10<%1,%0+#10,5>#10O##+2%'#130,#(#045156+20F0,#(#0&#(585)%6+2:

?0:"#$*)$=(">#)($*)$8,-#)#

@P51,2'0(582"2',210,5>#10(20O"#H12"0(20.+%1213015'02&6%"$#0>"A),5)%&2',20,#(#10)#&>%",2'0+%08/')5#'%+5(%(06A15)%:00@'021,20+56"#0/1%"2&#102+0Q28%),#"5'$0O"#H12"07/230%(2&A10(206"5'(%"'#10+%10)%"%),2"=1,5)%10(2+06"#H12"06A15)#30'#106"5'(%0#>)5#'210>%"%0+%0"28%),#"5R%)5?'0(2+0)?(5$#:

@B!/01TU.0!.U6f!>1<J5.U61!J08C>8JAB<.C6.!J10!_!JAC.B.U!U5J.0810.U!L!5C!JAC.B!8CN.0810E!@C!B1U!JAC.B.U!U5J.0810.U!.C>1C60A0.<1U!"!-.!8=O58.0-A!A!-.0.>aA!"!BAU!ZA6.910QAU!-.!ZBAU.Uc!BAU!ZBAU.Uc!BAU!ZA6.910QAU!-.!PX61-1U!L!B1U!PX61-1UE

^4G222

Page 37: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

8-/)3"(@-#$*)$8,-#)$A$51/"*"#

D%',#0+%10)%,2$#"=%10(20)+%1210)#&#0+%10)%,2$#"=%10(20&K,#(#10'#0,52'2'0/'%012&A',5)%0>%"%02+0*&%++,%+-02'0150&51&#3015'#07/2015"42'0>%"%0(#)/&2',%"02+0(512S#0%$"/>%'(#0)+%1210F0&K,#(#10>#"08/')5#'%+5(%(0%>/',%'(#0%0&29#"%"02+02',2'(5&52',#0(2+0151,2&%0>#"0+%10>2"1#'%1:

@'0*&%++,%+-0120+220&/)<#0&A10)?(5$#0(2+07/2012021)"56230%1=07/20,#(#02+02',#"'#0>"#&/2420+%021)"5,/"%0(20)?(5$#0+5&>5#0F0(#)/&2',%(#0F0,#(#02+0,52&>#07/20/12&#102'021)"565"0)?(5$#0+5&>5#0210"2)#&>2'1%(#:

D8!U.B.>>81CA<1U!5CA!-.!BAU!1J>81C.U!-.B!JAC.Bc!.C!B1U!JAC.B.U!U5/U8958.C6.U!`.0.<1U!BA!8CN10<A>8;C!>100.UJ1C-8.C6.!A!BA!U.B.>>8;CE!H10!.[.<JB1c!U8!U.B.>>81CA<1U!.C!.B!J08<.0!JAC.B!BA!>A6.910QA!-.!>BAU.U!gh$.,$*E!"#$%&2gc!`.0.<1U!.C!.B!U.95C-1!JAC.B!BAU!>BAU.U!-.C601!-.!.UA!>A6.910QA!I>1<1!b11*$),c!8$B$,7$,&2<..);c!6)*2$c!c$22)-$'$,7c!.6>ME!!'.!BA!<8U<A!N10<Ac!U8!Aa10A!U.B.>>81CA<1U!BA!>BAU.!b11*$),!.C!.B!U.95C-1!JAC.Bc!`.0.<1U!.C!.B!6.0>.0!JAC.B!BAU!>A6.910QAU!-.!<X61-1U!-.!.UA!>BAU.u!L!U8!U.B.>>81CA<1U!5CA!>A6.910QA!-.!<X61-1U!>1<1!g%1,&.1**3,-g!`.0.<1U!.C!.B!pB68<1!JAC.B!B1U!<X61-1UE!!H10!pB68<1c!U8!U.B.>>81CA<1U!5C1!-.!B1U!<X61-1Uc!`.0.<1U!.C!.B!JAC.B!8CN.0810!.B!>;-891!-.!-8>a1!<X61-1E

^,G222

Page 38: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!>0.A0.<1U!5CA!>A6.910QA!-.!>BAU.U!JA0A!J1C.0!C5.U60A!>BAU.!9*3$,&$!-.C601E!HA0A!B190A0!.U1!J.-8<1U!.B!<.Cp!>1C6.d65ABc!aA>8.C-1!>B8>!>1C!.B!/16;C!A=5B!-.B!0A6;Cc!-.B!JAC.B!-.!>A6.910QAU!-.!>BAU.U!!L!U.B.>>81CA<1U!BA!1J>8;C!v)77C3&$(___vE

BC6)-D$A$),$E-/F%

*7/2%-0210&/+,5>+%,%8#"&%0F0%0+%082)<%08/')5#'%02'0&A10(20TU0>+%,%8#"&%10(582"2',21:0I5'/P304%"5#101%6#"210(20V'5P30J5'(#H130W>>+230!;W0)#&#05!%730F0/'0+%"$#02,):00D%',%10>+%,%8#"&%10'#102P>#'2'0%0%+$/'#10>"#6+2&%30/'#0(202++#10210)#&#0/,5+5R%"0+#10(582"2',210,5>#10(20"%,#'2107/20+%10(51,5',%10>+%,%8#"&%10>#122':

!#"0&#,54#10<51,?"5)#107/20120"2&#',%'0%+0"%,?'07/20,2'=%0+%0)#&>/,%(#"%0X2"#P0W+,#30+#10Y06#,#'210(2+0"%,?'0120+#10'#&6"%0)#'0)#+#"21C0E"G"30H&-(0,,"0F0HI6,:

="/F%$E"G"J

@+0O#,?'0Q#9#02102+07/20120/1%0>%"%012+2))5#'%":0@'0>"A),5)%&2',20,#(%10+%10>+%,%8#"&%102+0O#,?'0Q#9#0120&%>2%0%+06#,?'0>"5')5>%+0(20+%0>+%,%8#"&%0Z'#"&%+&2',202+06#,?'05R7/52"(#0(2+0"%,?'30#02+0[,%>[0(2+0+A>5R\:

="/F%$H&-(0,,"J

@+0O#,?'0W&%"5++#0120/,5+5R%0>%"%0>2(5"02+0]%+#0(20+#10#692,#10$"A85)#1:00@'0I5'/P0120/,5+5R%02+06#,?'0(2"2)<#302'0J5'(#H102+06#,?'0(2+0&2(5#0#0WID^)+5)0F02'0W>>+20E>,^)+5):

="/F%$HI6,J

@+0O#,?'0WR/+02102+07/20120/1%0>%"%0#6,2'2"02+0&2'N0)#',2P,/%+:0@'0I5'/P0ZF0,#(#10+#101%6#"210(20V'5P\0#6,2'2&#102+0&2'N0)#',2P,/%+0<%)52'(#0)+5)0)#'02+06#,?'0(2+0&2(5#0(2+0"%,?'302'0J5'(#H10120#6,52'202+0&2'N0)#',2P,/%+0)#'0/'0)+5)0(2+06#,?'0(2"2)<#0F02'0W>>+20120#6,52'202+0&2'N0)#',2P,/%+0)#'0.&(^)+5):

^RG222

Page 39: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

L!B5.91!8C90.UA<1U!.B!C1</0.!-.!BA!C5.`A!>A6.910QAc!.C!C5.U601!>AU1!6.>B.A<1U!g6)%&D.)%31,g

H0.U81CA<1U!+,&.1!1!aA>.<1U!>B8>!.C!.B!/16;C!<%%$B&>2?

K"+"$*)$/)+,-*"

@'0*7/2%-02+08#)#0(20,2)+%(#0+#0,52'202+0)#',"#+07/2021,K'0152'(#0%>/',%(#10>#"02+0>/',2"#0(2+0"%,?':

W',210(20,2)+2%"0%+$#0<%F07/20%12$/"%"1207/2021,2&#10%>/',%'(#0%+0)#',"#+0)#'02+0"%,?':

^SG222

Page 40: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

H0190A<A0!>1C!D<ABB6AB?!.U!.C`8A0!<.CUA[.U!A!1/[.61U!O5.!`8`.C!.C!5C!A</8.C6.E!H0190A<A0c!>1C!D<ABB6AB?c!C1!.U!<fU!O5.!<1-8N8>A0!5C!A</8.C6.!-.!1/[.61U!L!A-AJ6A0B1!A!C5.U60A!C.>.U8-A-E

&B!>0.A0!5CA!C5.`A!>A6.910QAc!.U6A!U.!U.B.>>81CA!A561<f68>A<.C6.!L!`.<1U!.C!.B!JAC.B!8CN.0810!5CA!JBAC68BBA!I5C!6.<JBA6.M!JA0A!>0.A0!5CA!>BAU.!C5.`AE!!HA0A!>0.A0!5CA!C5.`A!>BAU.!6.C.<1U!O5.!.C`8A0B.!5C!<.CUA[.!A!BA!U5J.0>BAU.c!JA0A!.U1!C1U!J1-.<1U!`AB.0!-.!BA!JBAC68BBA!O5.!.B!#01TU.0!-.!ZBAU.U!C1U!1N0.>.E!!D8<JB.<.C6.!0..<JBA=A<1U!-1C-.!-8>.!5)($!a'D"%*)22!J10!.B!C1</0.!-.!BA!>BAU.!O5.!O5.0.<1U!>0.A0E

_3G222

Page 41: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!-./.<1U!A>.J6A0!C5.U601!>A</81!5UAC-1!BA!1J>8;C!v)%%$B&C>2?v!.B!<.Cp!>1C6.d65AB!-.B!JAC.B!8CN.0810E

_FG222

Page 42: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!`A<1U!A!>0.A0!5CA!8CU6AC>8A!-.!C5.U60A!0.>8XC!>0.A-A!>BAU.!9*3$,&$E!!HA0A!.`AB5A0!AB91!-.!>;-891c!J1-.<1U!568B8=A0!160A!a.00A<8.C6A!O5.!5C!A</8.C6.!D<ABB6AB?!C1U!/08C-A7!@B!i10?UJA>.E

HA0A!A/080!5C!i10?UJA>.!5UA0.<1U!C5.`A<.C6.!.B!P.Cp!-.B!P5C-1c!L!.B!U5/<.Cp!1B$,___!L!-.C601!BA!1J>8;C!vf1.\2B)%$C>f?v!1!BA!1J>8;C!v':1D&Cd1.\2B)%$vE

9"(D#:-+)

@+0J#"-1>%)20Z21>%)5#0(20,"%6%9#\0210/'%042',%'%07/20'#10>2"&5,20#"(2'%"02+0)?(5$#07/204%&#1024%+/%'(#0(208#"&%05',2"%),54%02'0'/21,"#0%&652',2:

@+0J#"-1>%)20210/'%0<2""%&52',%0)#'42'52',230>2"#02105&>#",%',20"21%+,%"07/202'0*&%++,%+-0120>/2(2024%+/%"0)?(5$#02'0)/%+7/52"0>%'2+0(20,2P,#0F0'#01?+#02'0+#10J#"-1>%)21:

?0:"#$*)$9"(D#:-+)

V'0[*<#/,0J#"-1>%)2[0210/'0H#"-1>%)207/20<%)201F',%P^<5$<+5$<,0)#'8#"&20+#0/,5+5R%&#130>%"%021,20+56"#0/1%"2&#1021,%0<2""%&52',%0F%07/20210/'0>#)#0&A10451,#1%07/202+0J#"-1>%)20,"%(5)5#'%+:00;20,#(%108#"&%130(21(202+0>/',#0(20451,%0(208/')5#'%+5(%(0'#02P51,20'5'$/'%0(582"2')5%02',"20%&6%10%+,2"'%,54%1:

_2G222

Page 43: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!

&a10A!68J.A<1Uc!.C!.B!0.>8XC!A/8.061!i10?UJA>.c!B1!U8958.C6.7

*=C:<6:!C.T

+1!U.B.>>81CA<1U!>1C!.B!0A6;Cc!A>68`A<1U!.B!<.Cp!>1C6.d65AB!.!8C`1>A<1U!BA!1J>8;C!v3,2B$%&C3&C>3?vE

42-,6-%*"$8F*03"

W+024%+/%"0)?(5$#0*&%++,%+-0(208#"&%05',2"%),54%30,2'2&#10_0#>)5#'2101#6"20)#&#0,"%,%"0+%0

_^G222

Page 44: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

"21>/21,%:

*"$0/C0@4%+/%"02+0)?(5$#0205$'#"%"0+%0"21>/21,%:

:(0%/$0/C0@4%+/%"02+0)?(5$#0205&>"5&5"30>#"0>%',%++%30+%0"2>"212',%)5?'0)#&#0'&.3,-0(20+%0"21>/21,%:

0%#:)+/$0/C0@4%+/%"02+0)?(5$#0205'1>2))5#'%"02+0"21/+,%(#:0@1,%0210+%0#>)5?'0/,5+5R%(%02'02+0292&>+#:

)L:,"()$0/C0@4%+/%"02+0)?(5$#0F02P>+#"%"02+0"21/+,%(#:0@+0YZB*1.$.0210#,"#08#"&%,#0(20+,2B$%&1.:

B)%/)%+0-#$*)$4G)&:,"$:-(-$)2-,6-(.$0&:(0&0(.$0%#:)++0"%-($"$)L:,"(-(

7H,36%-#$+"#0/-#$+"%$B/(0%37

M6%$#/(0%3M:M6%$#/(0%3M0.0M$+"%+-/)%-*"$-$"/("M:M6%$#/(0%3$*)$+0)(/"$/-&-N"M015R2:MO#/(0%3OM0&%,)<C0M6%$#/(0%3M:

7H,36%"#$%P&)("#7Q<:R0S0Q:ZR0S0Q\0%1`+#%,:QTR<RUVWXUQUYVZVQ:R[[[08%),#"5%+:

7H,3"$*),$56%*"79"(,*02P,2',:9"(,*0)#+#":

74L:()#0"%)#$="",)-%-#7R0\0Q:/(6):]-,#):

7^/(-#$4L:()#0"%)#7%0,:_-/)0,#(%F:?0&)0'#H:?0&)0&5++512)#'(1D#Q/'C0aR[[[08%),#"5%+b:

7H,36%-#$+"#0/-#$+"%$+",)++0"%)#7B&-,,/-,D0%++.+%1121:B&-,,/-,D0%++.+%11210)#++2),CaC!"#$0c0!"#$0'%&2b:B&-,,/-,D0)+%11M%&21:B&-,,/-,D0)+%11M%&21015R2:B&-,,/-,D0)+%11M%&21012+2),CaC!"#$0c0MOB/(0%3OM0&%,)<C0!"#$b:

@U6A!A>>8;C!C1U!/08C-A0f!160A!-.!BAU!a.00A<8.C6AU!-.!D<ABB6AB?7!@B!)CUJ.>610E

__G222

Page 45: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

`%#:)+/"(

@+0d'1>2),#"0210/'%0<2""%&52',%07/20'#10>2"&5,2042"0)#&#021,A0)#&>/21,#0/'0#692,#0F30,%&65K'30'#10>2"&5,202'45%"+20&2'1%921:

!#(2&#1042"07/204%"5%6+210(205'1,%')5%0,52'20F07/204%+#"210,52'2'021,%104%"5%6+210(205'1,%')5%:00@'0*&%++,%+-0%61#+/,%&2',20,#(#10+#10#692,#10>/2(2'012"05'1>2))5#'%(#1:

@'02+0>%'2+0(20+%104%"5%6+210(205'1,%')5%0<%F0T04%"5%6+210[21>2)5%+21[C02$*a0F0)**C3,2&C4).:0W+012+2))5#'%"02$*a01204202'02+0>%'2+0(20+%0(2"2)<%0+%0"2>"212',%)5?'0)#&#0*,"5'$0(2+0#692,#05'1>2))5#'%(#:00*5012012+2))5#'%0)**C3,2&C4).012042'0,#(%10+%104%"5%6+210(205'1,%')5%0)#&#01508/212'0/'%01#+%:

@'02+0>%'2+0(20)?(5$#0120>/2(205',"#(/)5"0)/%+7/52"012',2')5%0*&%++,%+-30+%0N'5)%01%+42(%(02107/20+%04%"5%6+2021>2)5%+02$*a0%>/',%0%+0#692,#05'1>2))5#'%(#:

&a10A!`A<1U!A!<1-8N8>A0!5C!J1>1!BA!>BAU.!9*3$,&$c!J.01!B1!aA0.<1U!U8C!>.00A0!.B!)CUJ.>610!A!BA!8CU6AC>8AE!@U!-.>807!`A<1U!A!<1-8N8>A0!BA!.U605>650A!-.B!1/[.61!<8.C60AU!.U6.!.U6X!`8`1E!!\1B`.<1U!AB!#01TU.0!L!C1U!AU.950A<1U!O5.!.U6XC!U.B.>>81CA-AU!BA!>A6.910QA!-.!>BAU.!v6)%&D.)%31,v!L!BA!>BAU.!9*3$,&$E!!@C60.!BAU!>1<8BBAU!U8<JB.U!O5.!.U6fC!-.60fU!-.!BA!JABA/0A!3,2&),%$i).3)"*$5)($2V!68J.A<1U!B1!U8958.C6.7

_eG222

Page 46: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&>.J6A<1U!B1U!>A</81U!>1<1!B1!a8>8<1U!AC6.0810<.C6.!I<.Cp!>1C6.d65ABc!1J>8;C!v)%%$B&C>2?vME

a"/bc)A#

W+$/'%10(20+%10#>)5#'210(20+#10B2'N107/208/5&#10/,5+5R%'(#0(/"%',202+0292&>+#0,52'2'0/'%0+2,"%02',"20>%"K',2151:00@1%0+2,"%02102+0<#,^-2F0F0>#(2&#105'4#)%"021%10#>)5#'210>"215#'%'(#0WID0F0+%0+2,"%:

4G)&:,"J

".1f2$.C>"? j </`E"

f1.\2B)%$C>\? j </`E\

)%%$B&C>2? j WID^1

3,2B$%&C3&C>3? j WID^5

$ZB*1.$C3&C>+? j WID^BWGe*.VIW^5

D8!61-1!UAB8;!/8.Cc!LA!-./.0QA<1U!`.0!>1<1!.B!)CUJ.>610!A!BA!8CU6AC>8A!-.!ZB8.C6.!O5.!-.[A<1U!A/8.061!Aa10A!C1U!<5.U60A!5CA!C5.`A!`A08A/B.!-.!8CU6AC>8AE

&a10A!`A<1U!A!J1C.0B.!5C!C1</0.!A!C5.U601!>B8.C6.E!HA0A!.U1!U.B.>>81CA<1U!BA!`A08A/B.!-.!8CU6AC>8A!.C!.B!JAC.B!-.!BA!8=O58.0-A!L!B5.91!8C90.UA<1U!.C!.B!JAC.B!-.!BA!-.0.>aA!B1!U8958.C6.7

_4G222

Page 47: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

S4:892S

&>.J6A<1U!B1U!>A</81U!I<.Cp!>1C6.d65AB!L!1J>8;C!v)%%$B&C>2?v!1!&+b"UME

HA0A!6.0<8CA0!.U6.!.[.<JB1c!UAB-0.<1U!-.!C5.U601!A</8.C6.!90A/AC-1!61-1U!B1U!>A</81UE!&/08<1U!.B!P.Cp!-.B!P5C-1!L!.U>19.<1U!BA!1J>8;C!v2)4$C),7CkD3&vE

Z5AC-1!.C60.<1U!C5.`A<.C6.!A!C5.U601!D<ABB6AB?c!6.C-0.<1U!61-1!.B!A</8.C6.!.C!.B!<8U<1!.U6A-1!O5.!B1!-.[A<1UE

@B!.[.<JB1!O5.!A>A/A<1U!-.!aA>.0!-.[A!.C!.`8-.C>8A!5CA!-8N.0.C>8A!N5C-A<.C6AB!-.B!D<ABB6AB?!>1C!B1U!B.C95A[.U!-.!J0190A<A>8;C!s60A-8>81CAB.Ut!-1C-.!5C!1/[.61!C5C>A!U1/0.`8`.!A!5C!>A</81!-.B!

_,G222

Page 48: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

J0190A<AE!!@C!D<ABB6AB?!.U!J1U8/B.c!L!.U!aA/865ABc!<1-8N8>A0!5C!U8U6.<A!<8.C60AU!.U6A!N5C>81CAC-1E

@U6.!.[.<JB1c!A-.<fUc!C1U!<1U60;!AB95CAU!-.!BAU!a.00A<8.C6AU!J08C>8JAB.U!-.!D<ABB6AB?!I#01TU.0c!i10?UJA>.!.!)CUJ.>610M!L!`8<1U!5C!J1>1!-.!>1<1!U.!5UACE

xA!.U6A<1U!J0.JA0A-1U!JA0A!JAUA0!A!5C!.[.<JB1!<fU!>1<JB.[1E

_RG222

Page 49: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

E.49'41*'1N(513.9.*$1'"1&".1E2+.

HA0A!J01>.UA0!A0>a8`1U!jP+c!>1UA!O5.!aA0.<1U!.C!.B!J0;d8<1!.[.<JB1c!5UA0.<1U!5CA!a.00A<8.C6A!O5.!U8<JB8N8>A!<5>a1!BA!.U>08650A!-.!JA0U.0U!-.!jP+E!!@B!JA0U.0!O5.!568B8=A0.<1U!N5C>81CA!-.!BA!U8958.C6.!<AC.0A7!ZA-A!`.=!O5.!.B!JA0U.0!.C>5.C60A!5C!C5.`1!6A9!-.!jP+c!B.!.C`QA!5C!<.CUA[.!AB!1/[.61!O5.!.U6f!<fU!A008/A!.C!U5!J8BAu!L!.B!0.U5B6A-1!-.B!.C`Q1!-.B!<.CUA[.!U.!AJ8BAE!!Z5AC-1!.U.!<8U<1!6A9!6.0<8CAc!.B!1/[.61!U.!-.UAJ8BA!-.!BA!J8BAE!!@B!J08<.0!1/[.61!AJ8BA-1!.U!5C1!J5.U61!A!<AC1!L!.U!O58.C!J01>.UA0f!B1U!6A9U!-.!<fU!AB61!C8`.BE!!@B!<.CUA[.!O5.!U.!B.!.C`QA!AB!1/[.61!O5.!.U6f!A008/A!-.!BA!J8BA!68.C.!>1<1!A095<.C61!5C!-8>>81CA081!O5.!>1C68.C.!B1U!A608/561U!-.B!6A9E

\.A<1U!5C!.[.<JB1!B1!U5N8>8.C6.<.C6.!U8<JB.!>1<1!JA0A!ACAB8=A0B1!J10!>1<JB.61E!)<A98C.<1U!5C!A0>a8`1!jP+!>1<1!.B!U8958.C6.7

!"#$%&"'

CCC!($)*+%"C)B$**371Mlm)&$2lC,1(".$Mlb1"l'

CCCCCC!&,)$--,+%C%3D7)7Ml/12C<,-$*$2lC,D($.1MlUWnolCB.143,%3)Ml9<lC%)**$Ml03,$Cp7_l.'

CCC!.($)*+%"'

CCC!($)*+%"C)B$**371Ml'(3&:lC,1(".$Mlq1$l'

CCCCCC!,%/+)0"-,+%1-+%2"-2+'

CCCCCCCCC!$0",3C73.$%%31,Ml#1$2H3.1_)3"3$(_%1(l.'

CCCCCCCCC!2$3$/+%+C,D($.1MlrrrEstusstul.'

CCCCCC!.,%/+)0"-,+%1-+%2"-2+'

CCCCCC!&,)$--,+%C%3D7)7Ml5$fCe1.\lC,D($.1MlUWsrolCB.143,%3)Ml5elC%)**$Mld_CUu&:C<4$_l.'

CCC!.($)*+%"'

!."#$%&"'

@U6.!A0>a8`1!>1C68.C.!B1U!-A61U!-.!5CA!A9.C-Au!BA!A9.C-A!68.C.!-.C601!J.0U1CAU!L!BAU!J.0U1CAU!68.C.C!-80.>>81C.U!L!8CN10<A>81C.U!-.!>1C6A>61u!A!U5!`.=!BAU!8CN10<A>81C.U!-.!>1C6A>61!68.C.C!6.BXN1C1U!L!-80.>>81C.U!-.!.<A8BE

)CU6058<1U!AB!JA0U.0!JA0A!O5.!.C`Q.!B1U!U8958.C6.U!<.CUA[.U!U.9pC!.B!6A9!O5.!U.!J01>.U.7

4"#5&$5678 7$%*"9$5"5:%;,")

S)-$,7)R =%.$).<-$,7)V

SB$.21,)R =%.$).0$.21,)V

S73.$%%31,R =%.$).83.$%%31,V

S3,a1.()%31,E%1,&)%&1R =%.$).+,a1.()%31,91,&)%&1V

S$()3*R =%.$).Yc)3*V

S&$*$a1,1R =%.$).`$*$a1,1V

_SG222

Page 50: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

H1C-0.<1U!.C!BA!J8BAc!AC6.U!-.!>1<.C=A0!.B!JA0U.1c!5C!1/[.61!<-$,7)2E!!@U.!1/[.61!.U!>AJA=!-.!>0.A0!L!AB<A>.CA0!A9.C-AUc!.U!-.>807!.U!>AJA=!-.!0.UJ1C-.0!AB!<.CUA[.!=%.$).<-$,7)V

&C6.U!-.!>1<.C=A0c!BA!J8BA!-.B!JA0U.0!>1C68.C.!B1!U8958.C6.7

una Agendas

B&-,,/-,D$+"%$4#/0,"

@'0*&%++,%+-02P51,20/'05(5#&07/20)#'151,202'0'#&6"%"0%0+#10#692,#10)#'0[%[0#0[%'[0Z/'#0#0/'%02'0d'$+K1\0F02+0'#&6"20(20+%0)+%12:

;2021%08#"&%0/'05'1,%')5%0(20+%0)+%120'&.3,-0120+%0++%&%0%*,"5'$0#0[%0*,"5'$[30/'%05'1,%')5%0(208)&$0120++%&%0%;%,20#0[%0;%,2[30/'%05'1,%')5%0(20+,&$-$.0210%'d',2$2"0#0[%'0d',2$2"[302,):

@+0+/$%"05(2%+0>%"%0+22"0,#(%10+%10)#'42')5#'210205(5#&107/20120/1%'02'0*&%++,%+-02102+0+56"#0f*&%++,%+-0H5,<0*,F+2g0Z42"0656+5#$"%8=%\:

(A:<87;ee@9:79(A:<87>!%U1*-1#'%"2!!!!E*9:7&5<7&<5:i7&7A:<87&^&=7&A57987&:<&:=&9:@:4629E!!!!|!%$/'(%!|!!!!%$/'(%!>f!(A:<87!C.TE!!!!;:=?!A--&9.C-A7!%$/'(%E!!!!j!%$/'(%E

d"&'()_)8,-#)\\%"&'()_)51/"*"

./%'(#0210'2)21%"5#04#+)%"02+0)?(5$#08/2',20(20/'0&K,#(#02'0>%>2+30120/,5+5R%0+%0)#'42')5?'0(2021)"565"+#0)#'02+0'#&6"20(20+%0)+%123012$/5(#0(20hh0F30%0)#',5'/%)5?'302+0'#&6"20(2+0&K,#(#:

@1,#0210/'%0)#'42')5?'0>%"%02+0>%>2+0F0'#0210>%",20(20+%015',%P510*&%++,%+-:

Z1<1!.B!0.U5B6A-1!-.!BA!.`AB5A>8;C!-.B!<.CUA[.!=%.$).<-$,7)V!.U!5CA!<-$,7)c!.U6A!U.!AJ8BA!L!.U!Aa10A!BA!0.UJ1CUA/B.!-.!>1C6.U6A0!AB!<.CUA[.!=%.$).0$.21,)V

+A!J8BAc!.C!.U6.!J5C61c!>1C68.C.!B1!U8958.C6.7

e3G222

Page 51: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

una Agendauna Agendas

(A:<87ee@9:79!:9;2<7>!%U1*-1#'%"2!!!!E*9:7&5<7&<5:i7&4:9;2<7&^&=7&A57987&:<&:=&9:@:4629E!!!!|!0/"3#'%!|!!!!0/"3#'%!>f!!:9;2<7!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!AJ.BB8-17!I%U1*-1#'%"2!A67!S74:==C82SM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!C1</0.7!I%U1*-1#'%"2!A67!S<23Q9:SME!!!!;:=?!A--H.0U1CA7!0/"3#'%E!!!!j!0/"3#'%E

@U6.!<X61-1!-.!BA!>BAU.!<-$,7)!.U!<5L!U8<8BA0!AB!AC6.0810!<X61-1!=%.$).<-$,7)V!.d>.J61!J10O5.!.U6.!<X61-1!>1CU8-.0A!B1U!A608/561U!J0.U.C6.U!.C!.B!6A9!SB$.21,)Rc!O5.!`8.C.C!.C!.B!A095<.C61!A'8>681CA0Lc!O5.!JA0A!>0.A0!5CA!0$.21,)!>1C!C1</0.!L!AJ.BB8-1E

&a10A!U.!AJ8B;c!.C!BA!J8BAc!5CA!0$.21,)c!AUQ!O5.!Aa10A!.U6.!1/[.61!.U!.B!0.UJ1CUA/B.!-.!>1C6.U6A0!AB!<.CUA[.!=%.$).83.$%%31,V

una Persona nombre='Bob' apellido='Gates'

una Agendauna Agendas

!:9;2<7ee@9:790C9:@@C2<>!%U1*-1#'%"2!!!!E*9:7&5<7&<5:i7&8C9:@@C2<&^&=7&A57987&:<&:=&9:@:4629E!!!!|!(1"/**1#'!|!!!!(1"/**1#'!>f!0C9:@@C2<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>ABB.7!I%U1*-1#'%"2!A67!S@7==:SM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!C5<.017!I%U1*-1#'%"2!A67!S<53:92SM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>85-A-7!I%U1*-1#'%"2!A67!S@C5878SM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J01`8C>8A7!I%U1*-1#'%"2!A67!S492iC<@C7SME!!!!;:=?!A--'80.>>81C7!(1"/**1#'E!!!!j!(1"/**1#'E

+A!'80.>>81C!-.`5.B6A!J10!.B!<X61-1!AC6.0810!U.!AJ8BAc!-.[AC-1!BA!J8BA!-.!BA!U8958.C6.!N10<A7

eFG222

Page 52: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

una Direccion calle='Pine Rd.' numero='1239' ciudad='Los

Angeles' provincia='CA'una Persona nombre='Bob'

apellido='Gates'una Agendauna Agendas

&a10A!.B!JA0U.0!U.!.CN0.C6Ac!J10!J08<.0A!`.=!.C!.U6.!.[.<JB1c!AB!a.>a1!O5.!5C!6A9!U.!>8.00AE!!@C!.U6.!J5C61!.B!6A9!S73.$%%31,R!U.!>8.00Ac!.C61C>.U!.B!JA0U.0!-.UAJ8BA!BA!-80.>>8;CE

una Persona nombre='Bob' apellido='Gates'

una Agendauna Agendas

&a10A!U.!>8.00A!.B!6A9!SB$.21,)Rc!AUQ!O5.!U.!-.UAJ8BA!BA!J.0U1CAE

una Agendauna Agendas

&a10A!U.!.C`QA!1601!<.CUA[.!=%.$).0$.21,)V!A!BA!&9.C-A!O5.!.U6f!.C!BA!J8BAc!>0.AC-1!5CA!C5.`A!H.0U1CA!L!AJ8BfC-1BAE

una Persona nombre='Joe' apellido='Smith'

una Agendauna Agendas

&a10A!U.!.C`QA!5C!<.CUA[.!=%.$).+,a1.()%31,91,&)%&1V!A!BA!J.0U1CA!>1<1!0.A>>8;C!AB!6A9!S3,a1.()%31,E%1,&)%&1RE

!:9;2<7ee@9:79)<?2937@C2<*2<67@62>!%U1*-1#'%"2!!!!E*9:7&5<7&<5:i7&C<?2937@C2<&8:&@2<67@62&^&=7&A57987&:<&:=&9:@:4629E!!!!j!C<?2937@C2<*2<67@62!>f!)<?2937@C2<*2<67@62!C.TE

+A!J8BA!O5.-A!Aa10A!-.!BA!U8958.C6.!N10<A7

e2G222

Page 53: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

una InformacionContactouna Persona nombre='Joe'

apellido='Smith'una Agendauna Agendas

&!>1C68C5A>8;Cc!.B!1/[.61!O5.!.U6f!A008/A!-.!BA!J8BA!I5CA!)CN10<A>81CZ1C6A>61M!0.>8/.!.B!<.CUA[.!=%.$).Yc)3*V

)<?2937@C2<*2<67@62ee@9:79$-7C=>!%U1*-1#'%"2!!!!E*9:79&5<&<5:i2&:37C=&^&=2&A57987&:<&:=&9:@:4629E!!!!|!/T%1,!|!!!!/T%1,!>f!$-7C=!-80.>>81C7!I%U1*-1#'%"2!A67!S8C9:@@C2<SME!!!!;:=?!A--@PA8B7!/T%1,E!!!!j!/T%1,E

@B!0.U5B6A-1!-.B!<X61-1!AC6.0810!I5C!@PA8BM!U.!AJ8BAc!J.01!8C<.-8A6A<.C6.!-.UJ5XU!U.!-.UAJ8BA!LA!O5.!.B!6A9!S$()3*R!U.!>8.00A!L!C5.`A<.C6.!O5.-A!A008/A!-.!BA!J8BA!BA!)CN10<A>8;C!-.!Z1C6A>61E

@B!6A9!S&$*$a1,1RCU.!!J01>.UA!-.!N10<A!U8<8BA0!AB!6A9!S$()3*R

)<?2937@C2<*2<67@62ee@9:79+:=:?2<2>!%U1*-1#'%"2!!!!E*9:79&5<&<5:i2&6:=W?2<2&^&=2&A57987&:<&:=&9:@:4629E!!!!|!-/,/@#'#!|!!!!-/,/@#'#!>f!+:=:?2<2!C5<.017!I%U1*-1#'%"2!A67!S<53:92SME!!!!;:=?!A--b.B.N1C17!-/,/@#'#E!!!!j!-/,/@#'#E

&!>1C68C5A>8;C!U.!>8.00A!.B!6A9!S3,a1.()%31,E%1,&)%&1R!L!U.!-.UAJ8BA!BA!)CN10<A>8;C!-.!Z1C6A>61E

&a10A!U.!J01>.UA!.B!6A9!S73.$%%31,R!-.!895AB!N10<A!O5.!U.!J01>.U;!JA0A!BA!J.0U1CA!AC6.0810c!AJ8BAC-1!.B!0.U5B6A-1!L!-.UAJ8BfC-1B1!.C!>5AC61!U.!>8.00A!.B!6A9E

@B!.U6A-1!-.!BA!J8BAc!.C!.U6.!J5C61c!.U!.B!U8958.C6.7

una Persona nombre='Joe' apellido='Smith'

una Agendauna Agendas

e^G222

Page 54: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

xA!.U6A<1U!6.0<8CAC-1!-.!J01>.UA0!.B!jP+c!U;B1!0.U6A!J01>.UA0!.B!>8.00.!-.B!6A9!SB$.21,)R!L!.B!>8.00.!-.B!6A9!S)-$,7)RE!!@U!-.>80!O5.!U.!-.UAJ8BA!BA!J.0U1CA!L!B5.91!BA!A9.C-Ac!O5.-AC-1!BA!J8BA!.C!.B!<8U<1!.U6A-1!O5.!.U6A/A!AC6.U!-.!>1<.C=A0!.B!JA0U.1E

una Agendas

]A/8.C-1!O5.-A-1!.dJB8>A-1!>1<1!N5C>81CA!.B!JA0U.0!-.!jP+!/AUA-1!.C!5CA!J8BAc!J1-.<1U!>1<.C=A0!>1C!.B!8<J106A-10!-.!i8?8J.-8AE

e_G222

Page 55: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

O8;$4).*$41*'1P2=2;'*2.

&a10A!C1U!1>5JA0.<1U!-.!5C!.[.<JB1!5C!J1>1!<fU!>1<JB.[1!Lc!A!U5!`.=c!<fU!>1<JB.61E!]A0.<1U!5C!8<J106A-10!-.!B1U!-A61U!-.!BA!i8?8J.-8AE

90D0:)*0-

J5-5>2(5%0210/'0>"#F2),#0>%"%021)"565"0)#&/'5,%"5%&2',202')5)+#>2(5%10+56"2102'0,#(#10+#105(5#&%1:0`/208/'(%(%0>#"0i5&&F0J%+210F0I%""F0*%'$2"06%1A'(#1202'02+0)#')2>,#0H5-507/20>2"&5,20)"2%"0)#+2),54%&2',20(#)/&2',#10H263015'07/20+%0"24515?'0(2+0)#',2'5(#012%0'2)21%"5%0%',210(201/0%)2>,%)5?'0>%"%012"0>/6+5)%(#02'0+%0"2(:0I%042"15?'02'05'$+K10)#&2'R?02+0jk0(202'2"#0(20TUUj:0D"210%S#10F0&2(5#0(21>/K1302'012>,52&6"20(20TUU_30/'#10jU:UUU02(5,#"210%),54#10,"%6%9%6%'02'0j:UUU:UUU0(20%",=)/+#102'0&A10(20kU05(5#&%1:

!%"%0&A105'8#"&%)5?'C0<,,>Cll21:H5-5>2(5%:#"$lH5-5lJ5-5>2(5%

W")<54#10(20+%0J5-5>2(5%C

! <,,>Cll(#H'+#%(:H5-5&2(5%:#"$l0 00F

! <,,>Cll&2,%:H5-5&2(5%:#"$lH5-5ld&>#",5'$m%mJ5-5>2(5%m(%,%6%12m(/&>m5',#mB2(5%J5-50 0

@B!J01L.>61!i8?8J.-8A!/08C-A!61-A!BA!8CN10<A>8;C!-.!U5U!U8681U!-8UJ1C8/B.U!JA0A!/A[A0!-.U-.!)C6.0C.6E!!D.!J5.-.C!/A[A0!61-1U!B1U!A06Q>5B1U!-.!BAU!-8N.0.C6.U!.C>8>B1J.-8AU!-.!-8N.0.C6.U!8-81<AU!.C!5C!A0>a8`1!jP+E

\A<1U!A!60A6A0!-.!BB.`A0!A!>A/1!.B!.[.<JB1!J0190A<AC-1!-.!BA!N10<A!<fU!8C>0.<.C6AB!J1U8/B.c!J0190A<AC-1!61-1!B1!O5.!J1-A<1U!.C!.B!'.J50A-10E

\.A<1U!5C!jP+!-.!.[.<JB1!UA>A-1!-.!BA!i8?8J.-8A!.C!+A6QCc!J.01!U8<JB8N8>A-1!L!A>106A-1!JA0A!J1-.0!ACAB8=A0B1!.C!61-A!U5!.d6.CU8;C7

!0$&,"<,=,'

CC!*,2$,%/+'

CCCC!*,2$%"0$'i3%3B)$73)!.*,2$%"0$'

CCCC!>"*$':&&BVQQ*)_f3\3B$73)_1.-Qf3\3Q0)-3,)vB.3()!.>"*$'

CCCC!#$%$)"2+)'c$73)d3\3CU_t7$4$*!.#$%$)"2+)'

CCCC!-"*$'a3.2&E*$&&$.!.-"*$'

CCCC!%"0$*("-$*'

CCCCCC!%"0$*("-$C\$;MlEUl''B$%3)*32!.%"0$*("-$'

CCCCCC!%"0$*("-$C\$;MlwlC.'

CCCCCC!%"0$*("-$C\$;MlUl'832BD&)&31!.%"0$*("-$'

eeG222

Page 56: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

CCCC!.%"0$*("-$*'

CC!.*,2$,%/+'

CC!("#$'

CCCC!2,23$'<2&.1,1(3)!.2,23$'

CCCC!,&'U!.,&'

CCCC!)$;,*,+%'

CCCCCC!,&'xtuut!.,&'

CCCCCC!2,0$*2"0('WwwuEUwEnU`WWVWrVxny!.2,0$*2"0('

CCCCCC!-+%2),>?2+)'

CCCCCCCC!,('rw_Unt_WUx_Uww!.,('

CCCCCC!.-+%2),>?2+)'

CCCCCC!2$@2'ggg<2&.1,1(3)ggg!.2$@2'

CCCC!.)$;,*,+%'

CC!.("#$'

CC!("#$'

CCCC!2,23$'<DZ3*3D(!.2,23$'

CCCC!,&'W!.,&'

CCCC!)$;,*,+%'

CCCCCC!,&'xxWtx!.,&'

CCCCCC!2,0$*2"0('WwwuEUwEUU`UtVxnVnuy!.2,0$*2"0('

CCCCCC!-+%2),>?2+)'

CCCCCCCC!,('WUs_sW_nn_Urx!.,('

CCCCCC!.-+%2),>?2+)'

CCCCCC!-+00$%2'"$&&$.C*)&3,Ca.1(C3&)*;C]]V3&Vz&$,&$V!."3*3D2c)-32&$.^^!.-+00$%2'

CCCCCC!2$@2'gg{3%C)77$,7)$C2D,&C,1&31,$2C)7CD2D(C*$%&1.32!.2$@2'

CCCC!.)$;,*,+%'

CC!.("#$'

CC!("#$'

CCCC!2,23$'z21.V<.%:3")*7C63&|%:$2&$.a3$*7!.2,23$'

CCCC!,&'n!.,&'

CCCC!)$;,*,+%'

CCCCCC!,&'WuWrt!.,&'

CCCCCC!2,0$*2"0('WwwWEUUEWt`UrVnnVuny!.2,0$*2"0('

CCCCCC!-+%2),>?2+)'

CCCCCCCC!,(':12&UuuEUtx_B11*WUnxu_3,&$."D23,$22_3&!.,('

CCCCCC!.-+%2),>?2+)'

CCCCCC!-+00$%2'K!.-+00$%2'

CCCCCC!2$@2''&D7312D2C2D(C3,Cz,34$.23&)&$C`1.1,&1,3$,2$!.2$@2'

CCCC!.)$;,*,+%'

CC!.("#$'

!.0$&,"<,=,'

e4G222

Page 57: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

\.<1U!O5.!5C!S($73)f3\3R!68.C.!-.C601!S23&$3,a1R!L!SB)-$Rc!O5.!B1U!SB)-$R!68.C.C!-.C601!S.$43231,Rc!L!O5.!BAU!S.$43231,R!68.C.C!.B!6.d61!-.!BAU!Jf98CAUE

bA</8XC!`.<1U!O5.!AB95C1U!6A9U!U.!5UAC!U;B1!JA0A!<.6.0!-A61U!.C!N10<A!-.!D608C9!IS23&$,)($Rc!S")2$Rc!S-$,$.)&1.Rc!S%)2$Rc!S,)($2B)%$Rc!S&3&*$Rc!S37Rc!S&3($2&)(BRc!S3BRc!S&$Z&Rc!S%1(($,&Rc!.6>M!JA0A!.U61U!>AU1U!.B!JA0U.0!C1U!1N0.>.!160A!N10<A!-.!J01>.UA0!.B!6A97!-.N8C8<1U!5C!6.d6"6A9!L!.B!1/[.61!-.!A008/A!-.!BA!J8BA!0.>8/80f!5C!<.CUA[.!>1C!5C!D608C9!>1<1!A095<.C61!>1C6.C8.C-1!.B!6.d61!.C>.00A-1!J10!.B!6A9c!L!U.!AJ8BA0f!.B!<8U<1!1/[.61E

Z1C!.U6.!.[.<JB1!J0.6.C-1!<1U60A0!BAU!NA>8B8-A-.U!JA0A!BA!J0190A<A>8;C!8C>0.<.C6AB!O5.!C1U!/08C-A!5C!A</8.C6.!>1<1!D<ABB6AB?E!H1U!.UA!<8U<A!0A=;C!>0.1!O5.!LA!a.<1U!ACAB8=A-1!-.<AU8A-1!.B!jP+!AC6.U!-.!>1<.C=A0E!g@<J.>.<1U!LA!<8U<1h

+1!J08<.01!O5.!6.C.<1U!O5.!aA>.0!.U!8CU6AC>8A0!.B!JA0U.0!L!J1C.0B.!BA!<QC8<A!8CN10<A>8;C!>1<1!JA0A!.<J.=A0!A!J0190A<A0c!>0.A<1U!5CA!>BAU.!c$73)f3\3!L!-.C601!J1C-0.<1U!5C1U!<X61-1U!-.!>BAU.!JA0A!8CU6AC>8A0!P.-8AT8?8U!-.U-.!A0>a8`1U!jP+E

51/"*"#$*)$8,-#)$2#T$51/"*"#$*)$`%#/-%+0-

I%10)+%12102'0*&%++,%+-01#'30#645%&2',230,%&65K'0#692,#1:00I%0)+%120&#(2+%0+%105'1,%')5%130F0+%0)+%120(20+%0)+%120Z+%0&2,%)+%12\0&#(2+%0+%0)+%12:

I%10)+%1210"2)562'0&2'1%9210Z)#&#0)/%+7/52"0#692,#\0F0+#10&K,#(#10(20)+%1201#'0+%08#"&%0(20"21>#'(2"0%021#10&2'1%921:

!#"0292&>+#C0@'0*&%++,%+-0+#10)#'1,"/),#"210'#0,52'2'0/'%012&A',5)%021>2)5%+0Z)#&#0150+%0,52'2'02'0i%4%30.nn302,)\:0*#'015&>+2&2',20&K,#(#10(20)+%1207/20,52'2'0+%0"21>#'1%65+5(%(0(20)"2%"05'1,%')5%1:

D%&65K'02108"2)/2',202')#',"%"12302'0+%0)+%1230)#'0&K,#(#107/20#>2"2'01#6"20,#(%10+%105'1,%')5%10(20+%0)+%12:00@92&>+#1C0=)**+,2&),%$230=)**'D"+,2&),%$230=3,2B$%&<**+,2&),%$2302,):

HA0A!.U1!C1U!aA>.<1U!-.!5C!#01TU.0!-.!ZBAU.U!IP.Cp!-.B!P5C-1!kk!!g1B$,___g!!kk!g".1f2$.C>"?g!1!&+b"/ME!!&a10A!>0.A<1U!5CA!>A6.910QA!-.!>BAU.U!JA0A!J1C.0!C5.U60A!>BAU.U!-.C601E!HA0A!B190A0!.U1!J.-8<1U!.B!<.Cp!>1C6.d65AB!IaA>8.C-1!>B8>!>1C!.B!/16;C!A=5B!-.B!0A6;CM!-.B!JAC.B!-.!>A6.910QAU!-.!>BAU.U!!L!U.B.>>81CA<1U!BA!1J>8;C!v)77C3&$(___vE

e,G222

Page 58: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

b.>B.A<1U!.B!C1</0.!-.!C5.U60A!ZA6.910QA!-.!ZBAU.U

!L!A>.J6A<1U

eRG222

Page 59: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!.U6A<1U!B8U61U!JA0A!>0.A0!BA!J08<.0!>BAU.!-.!C5.U601!.[.<JB1E!!HA0A!.U1!0..<JBA=A<1U!-1C-.!-8>.!5)($!a'D"%*)22!J10!.B!C1</0.!-.!BA!>BAU.!O5.!O5.0.<1U!>0.A0c!.C!.U6.!>AU1!P.-8AT8?8E

L!A>.J6A<1U7

eSG222

Page 60: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!O5.!LA!6.C.<1U!C5.U60A!>BAU.!>0.A-A!`A<1U!A!>0.A0!5C1U!<X61-1U!-.!>BAU.c!A!<1-1!-.!>1CU605>610.Uc!JA0A!8CU6AC>8A0!P.-8AT8?8U!-.U-.!A0>a8`1U!jP+E

HA0A!>0.A0!<X61-1U!-.!>BAU.!.C!B59A0!-.!<X61-1U!-.!8CU6AC>8Ac!-./.<1U!U.B.>>81CA0!.B!/16;C!%*)22CO5.!.U6f!-./A[1!-.B!JAC.B!-.!>BAU.UE!!Z5AC-1!B1!aA9A<1Uc!B1U!1601U!2!JAC.B.U!<1U60A0fC!>A6.910QAU!-.!<X61-1U!L!<X61-1U!J.01!-.!>BAU.!.C!B59A0!-.!8CU6AC>8AE!D8!O5.0.<1U!`1B`.0!A!`.0!1!<1-8N8>A0!>A6.910QAU!-.!<X61-1U!L!<X61-1U!-.!8CU6AC>8A!J0.U81CA<1U!.B!/16;C!3,2&),%$E

D.B.>>81CA<1U!.B!/16;C!%*)22c!L!>0.A<1U!5CA!>A6.910QA!-.!<X61-1U!I-.!>BAU.!.C!.U6.!>AU1M!BBA<A-A!g3,2&),%$C%.$)&31,g!5UAC-1!BA!1J>8;C!g,$fC%)&$-1.;___g!-.B!<.Cp!>1C6.d65AB!-.B!JAC.B!-.!>A6.910QAU!-.!<X61-1U!L!B5.91!.B898.C-1!BA!>A6.910QA!-.U-.!BAU!1J>81C.U!1N0.>8-AUE

43G222

Page 61: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

D8!61-1!UAB8;!/8.Cc!BA!0.>8XC!>0.A-A!>A6.910QA!-.!<X61-1U!I-.!>BAU.M!O5.-A!U.B.>>81CA-A!L!.B!/01TU.0!C1U!1N0.>.!5CA!JBAC68BBA!.C!.B!JAC.B!8CN.0810!JA0A!>0.A0!5C!<X61-1!-.C601!-.!.UA!>A6.910QA7

4FG222

Page 62: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

e,-%/0,,-$:-(-$%6)2"#$&1/"*"#

@+0O"#H12"0(20.+%1210'#10#8"2)20/'%0>+%',5++%07/20>#(2&#10/,5+5R%"0>%"%0)"2%"0'/24#10&K,#(#1:

&a10A!8C90.UA<1U!B1!U8958.C6.!.C!.B!JAC.B!8CN.0810c!L!A>.J6A<1U7

!"#$%&'()*$(+,)%+-"1'$))))-."(*/01*/10(2*/&134*15(/+('/"(5(64#"/+(3+(/('/*"57&2#/''*$*+#/*84"&19-

))))d)%"*B1G#)1'3-%'*1%)0%"3/")d

))))-*:"(/('/*"57&2#-))))%"*B1G#),;)%&'(84"(*$)"/%(b',2\1,/e%&/(f)%+-"1'$8

))))-5"(*/'*/&134*15&*/+('/"(5(64#"-))))1'3-%'*1%),;)3('!)'/^8

))))-&134*15&*/('/6*"3("-))))0%"3/"),;)<=>84*5?@*"3(")#'f)%"*B1G#8

))))-'*/&134*15&*/"(5&A1/5"(*+*/(3/('/6"&$("/#:B(4#/+(/'*/6&'*-))))0%"3/")053Bf)1'3-%'*1%8

))))-&134"0&$#3/*'/6*"3("/3#:"(/5#$#/6"#5(3*"/'#3/4*93-))))0%"3/")#'9%$f)C$(+&*D&?&C)3/'(f)E#1=(+&*D&?&,8

))))-'(/6(+&$#3/*'/6*"3("/F0(/7*9*/30/4"*:*B#-))))0%"3/")0%"3/U#*5&/'-8

))))-5(""*$#3/('/*"57&2#-))))%"*B1G#)*,#3/8

))))-+(2#'2($#3/'*/&134*15&*/*'/"($&4(14(/+('/$(13*B(-))))G)1'3-%'*1%

42G222

Page 63: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@U!a10A!-.!.[.>56A0c!J10!J08<.0A!`.=c!C5.U601!8<J106A-10!-.!i8?8J.-8AE!!&/08<1U!5C!i10?UJA>.!IP.Cp!-.B!P5C-1!kk!!g1B$,___g!!kk!g':1D&Cd1.\2B)%$gM!L!6.>B.A<1U!B1!U8958.C6.7

H(+f02"#$*)$)G)&:,"

@+0%")<54#0,5'F:P&+0F0#,"#10%")<54#10/1%(#102'021,20+56"#0120>/2(2'0(21)%"$%"0(21(202+015,5#0H260(2+0+56"#02'0<,,>Cll1&%++,%+-:)#'1/+,%":)#&

@+0%")<54#0,5'F:P&+0)#',52'202P%),%&2',202+0,2P,#02P>/21,#02'0+%0>A$5'%0TT:

D.B.>>81CA<1U!BA!U.C6.C>8A!0.>8XC!6.>B.A-A!L!BA!.`AB5A<1U!>1C!g71C3&C>7?g!I1!&+b"-ME

g\18BAh!g&JA0.>.!J10!J08<.0A!`.=!5C!.0010h!#8.C`.C8-1!AB!<A0A`8BB1U1!L!-8Cf<8>1!<5C-1!-.!D<ABB6AB?E

4^G222

Page 64: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

e()b*):6(-*"(

@+0>"2^(2>/"%(#"0210/'%0<2""%&52',%07/20'#106"5'(%05'8#"&%)5?'01#6"20/'02""#"07/20<%0#)/""5(#02'02+0%&652',20F0'#10>2"&5,20,#&%"0%+$/'%0%))5?'0>%"%01/61%'%"02+0>"#6+2&%:

@+0,=,/+#0(20+%042',%'%0&/21,"%02+0,5>#0(202""#"302'021,20)%1#0210/'0,=>5)#0B211%$2M#,V'(2"1,##(0ZB2'1%920M#0@',2'(5(#\:0@10(2)5"302+0>"2^(2>/"%(#"0'#1021,A0(5)52'(#07/20%+$N'0#692,#0'#01/>#0)#&#0)#',21,%"0%0(2,2"&5'%(#0&2'1%92:00*50%'%+5R%&#10/'0>#)#0&A1042"2&#107/202+0#692,#02'0)/21,5?'0210/'0c$73)f3\330F07/202+0&2'1%9207/20'#02',52'(20210=1,c$73)f3\3V

@1,%042',%'%0'#10#8"2)204%"5%10%+,2"'%,54%10>%"%0>"#)21%"02+02""#"C

A)+-$$&J0.#',5'/%"0)#'0+%0292)/)5?'05$'#"%'(#02+02""#":

B&"%&+%J0W6%'(#'%"0+%0292)/)5?':

C$>?#J0;2>/"%"02+02""#"0)#'02+0(2>/"%(#"0f)#&>+2,#g:

D)$"2$J0."2%"02+0&K,#(#08%+,%',202'0+%0)+%120(2+0#692,#0"2)2>,#"30#02'0%+$/'%0(201/101/>2")+%121:00@1,%0#>)5?'01?+#0%>%"2)20%',20+#102""#"210(2+0,5>#0B211%$2M#,V'(2"1,##(:

+1U!.0010.Uc!-.!>5ABO58.0!68J1c!U8.<J0.!U1C!1J1065C8-A-.U!-.!0.NB.d8;C!U1/0.!C5.U601!U8U6.<A!L!C1U!J.0<86.C!0."`AB8-A0!C5.U60AU!>1C>.J>81C.U!U1/0.!.B!-1<8C81!O5.!.U6A<1U!<1-.BAC-1E

&CAB8=AC-1!BA!8CN10<A>8;C!O5.!C1U!-A!.B!J0."-.J50A-10c!.U!Nf>8B!-A0U.!>5.C6A!O5.!B1!O5.!1>500.!.U!O5.!B.!-8[8<1U!AB!JA0U.0!O5.!.C`8A0A!.B!<.CUA[.!=1,c$73)f3\3V!>5AC-1!.C>5.C60.!5C!6A9!S($73)f3\3Rc!.B!JA0U.0!U.!B1!.C`QA!AB!1/[.61!O5.!.U6f!A008/A!.C!BA!J8BAc!.U!-.>80!O5.!U.!B1!.C`QA!A!C5.U601!1/[.61!P.-8AT8?8E

*1U!AJ01`.>aA<1U!-.!5CA!-.!BAU!J1U8/B.U!A>>81C.U!O5.!C1U!1N0.>.!.B!J0."-.J50A-10c!BA!1J>8;C!-.!>0.A0!.B!<X61-1E!!HA0A!.U1!J0.U81CA<1U!.B!/16;C!9.$)&$E

4_G222

Page 65: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@C!.U6.!<1<.C61!.B!J0."-.J50A-10!C1U!1N0.>.!BA!J1U8/8B8-A-!-.!>0.A0!.B!<X61-1!.C!BA!>BAU.!-.B!1/[.61!0.>.J610c!1!.C!>5ABO58.0A!-.!U5U!U5J.0>BAU.UE!@C!.U6.!>AU1!.B.98<1U!BA!>BAU.!c$73)f3\3E

&!>1C68C5A>8;C!.B!.C610C1!C1U!J0.95C6A!.C!>5AB!>A6.910QA!-.!<X61-1U!O5.0.<1U!>0.A0!C5.U601!<X61-1E

*8C95CA!-.!BAU!>A6.910QAU!1N0.>8-AU!C1U!U80`.c!AUQ!O5.!U.B.>>81CA<1U!BA!1J>8;C!g,$f___g!L!8C90.UA<1U!gB).23,-gE

4eG222

Page 66: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

+.U!J0.U.C61!AB!-.J50A-10c!5CA!a.00A<8.C6A!-1C-.!JAUA0fC!90AC!JA06.!-.B!68.<J1!O5.!568B8>.C!J0190A<AC-1!>1C!D<ABB6AB?E

_):6(-*"(

@+0(2>/"%(#"0210/'%0<2""%&52',%07/20>2"&5,202P%&5'%"0)#&#0#)/""20+%0292)/)5?'0(20)?(5$#0*&%++,%+-:00D%&65K'0>2"&5,20&#(585)%"0+#10&K,#(#10#'^,<2^8+F0F012$/5"0+%0292)/)5?'0(21(202+0>/',#0%',2"5#"0%+0&K,#(#0&#(585)%(#:

44G222

Page 67: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@+0(2>/"%(#"02130,%+042R30/'%0(20+%10<2""%&52',%0)#'0&A10#>)5#'21:00!#(2&#1042"0+%0>5+%0(20)#',2P,#10Z7/208#"&%'02+0)%++^1,%)-\30>#(2&#1042"0F0&#(585)%"0+#10&K,#(#105'4#+/)"%(#102'0+%0292)/)5?'30>#(2&#105'1>2))5#'%"0+#10#692,#10"2)2>,#"2130>#(2&#105'1>2))5#'%"0+#10)#',2P,#10(20292)/)5?'0F042"02+04%+#"0(20+%104%"5%6+210,2&>#"%+210F0+#10%"$/&2',#130>#(2&#1024%+/%"02+0)?(5$#0>%1#0%0>%1#302,):

@+0(2>/"%(#"0'#10#8"2)204%"5%10%+,2"'%,54%10>%"%0>"#)21%"02+02""#"C

A)+-$$&J0.#',5'/%"0)#'0+%0292)/)5?'05$'#"%'(#02+02""#":

E$*2")2J0Q2^)#&2'R%"0+%0292)/)5?'0(21(202+0>/',#012+2))5#'%(#02'0+%0>5+%0(20)#',2P,#1:0*502+0)#',2P,#012+2))5#'%(#0'#02102+01/>2"5#"02'0+%0>5+%30+#10)#',2P,#10>#"0%""56%0120(21)%",%':

F%2+J0*2$/5"0(2>/"%'(#302',"%'(#0%042"02+0)#',2P,#07/20$2'2"%02+0&2'1%9207/2012021,A0>#"02'45%":

4,G222

Page 68: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

G;$)J0*2$/5"0(2>/"%'(#30>2"#01205$'#"%0+#10(2,%++210(2+02'4=#0(2+0&2'1%9207/2012021,A0>#"02'45%":

4H)+?#HJ0*2$/5"0+%0292)/)5?'0F0>%"%"02'0+%0>"5&2"%012',2')5%0(2',"#0(2+0>"?P5&#06+#7/2:

I?335J2"-=J0L2"0+%0>5+%0(20)#',2P,#10)#&>+2,%0F0'#0+%042"15?'0"2(/)5(%07/20120&/21,"%0>#"0(282),#:

KH$)$J0L#+42"0%0"21%+,%"02+0&2'1%9207/2012021,A02'45%'(#:

_):6(-*"($R[[g$)%$B&-,,/-,D

@+0;2>/"%(#"0(20*&%++,%+-021,A021)"5,#0Z)#&#0)%150,#(#02+0*&%++,%+-\02'0*&%++,%+-:00D#(#0210/'0#692,#0Zo./%',%1042)210+#0"2>2,5&#10F%p\0F0+%10)+%12130+#10&K,#(#130F0+#10)#',2P,#10(20292)/)5?'0,%&65K'01#'0,%&65K'0#692,#130%1=07/20210>#156+2021)"565"0/'0(2>/"%(#"0jUUq02'0*&%++,%+-:

.#&#0+#10)#',2P,#10(20292)/)5?'01#'0#692,#10)#&#0)/%+7/52"0#,"#30(20+%0&51&%08#"&%07/202+0(2>/"%(#"0210/'0#692,#0)#&#0)/%+7/52"0#,"#30>#(2&#10<%)2"0)#'02++#10+#0&51&#07/20)#'0)/%+7/52"0#,"#0#692,#:00!#"0292&>+#0>#(2&#10$"%6%"0+%05&%$2'0)#'0/'0(2>/"%(#"0%652",#0F30)/%'(#04#+4%&#10%+0%&652',230>#(2&#1012$/5"0(2>/"%'(#02+0)?(5$#02P%),%&2',202'02+0>/',#0(#'(20+#0(29%&#10%/'7/20>%12'0&21210(21(207/20$"%6%&#10+%05&%$2'0F0+%04#+42&#10%0%6"5":0D%&65K'0120>/2(2'0&#(585)%"0>%"%0%$"2$%"+208/')5#'%+5(%(302,):

@B!-.J50A-10!U.!A/0.!.C!.U.!J5C61c!J10O5.!BA!8<JB.<.C6A>8;C!J10!-.N.>61!O5.!U.!>0.;!-.B!<X61-1!.U!5CA!`.0U8;C!>1C!5C!.0010!O5.!8C-8>A!O5.!6.C.<1U!O5.!>1<JB.6A0B1E

+A!8<JB.<.C6A>8;C!O5.!aA0.<1U!-.!.U6.!<X61-1!.U!>1C!s605>1tE!!oC!1/[.61!-.!>BAU.!c$73)f3\3C0.>8/8;!.B!<.CUA[.!=1,c$73)f3\3V!O5.c!.C!6.10QAc!-./.0QA!>0.A0!5C!P.-8AT8?8E!Z1<1!.B!6A9!S($73)f3\3R!.U6f!U;B1!5CA!`.=!.C!.B!A0>a8`1!IL!J10!.C-.!0.>8/80.<1U!U;B1!5C!<.CUA[.!=1,c$73)f3\3VMc!U8<JB.<.C6.!89C10A<1U!.B!6A9!L!-.`1B`.<1U!.B!<8U<1!1/[.61!JA0A!AJ8BA0E

2<-:8C7cCVC>!%U1*-1#'%"2!!!!!E#2&6C:<:&;:<6C82&@9:79&5<&-:8C7cCVC&;C&;232;&5<&-:8C7cCVCE!!!!j!;:=?

b.>B.A<1U!.U.!<X61-1!.C!.B!JAC.B!O5.!<5.U60A!.B!>;-891!-.B!<X61-1!-.B!-.J50A-10!L!A>.J6A<1U!B1U!>A</81U!I<.Cp!>1C6.d65AB!L!1J>8;C!v)%%$B&C>2?v!1!&+b"UME!@B!-.J50A-10c!Aa10Ac!B5>.!AUQ7

4RG222

Page 69: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

H0.U81CA<1U!.B!/16;C!0.1%$$7!L!U.958<1U!>1C!.B!-.UA001BB1E

&a10A!.B!JA0U.0!C1U!-8>.!O5.!C1!UA/.!O5.!aA>.0!>1C!.B!6A9!S23&$3,a1RE!@U1!1>500.!J10O5.!C1!B.!-8[8<1Uc!AB!JA0U.0c!O5.!aA>.0!>1C!B1U!6A9U!O5.!C1!U.AC!S($73)f3\3RE

H.-8<1U!.B!-.J50A-10!J0.U81CAC-1!.B!/16;C!8$"D-!L!U.B.>>81CA<1Uc!.C!BA!J8BA!-.!>1C6.d61Uc!.B!O5.!>100.UJ1C-.!>1C!C5.U601!<X61-1!c$73)f3\3C%*)22RRa.1(63*$5)($7V!IO5.!.U!.B!<X61-1!-1C-.!8CU6058<1U!AB!JA0U.0!>1<1!J01>.UA0!>A-A!6A9ME

4SG222

Page 70: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@C!BA!JA06.!-1C-.!8CU6058<1U!AB!JA0U.0!U1/0.!>1<1!J01>.UA0!B1U!6A9Uc!A90.9A<1U!B1!U8958.C6.7

0%"3/"!1CbA97!S;C6:C<?2S!U.C-7!]2<.C6:C<?2>E

HA0A!9ACA0!5C!J1>1!-.!68.<J1c!J1-.<1U!8C90.UA0!BAU!8CU605>>81C.U!JA0A!`A081U!6A9U!O5.-AC-1!.B!<X61-1!>1<JB.61!AUQ7

?923pC=:#73:8>!%+-"1'$!!!!E*9:7&5<7&<5:i7&C<;67<@:&8:=&9:@:4629&8:;8:&:=&79@mCi2&==73782&7.69C<AE

!!!!|!%"*B1G#!0%"3/"!1'3-%'*1%!|

!!!!E7Q9:&:=&79@mCi2E!!!!%"*B1G#!>f!pC=:.69:73!0.A-$CBL(8B.*A<.-7!%+-"1'$E

!!!!E@9:7&=7&C<;67<@C7&8:=&9:@:4629E!!!!1'3-%'*1%!>f!;:=?!C.TE

!!!!EC<;67<@C7&:=&479;:9E

,3G222

Page 71: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!0%"3/"!>f!x-'.67@V!79;:9!1C7!%"*B1G#E

!!!!E=7&C<;67<@C7&9:@CW<&@9:787&:;&:=&49C3:9&2Qd:62&8:&=7&4C=7E!!!!0%"3/"!J5Ua7!1'3-%'*1%E

!!!!EC<;695C32;&7=&479;:9&;2Q9:&@232&492@:;79&=2;&67A;E!!!!0%"3/"!1CbA97!S3:8C7cCVCS!U.C-7!]2<-:8C7cCVC>E!!!!0%"3/"!1CbA97!S;C6:C<?2S!U.C-7!]2<.C6:C<?2>E!!!!0%"3/"!1CbA97!S<73:;47@:;S!U.C-7!]2<#73:;47@:;>E!!!!0%"3/"!1CbA97!S<73:;47@:S!U.C-7!]2<#73:;47@:>E!!!!0%"3/"!1CbA97!S47A:S!U.C-7!]2<!7A:>E!!!!0%"3/"!1CbA97!S9:iC;C2<S!U.C-7!]2<%:iC;C2<>E!!!!0%"3/"!1CbA97!S@2<69CQ5629S!U.C-7!]2<*2<69CQ5629>E

!!!!E=:&4:8C32;&7=&479;:9&_5:&m7A7&;5&697Q7d2E!!!!0%"3/"!JA0U.'1>5<.C6E

!!!!E@:99732;&:=&79@mCi2E!!!!%"*B1G#!>B1U.E

!!!!E8:i2=i:32;&=7&C<;67<@C7&7=&9:3C6:<6:&8:=&3:<;7d:E!!!!j!1'3-%'*1%

&>.J6A<1U!B1U!>A</81Uc!L!.B!-.J50A-10!Aa10A!O5.-A!AUQ7

,FG222

Page 72: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@U!8C6.0.UAC6.!`.0!O5.!JAU;!>1C!BA!J8BA!-.!>1C6.d61U!>5AC-1!A>.J6A<1U!B1U!>A</81U7!!@B!-.J50A-10!U.!-.Ua8=1!-.!B1U!>1C6.d61U!O5.!.U6A/AC!J10!A008/A!-.B!<X61-1!<1-8N8>A-1c!AUQ!O5.!.U6A<1U!B8U61U!JA0A!J0.U81CA0!.B!/16;C!0.1%$$7!0.">1<.C=AC-1!-.U-.!.B!<X61-1!>A</8A-1E

,2G222

Page 73: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!.B!A</8.C6.!C1U!-8>.!O5.!C5.U601!P.-8AT8?8!C1!UA/.!>1<1!>1C6.U6A0!.B!<.CUA[.!=1,'3&$3,a1Vc!AUQ!O5.!>0.A<1U!.B!<X61-1!U8958.C-1!.B!<8U<1!J01>.-8<8.C61!O5.!568B8=A<1U!JA0A!>0.A0!.B!<X61-1!=1,c$73)f3\3VE!!H0.U81CA<1U!.B!/16;C!9.$)&$c!U.B.>>81CA<1U!BA!>BAU.!c$73)f3\3c!U.B.>>81CA<1U!BA!>A6.910QA!-.!<X61-1U!gB).23,-gc!L!1/6.C.<1U!.B!-.J50A-10!-.!.U6A!N10<A7

b.>B.A<1U!B1!U8958.C6.7

2<.C6:C<?2>!%U1*-1#'%"2!!!!!E*9:7&5<&.C6:)<?2&^&=2&A57987&:<&:=&9:@:4629E!!!!;C6:)<?2!>f!.C6:)<?2!C.TE!!!!j!;C6:)<?2

&C6.U!-.!A>.J6A0!.B!ULC6Ad"a89aB89a6c!>1C!.B!>1B10!01[1c!C1U!8C-8>A!O5.!C1!UA/.!O5.!.U!23&$+,a1!C8!6A<J1>1!UA/.!O5.!.U!'3&$+,a1E!!+A!J08<.0A!U.0f!5CA!`A08A/B.!-.!8CU6AC>8Ac!L!BA!U.95C-A!U.0f!5CA!>BAU.E

8"%2)%+0F%$*)$%"&'()#

,^G222

Page 74: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

I#10'#&6"210(204%"5%6+210(205'1,%')5%30+#10%"$/&2',#10F0+%104%"5%6+210,2&>#"%+2130>#"0)#'42')5?'30)#&52'R%'0)#'0/'%0+2,"%0&5'N1)/+%:

I%104%"5%6+210(20)+%1230+%104%"5%6+210$+#6%+210F0+#10'#&6"210(20)+%1210)#&52'R%'0)#'0/'%0+2,"%0&%FN1)/+%:

@+0+/$%"05(2%+0>%"%0+22"0,#(%10+%10)#'42')5#'210205(5#&107/20120/1%'02'0*&%++,%+-02102+0+56"#0f*&%++,%+-0H5,<0*,F+2g0Z42"0656+5#$"%8=%\:

&>.J6A<1U!L!`.<1U!>1<1!0.A>>81CA!.B!A</8.C6.7

@B!A</8.C6.!C1U!-8>.!O5.!C1!UA/.!-.!5CA!`A08A/B.!BBA<A-A!23&$+,a1c!AUQ!O5.!C1U!1N0.>.!2!AB6.0CA68`A7!>0.A0!5CA!`A08A/B.!6.<J10AB!1!>0.A0!5CA!`A08A/B.!-.!8CU6AC>8Ac!.C!.U6.!>AU1!.B.98<1U!>0.A0!5CA!`A08A/B.!-.!8CU6AC>8AE

&a10A!.B!A</8.C6.!C1U!-8>.!O5.!C1!UA/.!O5.!.U!'3&$+,a1!L!C1U!1N0.>.!`A08AU!AB6.0CA68`AUE!!@C!.B!J08<.0!905J1!-.!AB6.0CA68`AU!IBAU!^!O5.!.U6fC!AC6.U!-.!BA!J08<.0A!BQC.AM!C1U!1N0.>.!>0.A0!5CA!>BAU.c!5CA!`A08A/B.!9B1/AB!1!5CA!`A08A/B.!-.!>BAU.E!!@C!.B!U.95C-1!905J1!-.!1J>81C.U!.B!A</8.C6.!>0..!O5.!>1<.68<1U!5C!.0010!-.!68J.1!L!C1U!1N0.>.!AB6.0CA68`AU!JA0.>8-AU!A!B1!O5.!8C90.UA<1U!C1U1601Uc!J.01!`fB8-AUE!x!N8CAB<.C6.c!C1U!1N0.>.!>AC>.BA0!BA!1J.0A>8;CE

*1U1601U!O5.0.<1U!>0.A0!5CA!C5.`A!>BAU.c!AUQ!O5.!U.B.>>81CA<1U!BA!1J>8;C!g7$a3,$C,$fC%*)22gE!

,_G222

Page 75: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&B!aA>.0B1!.B!A</8.C6.!C1U!J0.95C6A!.C!O5.!>A6.910QA!-.!>BAU.U!O5.0.<1U!J1C.0!BA!C5.`A!>BAU.c!C1U1601U!8C90.UA<1U!g'kD$)\B$73)gE

&B!A>.J6A0!.B!A</8.C6.!C1U!<5.U60A!.B!<.CUA[.!O5.!`A!A!.C`8A0!JA0A!>0.A0!BA!>BAU.c!-fC-1C1U!BA!1J1065C8-A-!-.!>A</8A0!AB917

*1U1601U!A>.J6A<1U!BA!JBAC68BBA!U8C!8C601-5>80!>A</81UE

,eG222

Page 76: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!.B!-.J50A-10!C1U!<5.U60A!.B!<X61-1!0.>8XC!A>.J6A-1c!L!.B!ULC6Ad"a89aB89a6!C1U!>1CN80<A!O5.!Aa10A!23&$+,a1!L!'3&$+,a1!U1C!>1UAU!>1C1>8-AUE!!bA</8XC!`.<1U!.C!.B!)CUJ.>610!-.B!0.>.J610!IB1U!2!JAC.B.U!A/A[1c!A!BA!8=O58.0-AM!O5.!6.C.<1U!5CA!C5.`A!`A08A/B.!-.!8CU6AC>8AE!!x!U8!6.C.<1U!5C!#01TU.0!-.!ZBAU.U!A/8.061!>1C!BA!>A6.910QA!-.!>BAU.U!g'kD$)\B$73)g!U.B.>>81CA-Ac!`.0.<1U!O5.!6A</8XC!6.C.<1U!5CA!C5.`A!>BAU.E

@U!8<J106AC6.!0.<A0>A0!O5.!6AC61!BA!>0.A>8;C!-.!<X61-1Uc!-.!`A08A/B.U!-.!8CU6AC>8A!L!BA!>0.A>8;C!-.!5CA!C5.`A!>BAU.!1>5008;!<8.C60AU!.U6f/A<1U!-.J50AC-1!BA!AJB8>A>8;Cc!.U!-.>807!<1-8N8>A<1U!.B!A</8.C6.!<8.C60AU!B1!.U6A<1U!5UAC-1E!

@C!.U6.!<1<.C61!6.C91!9ACAU!-.!-.>80!sJ05./.C!.U61!.C!U5!B.C95A[.!-.!J0.N.0.C>8Atc!J.01!C1!U.0QA!J1BQ68>A<.C6.!>100.>61!-.>80B1!AUQ!O5.!U89A<1U!>1C!.B!.[.<JB1E

H0.U81CA<1U!.B!/16;C!0.1%$$7!JA0A!U.9580!.[.>56AC-1!BA!AJB8>A>8;CE

,4G222

Page 77: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!.B!JA0U.0!C1U!-8>.!O5.!C1!UA/.!>1<1!<AC.[A0!.B!6A9!S23&$,)($RE!!D8!ACAB8=A<1U!.B!jP+!-.!.[.<JB1c!`.<1U!O5.!.U.!6A9!U.!5UA0!JA0A!>1C6.C.0!5C!6.d61E!!@B!JA0U.0!C1U!J.0<86.!<AC.[A0!.U1U!>AU1U!-.!N10<A!.UJ.>8ABE!!)CU6058<1U!AB!JA0U.0!-8>8XC-1B.!O5.!S23&$,)($R!.U!5C!6.d6bA9E!H.-8<1U!.B!-.J50A-10!IJ0.U81CAC-1!.B!/16;C!8$"D-M!L!.B.98<1U!.B!<X61-1!c$73)f3\3C%*)22RRa.1(63*$5)($7V!IO5.!.U!.B!<X61-1!-1C-.!8CU6058<1U!AB!JA0U.0!>1<1!J01>.UA0!B1U!6A9UMc!L!A90.9A<1U!B1!U8958.C6.7

!!!!EC<;695C32;&7=&479;:9&@232&492@:;79&=2;&6:k6G67A;E!!!!0%"3/"!1Cb.d6bA97!S;C6:<73:S!U.C-7!];C6:#73:>E

xc!LA!O5.!.U6A<1Uc!J1-.<1U!>1<JB.6A0!AB95C1U!6.d6"6A9U!<fU!-.[AC-1!.B!<X61-1!-.!BA!U8958.C6.!N10<A7

?923pC=:#73:8>!%+-"1'$!!!!E*9:7&5<7&<5:i7&C<;67<@:&8:=&9:@:4629&8:;8:&:=&79@mCi2&==73782&7.69C<AE

!!!!|!%"*B1G#!0%"3/"!1'3-%'*1%!|

!!!!E7Q9:&:=&79@mCi2E!!!!%"*B1G#!>f!pC=:.69:73!0.A-$CBL(8B.*A<.-7!%+-"1'$E

!!!!E@9:7&=7&C<;67<@C7&8:=&9:@:4629E!!!!1'3-%'*1%!>f!;:=?!C.TE

!!!!EC<;67<@C7&:=&479;:9E!!!!0%"3/"!>f!x-'.67@V!79;:9!1C7!%"*B1G#E

!!!!E=7&C<;67<@C7&9:@CW<&@9:787&:;&:=&49C3:9&2Qd:62&8:&=7&4C=7E!!!!0%"3/"!J5Ua7!1'3-%'*1%E

!!!!EC<;695C32;&7=&479;:9&;2Q9:&@232&492@:;79&=2;&67A;E!!!!0%"3/"!1CbA97!S3:8C7cCVCS!U.C-7!]2<-:8C7cCVC>E!!!!0%"3/"!1CbA97!S;C6:C<?2S!U.C-7!]2<.C6:C<?2>E

,,G222

Page 78: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!0%"3/"!1CbA97!S<73:;47@:;S!U.C-7!]2<#73:;47@:;>E!!!!0%"3/"!1CbA97!S<73:;47@:S!U.C-7!]2<#73:;47@:>E!!!!0%"3/"!1CbA97!S47A:S!U.C-7!]2<!7A:>E!!!!0%"3/"!1CbA97!S9:iC;C2<S!U.C-7!]2<%:iC;C2<>E!!!!0%"3/"!1CbA97!S@2<69CQ5629S!U.C-7!]2<*2<69CQ5629>E

!!!!EC<;695C32;&7=&479;:9&@232&492@:;79&=2;&6:k6G67A;E!!!!0%"3/"!1Cb.d6bA97!S;C6:<73:S!U.C-7!];C6:#73:>E!!!!0%"3/"!1Cb.d6bA97!SQ7;:S!U.C-7!]Q7;:>E!!!!0%"3/"!1Cb.d6bA97!SA:<:97629S!U.C-7!]A:<:97629>E!!!!0%"3/"!1Cb.d6bA97!S@7;:S!U.C-7!]@7;:>E!!!!0%"3/"!1Cb.d6bA97!S<73:;47@:S!U.C-7!]<73:>E!!!!0%"3/"!1Cb.d6bA97!S6C6=:S!U.C-7!]6C6=:>E!!!!0%"3/"!1Cb.d6bA97!SC8S!U.C-7!]C8>E!!!!0%"3/"!1Cb.d6bA97!S6C3:;6734S!U.C-7!]6C3:;6734>E!!!!0%"3/"!1Cb.d6bA97!SC4S!U.C-7!]C4>E!!!!0%"3/"!1Cb.d6bA97!S6:k6S!U.C-7!]6:k6>E!!!!0%"3/"!1Cb.d6bA97!S@233:<6S!U.C-7!]@233:<6>E

!!!!E=:&4:8C32;&7=&479;:9&_5:&m7A7&;5&697Q7d2E!!!!0%"3/"!JA0U.'1>5<.C6E

!!!!E@:99732;&:=&79@mCi2E!!!!%"*B1G#!>B1U.E

!!!!E8:i2=i:32;&=7&C<;67<@C7&7=&9:3C6:<6:&8:=&3:<;7d:E!!!!j!1'3-%'*1%

&>.J6A<1U!B1U!>A</81Uc!L!BA!`.C6ACA!-.B!-.J50A-10!Aa10A!O5.-A!AUQ7

,RG222

Page 79: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

*5.`A<.C6.!.U6A<1U!B8U61U!JA0A!>1C68C5A0!J0.U81CAC-1!.B!/16;C!0.1%$$7E

,SG222

Page 80: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@B.98<1U!>0.A0!5C!<X61-1!IJ0.U81CAC-1!.B!/16;C!9.$)&$M!.C!BA!>BAU.!'3&$+,a1

.C!BA!>A6.910QA!-.!<X61-1U!BBA<A-A!g)%%$223,-g

&a10A!6.C.<1U!O5.!8<JB.<.C6A0!.B!<X61-1!.C!.B!-.J50A-10c!6AB!L!>1<1!B1!a8>8<1U!AC6.0810<.C6.

R3G222

Page 81: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@U>08/8<1U!B1!U8958.C6.7

;C6:#73:>!%[2-/+-"1'$!!!!!E*73QC7&:=&;C6:#73:&8:=&9:@:4629E!!!!;C6:#73:!>f!%[2-/+-"1'$

*5.`A<.C6.!.B!ULC6Ad"a89aB89a6!C1U!8C-8>Ac!>1C!.B!>1B10!01[1c!O5.!23&$5)($!.U!AB91!-.U>1C1>8-1E!&>.J6A<1U!B1U!>A</81U!Lc!AC6.!BA!J0.95C6Ac!.U>19.<1U!>0.A0!5CA!`A08A/B.!-.!8CU6AC>8A7

RFG222

Page 82: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!LA!.U6A<1U!B8U61Uc!C5.`A<.C6.c!JA0A!>1C68C5A0!I/16;C!0.1%$$7ME

&a10A!8<JB.<.C6A<1U!.B!<X61-1!=")2$V!-.!BA!<8U<A!N10<A!O5.!0.>8XC!8<JB.<.C6A<1U!.B!<X61-1!=23&$5)($Vc!>0.AC-1!6A</8XC!5CA!`A08A/B.!-.!8CU6AC>8AE

Q7;:>!%[2-/+-"1'$!!!!!E*73QC7&:=&Q7;:&8:=&9:@:4629E!!!!Q7;:!>f!%[2-/+-"1'$

x!>1C68C5A<1U!I>1C!0.1%$$7ME

%.J.68<1U!.B!J01>.U1!JA0A!.B!<X61-1!=-$,$.)&1.V

A:<:97629>!%[2-/+-"1'$!!!!!E*73QC7&:=&A:<:97629&8:=&9:@:4629E!!!!A:<:97629!>f!%[2-/+-"1'$

R2G222

Page 83: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!JA0A!.B!<X61-1!=%)2$V

@7;:>!%[2-/+-"1'$!!!!!E*73QC7&:=&@7;:&8:=&9:@:4629E!!!!@7;:!>f!%[2-/+-"1'$

x!C1U!-.6.C.<1U!>1C!<fU!A6.C>8;C!JA0A!.B!<X61-1!=1,5)($2B)%$2V

Z0.A<1U!.B!<X61-1!.C!BA!>BAU.!'3&$+,a1c!.C!5CA!C5.`A!>A6.910QA!BBA<A-A!gB).23,-g

R^G222

Page 84: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

D8!ACAB8=A<1U!5C!J1>1!.B!jP+!-.!.[.<JB1c!`.0.<1U!O5.!.B!6A9!S,)($2B)%$2R!I.C!JB50ABM!>1C68.C.!`A081U!6A9U!S,)($2B)%$R!I.C!U8C95BA0Mc!AUQ!O5.!C.>.U86A<1U!5CA!>1B.>>8;C!JA0A!J1-.0!95A0-A0!B1U!`A081U!CA<.UJA>.!O5.!>1C68.C.!5C!P.-8AT8?8E

'8>a1!B1!-8>a1c!8<JB.<.C6A<1U!.B!<X61-1!-.!BA!U8958.C6.!<AC.0A!I>0.AC-1!BA!`A08A/B.!-.!8CU6AC>8A!,)($2B)%$2!>5AC-1!C1U!J0.95C6.M

2<#73:;47@:;>!%U1*-1#'%"2!!!!!E*9:7&5<7&@2=:@@CY<&i7@X7&82<8:&A579879&=2;&<73:;47@:;&i:<C8:92;E!!!!<73:;47@:;&!>f!.:6!C.TE

8",)++0"%)#

*&%++,%+-0)/2',%0)#'0/'08"%&2H#"-0(20)#+2))5#'210&/F0>#(2"#1#:00M#0210(202P,"%S%"0F%07/20++24%0&A10(20TU0%S#10(20(2>/"%)5?':

.#',%&#10)#'0'/&2"#1#10,5>#10(20)#+2))5#'210ZO%$30*2,30E"(2"2(.#++2),5#'30;5),5#'%"F30W""%F302,)\0F30%01/042R30)#'0/'0"5)#0F02P,2'1#0>"#,#)#+#0(20&2'1%921:

W0)#',5'/%)5?'02'/&2"#0%+$/'#10(20+#10&2'1%92107/20120+210>/2(202'45%"0%0,#(%10+%10)#+2))5#'21:

L"&&M0W$"2$%0/'0#692,#0Z(%(#0)#&#0%"$/&2',#\0%0+%0)#+2))5?':

L"&&B33M0W$"2$%0,#(#10+#102+2&2',#10(20+%0)#+2))5?'0(%(%0)#&#0%"$/&2',#0%0+%0)#+2))5?'0"2)2>,#"%0(2+0&2'1%92:

L)$0+;$M0Q2&/2420/'0(2,2"&5'%(#0#692,#0(20+%0)#+2))5?':0r2'2"%0/'02""#"01502+02+2&2',#0'#0210>%",20(20+%0)#+2))5?':

L)$0+;$M,/B>*$%2M0Q2&/2420/'0(2,2"&5'%(#02+2&2',#0(20+%0)#+2))5?':0@4%+N%02+06+#7/20(%(#01502+02+2&2',#0'#0210>%",20(20+%0)#+2))5?':

L)$0+;$B33M0Q2&/2420,#(#10+#102+2&2',#10(2+0"2)2>,#"07/2021,A'0)#',2'5(#102'0+%0)#+2))5?'0(%(%02'02+0%"$/&2',#:

L&+M0@4%+N%02+06+#7/20(%(#0)#&#0%"$/&2',#0>#"0)%(%02+2&2',#0)#',2'5(#02'0+%0)#+2))5?':00@1,202102+0>"5')5>%+0&2'1%920(20+%10)#+2))5#'210F0>"A),5)%&2',20,#(#02+0"21,#0(20&2'1%921021,A'05&>+2&2',%(#10/1%'(#02+0L&+M0(20%+$/'%08#"&%:00@105',2"21%',2042"0+%05&>+2&2',%)5?'0(230>#"0292&>+#30+#10&2'1%9210L*$3$-2M30L-+33$-2M30L"%NG%$30L&$2$-2M,/O+%$M30L&+M*$(")"2$&PNM302,):

L&+M*$(")"2$&PNM0@4%+N%02+0>"5&2"06+#7/20(%(#0)#&#0%"$/&2',#0>#"0)%(%02+2&2',#0)#',2'5(#02'0+%0)#+2))5?'0F024%+N%02+012$/'(#06+#7/202',"202+2&2',#1:

L*$3$-2M0@4%+N%02+06+#7/20(%(#0>#"0)%(%02+2&2',#0(2+0"2)2>,#"0)#&#0%"$/&2',#:0.#+2))5#'%0+#102+2&2',#102'0+#10)/%+2102+06+#7/2024%+N%0%0&.D$0Z42"(%(2"#\02'0/'%0

R_G222

Page 85: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

)#+2))5?'0(2+0,5>#0(2+0"2)2>,#":0Q21>#'(2021%0)#+2))5?'0'/24%0)#&#0"21/+,%(#:

L)$9$-2M0*5&5+%"0%0L*$3$-2M0>2"#0)#+2))5#'%0+#102+2&2',#10>%"%0+#10)/%+2102+06+#7/2024%+N%0%08%+12:

L-+33$-2M0@4%+N%02+06+#7/20(%(#0>#"0)%(%02+2&2',#0(2+0"2)2>,#"0)#&#0%"$/&2',#:0.#+2))5#'%0+#10"21/+,%(#102'0/'%0)#+2))5?'0(2+0,5>#0(2+0"2)2>,#":0Q21>#'(2021%0)#+2))5?'0'/24%0)#&#0"21/+,%(#:

L*,Q$0Q21>#'(202+0,%&%S#0(20+%0)#+2))5?':

L"%NG%$0Q21>#'(20%+$N'02+2&2',#0(20+%0)#+2))5?':

L"2E"%&+00Q21>#'(20/'#0(20+#102+2&2',#10(2+0"2)2>,#"0(208#"&%0%+2%,#"5%:

L&$2$-2M0@4%+N%02+06+#7/20(%(#0)#'0)%(%02+2&2',#0(2+0"2)2>,#":0;24/2+4202+0>"5&2"02+2&2',#0(#'(202+06+#7/2024%+N%0%0&.D$:0r2'2"%0/'02""#"0150'5'$N'02+2&2',#02102')#',"%(#:

L&$2$-2M,/O+%$M0@4%+N%02+06+#7/20(%(#0)#'0)%(%02+2&2',#0(2+0"2)2>,#":0;24/2+4202+0>"5&2"02+2&2',#0(#'(202+06+#7/2024%+N%0%0&.D$:0@4%+N%02+0#,"#06+#7/20(%(#0150'5'$N'02+2&2',#02102')#',"%(#0F0(24/2+4202+0"21/+,%(#0(2021%024%+/%)5?':

L,*:0(2N0Q21>#'(201502+0"2)2>,#"021,A04%)=#0F0'#0)#',52'202+2&2',#1:

L,%-3?&$*M0Q21>#'(201502+0#692,#0(%(#0210/'02+2&2',#0(2+0"2)2>,#":

L,%-3?&$*B33G/M0Q21>#'(20150,#(#10+#102+2&2',#10(20+%0)#+2))5?'0(%(%021,A'05')+/5(#102'0+%0)#+2))5?'0"2)2>,#"%:

L,%-3?&$*B%NG/M0Q21>#'(20150%+$/'#10(20+#102+2&2',#10(20+%0)#+2))5?'0(%(%021,A05')+/5(#02'0+%0)#+2))5?'0"2)2>,#"%:

L"33J"2,*/NM0Q21>#'(20&.D$01502+06+#7/20(%(#012024%+N%0%0&.D$0>#"0,#(#10+#102+2&2',#10(20+%0)#+2))5?'0"2)2>,#"%:

L"%NJ"2,*/NM0Q21>#'(20,"/201502+06+#7/20(%(#012024%+N%0%0,"/20>#"0%+$/'#10(20+#102+2&2',#10(20+%0)#+2))5?'0"2)2>,#"%:

L%+%$J"2,*/NM0Q21>#'(20&.D$01502+06+#7/20(%(#012024%+N%0%0a)*2$0>#"0,#(#10+#102+2&2',#10(20+%0)#+2))5?'0"2)2>,#"%:

L+--?))$%-$*G/M0Q21>#'(20)/%',%1042)21021,A05')+/5(#02+0#692,#0(%(#02'0+%0)#+2))5?'0"2)2>,#"%:

8",)++0"%)#$h$B)/

@+0*2,0210/'0,5>#0(20)#+2))5?'07/20'#0&%',52'20'5'$N'0#"(2'01#6"201/102+2&2',#10F07/20'#0>2"&5,207/20/'0#692,#021,K0)#',2'5(#0&A10(20/'%042R:

V'0*2,0"2>"212',%02+0)#')2>,#0&%,2&A,5)#0(20)#'9/',#30(#'(20'#0,52'2012',5(#0(2)5"07/20/'02+2&2',#021,A0&A10(20/'%042R0'50,52'2012',5(#0<%6+%"0(20#"(2':

4G)&:,"#J

c0%!&0c%!&0Ji0B)/0'2H:%!&0%((C0M6%$#/(0%3M:

ReG222

Page 86: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

%!&0%((C0M"/("$#/(0%3M:%!&0%((C0M6%$#/(0%3M:%!&0%((C0M"/("$#/(0%3M:%!&0%((C0M6%$#/(0%3M:%!&02P>+#"2:

7+"%2)(/0($+",)++0"%)#$*)$*0])()%/)$/0:"$-$B)/$:-(-$()&"2)($,"#$*6:,0+-*"#7sZU0<0R0W0W0W0R0W0R0W0Q0<0Q0W0Q0<0U\0%1*2,:M6%$#/(0%3$C6)$/0)%)$&6+f"#$+-(-+/)()#M0%1*2,:

7!"#$W$#)/#$+"%/0)%)%$#F,"$6%$),)&)%/"7ZB)/0H5,<C0R\0i0ZB)/0H5,<CR0H5,<CR\:

74,$"(*)%$%"$0&:"(/-7ZB)/0H5,<C0R0H5,<C0W\0i0ZB)/0H5,<CW0H5,<CR\:

j-,"($*)$()/"(%"$:"($*)])+/"

I#10&K,#(#107/20'#0,2'$%'0/'04%+#"0(20"2,#"'#02P>+=)5,#0t0/1%'(#02+0)%"A),2"0u0^0,2"&5'%'0(24#+452'(#0%+0"2)2>,#":

Z1<1!.B!<X61-1!AC6.0810!-.`5.B`.!AB!0.>.J610!IU8!C1!U.!.UJ.>8N8>A!5CA!0.UJ5.U6Ac!.B!<X61-1!6.0<8CA!0.610CAC-1!2$*aM!.B!1/[.61!'3&$+,a1!U.0f!6A</8XC!0.UJ1CUA/B.!-.!0.UJ1C-.0!AB!<.CUA[.!=1,5)($'B)%$V

Z0.A<1U!IJ0.U81CAC-1!.B!/16;C!9.$)&$M!.B!<X61-1!.C!BA!>BAU.!'3&$+,a1c!.C!BA!>A6.910QA!gB).23,-g

2<#73:;47@:>!%U1*-1#'%"2!!!!!E*9:7&5<&<5:i2&<73:;47@:&^&=2&A57987&:<&=7&@2=:@@CY<&8:&<73:;47@:;&8:=&9:@:4629E!!!!|!'%&/30%*/!|!!!!'%&/30%*/!>f!#73:;47@:!C.TE!!!!<73:;47@:;!A--7!'%&/30%*/E

R4G222

Page 87: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!j!'%&/30%*/

8",)++0"%)#$h$&)%#-G)$k-**J

W$"2$%0/'0#692,#0Z(%(#0>#"0%"$/&2',#\0%0+%0)#+2))5?':

$60A!`.=!.B!01[1!-.B!ULC6Ad"a89aB89a6!C1U!A`8UA!O5.!C1!UA/.!O5.!.U!5)($2B)%$E!HA0A!0.U1B`.0B1!>0.A<1U!5CA!C5.`A!>BAU.c!.C!BA!>A6.910QA!-.!>BAU.U!g'kD$)\B$73)g!L!>1C68C5A<1U!BA!.[.>5>8;C!J0.U81CAC-1!.B!/16;C!0.1%$$7E

&a10A!.B!A</8.C6.!C1U!A`8UA!-.!5C!C5.`1!.00107

x!B1!0.U1B`.<1U!>0.AC-1!.B!<X61-1!.C!BA!>BAU.!5)($2B)%$c!.C!BA!>A6.910QA!-.!<X61-1U!g)%%$223,-gc!-.!BA!U8958.C6.!<AC.0A7!

<73:>!%[2-/+-"1'$!!!!!E*73QC7&:=&<73:&8:=&9:@:4629E!!!!<73:!>f!%[2-/+-"1'$E

Z0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!,)($!AB!A>.J6A0E!Z1C68C5A<1U!BA!.[.>5>8;C!>1C!.B!/16;C!0.1%$$7E

@U!.B!<1<.C61!-.!J01>.UA0!BA!>0.A>8;C!-.!BA!J08<.0A!Jf98CA!-.B!P.-8AT8?8E

R,G222

Page 88: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

Z0.A<1U!.B!<X61-1!.C!BA!>BAU.!c$73)f3\3c!.C!BA!>A6.910QA!gB).23,-gc!U8958.C-1!.B!J01>.-8<8.C61!O5.!LA!5UA<1U!`A08AU!`.>.Uc!L!B1!8<JB.<.C6A<1U!AUQ7

2<!7A:>!%U1*-1#'%"2!!!!!E*9:7&5<7&<5:i7&4BAC<7&^&=7&A57987&:<&=7&@2=:@@CY<&8:&4BAC<7;&8:=&9:@:4629E!!!!|!0%$/!|!!!!0%$/!>f!!AA:!C.TE

!!!!47A:;!8U*8B!!!!!!!!8Nb05.7}47A:;!>f!.:6!C.T~E

!!!!47A:;!A--7!0%$/E

!!!!j!0%$/

b.C.<1U!O5.!>0.A0!BA!>BAU.!0)-$!I.C!BA!>A6.910QA!-.!>BAU.U!g'kD$)\B$73)gM!L!BA!`A08A/B.!-.!8CU6AC>8A!B)-$2!AB!A>.J6A0!.B!<X61-1E

'./8-1!A!5CA!8C>1CU8U6.C>8A!.C!.B!N10<A61!-.B!jP+!-.!BA!i8?8J.-8Ac!6.C.<1U!O5.!>0.A0!BA!>1B.>>8;C!-.!Jf98CAU!5UAC-1!BA=L"8C868AB8=A681C!LA!O5.!B1U!6A9U!SB)-$R!C1!.U6fC!>1C6.C8-1U!.C!5C!6A9!SB)-$2R!L!C1!J1-.<1U!>0.A0!BA!>1B.>>8;C!U8958.C-1!.B!<8U<1!J01>.-8<8.C61!O5.!5UA<1U!JA0A!>0.A0!BA!>1B.>>8;C!-.!CA<.UJA>.U!-.!BA!>BAU.!'3&$+,a1E

&C6.U!-.!>1C68C5A0c!`A<1U!A!8CUJ.>>81CA0!5C!J1>1!.B!.U6A-1!-.!C5.U601U!1/[.61UE!!HA0A!aA>.0B1!U.B.>>81CA<1U!BA!1J>8;C!2$*a!-.!B1U!JAC.B.U!O5.!N10<AC!.B!)CUJ.>610!-.B!0.>.J610c!L!-.U-.!.B!<.Cp!>1C6.d65AB!I/16;C!A=5BM!U.B.>>81CA<1U!BA!1J>8;C!g$ZB*1.$C>+?g7

RRG222

Page 89: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

4L:,"(-*"(

@+0@P>+#"%(#"0210/'%0<2""%&52',%07/20)/&>+20+%10&51&%108/')5#'2107/202+0d'1>2),#"30>2"#0)#'0/'08#"&%,#0(20A"6#+07/20'#10>2"&5,205"0'%42$%'(#0+%021,"/),/"%07/208#"&%'0'/21,"#10#692,#1:

RSG222

Page 90: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

I%10>27/2S#10,"5A'$/+#10%R/+210'#10>2"&5,2'0%6"5"0#0)2""%"0+%10"%&%10>%"%0%'%+5R%"0+%021,"/),/"%0%0'/21,"#0%',#9#:

@'02+0>%'2+0(20)?(5$#0120>/2(2024%+/%"0)/%+7/52"012',2')5%0*&%++,%+-30+%0N'5)%0)#'15(2"%)5?'02107/20+%04%"5%6+2021>2)5%+02$*a0%>/',%"A0%+0#692,#012+2))5#'%(#02'02+0>%'2+0(20%""56%0F30150'#0</652120'5'$N'0#692,#012+2))5#'%(#30%>/',%"A0%+0#692,#07/2021,A0152'(#02P>+#"%(#0Z+%0"%=R0(2+0A"6#+\:

S3G222

Page 91: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&/08.C-1!L!>.00AC-1!BAU!-8U68C6AU!0A<AU!-.B!f0/1B!-.B!.dJB10A-10!J1-.<1U!`AB8-A0!U8!C5.U601!8<J106A-10!.U6f!N5C>81CAC-1!>100.>6A<.C6.E!\.<1U!O5.!aAL!^!CA<.UJA>.U!.C!BA!>1B.>>8;Cc!`.<1U!O5.!BA!`A08A/B.!-.!8CU6AC>8A!B)-$2!.U6f!.C!,3*c!L!O5.!1601U!-A61U!-.B!'3&$+,a1!0.NB.[AC!/8.C!B1U!-A61U!-.B!jP+E!

D8C!.</A091c!U8!>1<JA0A<1U!B1U!-A61U!O5.!68.C.C!C5.U601U!1/[.61U!>1C!.B!jP+!-.!.[.<JB1c!`.<1U!O5.!B1U!1/[.61U!5)($2B)%$!C1!68.C.C!.B!-A61!v?.Lv!O5.!`8.C.!>1<1!A608/561!-.B!6A9E

RRR

CCCC!%"0$*("-$*'

CCCCCC!%"0$*("-$C\$;MlEUl''B$%3)*32!.%"0$*("-$'

CCCCCC!%"0$*("-$C\$;MlwlC.'

CCCCCC!%"0$*("-$C\$;MlUl'832BD&)&31!.%"0$*("-$'

CCCC!.%"0$*("-$*'

RRR

HA0.>8.0A!O5.!C1U!1B`8-A<1U!-.!>1CU8-.0A0!.U.!-A61!.C!.B!<X61-1!-1C-.!>0.A<1U!B1U!1/[.61U!5)($2B)%$E

Z1<1!U1<1U!5C!J1>1!`A91Uc!L!.B!D<ABB6AB?!.U!8-.AB!JA0A!9.C6.!`A9A!>1<1!C1U1601Uc!`A<1U!A!568B8=A0!BAU!a.00A<8.C6AU!-.B!A</8.C6.!JA0A!B1>AB8=A0!.B!B59A0!-1C-.!U.!8CU6AC>8AC!.U1U!1/[.61UE!!HA0.!.U1!U.958<1U!.B!U8958.C6.!J01>.-8<8.C617

SFG222

Page 92: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

#5U>A<1Uc!.C!.B!@dJB10A-10c!5C1!-.!B1U!1/[.61U!5)($2B)%$!L!B1!U.B.>>81CA<1UE!H.-8<1U!.B!<.Cp!>1C6.d65AB!U1/0.!.U.!1/[.61!I>1C!/16;C!A=5BM!L!U.B.>>81CA<1U!BA!1J>8;C!g".1f2$CaD**C>"?gCIJ1-0QA<1U!aA/.0!J0.U81CA-1!&+b"/ME

@U61!C1U!A/0.!.B!#01TU.0!-.!ZBAU.U!AJ5C6AC-1!A!BA!>BAU.!-.B!1/[.61!U.B.>>81CA-1E!!H.-8<1U!.B!<.Cp!>1C6.d65AB!U1/0.!BA!>BAU.!'3&$+,a1!L!U.B.>>81CA<1U!BA!1J>8;C!g%*)22C.$a2C>5?gCIJ1-0QA<1U!aA/.0!J0.U81CA-1!&+b"P&x�DZo+&"CME!

S2G222

Page 93: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@UA!1J>8;C!C1U!A/0.!5C!68J1!-.!#01TU.0!O5.!<5.U60A!B1U!<X61-1U!-1C-.!U.!aA>.!0.N.0.C>8A!A!BA!>BAU.!5)($2B)%$E!D.B.>>81CA<1U!BA!>BAU.!.C!.B!JAC.B!U5J.0810!8=O58.0-1c!L!B5.91!.B!<X61-1!.C!.B!JAC.B!U5J.0810!-.0.>a1!L!`.<1U!.B!>;-891!-.B!<X61-1!O5.!8CU6AC>8A!B1U!5)($2B)%$E

g@C>1C60A<1U!.B!.0010h!!@B!-A61!-.B!A608/561!v?.Lv!-.B!6A9!S,)($2B)%$R!`8.C.!-.C601!-.B!

S^G222

Page 94: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

-8>>81CA081!O5.!0.>8/8<1U!J10!A095<.C61c!J.01!C1U1601U!B1!89C10A<1UE!!Z100.98<1U!.B!<X61-1!-.!BA!U8958.C6.!N10<A7

2<#73:;47@:>!%U1*-1#'%"2!!!!!E*9:7&5<&<5:i2&<73:;47@:&^&=2&A57987&:<&=7&@2=:@@CY<&8:&<73:;47@:;&8:=&9:@:4629E!!!!|!'%&/30%*/!|!!!!'%&/30%*/!>f!#73:;47@:!?.L7!I%U1*-1#'%"2!A67!SV:^SME!!!!<73:;47@:;!A--7!'%&/30%*/E!!!!j!'%&/30%*/

H1-.<1U!>.00A0!AB95CAU!`.C6ACAU!O5.!LA!C1!5UA0.<1U!>1<1!.B!#01TU.0!-.!%.N.0.C>8AUc!.B!#01TU.0!-.!ZBAU.U!L!.B!@dJB10A-10E!xc!.C!.B!61-A`QA!A/8.061!'.J50A-10c!/5U>A<1U!.B!>1C6.d61!0.N.0.C6.!AB!<X61-1!!c$73)f3\3C%*)22RRa.1(63*$5)($7V!L!J0.U81CA<1U!BA!1J>8;C!p$2&).&!JA0A!`1B`.0!A!>1<.C=A0!BA!.[.>5>8;C!Lc!A>61!U.958-1c!J0.U81CA<1U!BA!1J>8;C!0.1%$$7E

VW5X!1>5008;Y!$>5008;!O5.!BA!N10<A!-.!8CU6AC>8A0!B1U!1/[.61U!5)($2B)%$!>A</8;!L!C1U1601U!C1!A>65AB8=A<1U!BA!>BAU.E!!D.B.>>81CA<1U!BA!1J>8;C!9.$)&$!L!-.>8<1U!O5.!.B!<X61-1!U.!>0..!.C!BA!>BAU.!5)($2B)%$C%*)22!IC16A0!.B!>BAUUc!Aa10A!.U6A<1U!>0.AC-1!5C!<X61-1!-.!>BAU.!L!C1!-.!8CU6AC>8AM!L!.C!BA!>A6.910QA!g3,2&),%$C%.$)&31,g7

S_G222

Page 95: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

)<JB.<.C6A<1U!.B!<X61-1!-.!BA!U8958.C6.!<AC.0A7

V:^>!%[2-/+-"1'$!!!!!E0:i5:=i7&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629&@2<&:=&V:^&8782E!!!!j!;:=?!C.T!8C868AB8=.K.L7!%[2-/+-"1'$

*5.`A<.C6.!.B!ULC6Ad"a89aB89a6!C1U!8C-8>A!O5.!AB91!C1!U.!>1C1>.c!.C!.U6.!>AU1!C1U!-8>.!O5.!C1!aAL!.C!61-1!.B!D<ABB6AB?!C8C9pC!<X61-1!O5.!U.!BBA<.!=3,3&3)*3|$h$;V!L!O5.c!J01/A/B.<.C6.c!C1U!aABBA<1U!.O58`1>A-1!-.!<.CUA[.E!!@C!C5.U601!>AU1!C1!C1U!.O58`1>A<1Uc!U8C1!O5.!61-A`QA!C1!a.<1U!>0.A-1!.B!<X61-1!>100.UJ1C-8.C6.E

&>.J6A<1U!.B!<X61-1!Lc!AC6.!BA!J01J5.U6A!-.!AB6.0CA68`AU!-.!<.CUA[.c!U.B.>>81CA<1U!BA!J08<.0A!O5.!.U!BA!O5.!0.AB<.C6.!C1U!8C6.0.UA!LA!O5.!C1!.U!5C!.0010!.B!<.CUA[.!O5.!C1U1601U!8C90.UA<1UE

SeG222

Page 96: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

H0.U81CA<1U!.B!/16;C!0.1%$$7!JA0A!>1C68C5A0!L!`.<1U!O5.!JAUA7

&a10A!C1U!-8>.!O5.!5C!1/[.61!-.!>BAU.!5)($2B)%$!C1!.C68.C-.!.B!<.CUA[.!=3,3&3)*3|$h$;Vc!B1!>0.A<1U!.C!.UA!<8U<A!>BAU.c!-.C601!-.!5CA!C5.`A!>A6.910QA!-.!<X61-1U!BBA<A-A!g3,3&3)*3|)&31,g!L!B1!8<JB.<.C6A<1U!AUQ7

C<C6C7=Cn:b:^>!%[2-/+-"1'$!!!!!E)<C@C7=Cn7&:=&V:^&8:=&9:@:4629E!!!!V:^!>f!%[2-/+-"1'$

$60A!`.=!.B!ULC6Ad"a89aB89a6!C1U!-8>.!O5.!C1!>1C1>.!CA-A!>1C!.B!C1</0.!?.Lc!AUQ!O5.!A>.J6A<1U!L!>0.A<1U!5CA!`A08A/B.!-.!8CU6AC>8AE

S4G222

Page 97: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!U.958<1U!>1C!BA!.[.>5>8;C!J0.U81CA-1!.B!/16;C!0.1%$$7E

Z0.A<1U!.B!<X61-1!.C!BA!>BAU.!0)-$c!-.C601!-.!BA!>A6.910QA!g)%%$223,-gc!-.!BA!U8958.C6.!N10<A7

6C6=:>!%[2-/+-"1'$!!!!!E*73QC7&:=&6C6=:&8:=&9:@:4629E!!!!6C6=:!>f!%[2-/+-"1'$

x!>0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!&3&*$!AB!A>.J6A0!.B!<X61-1E

S,G222

Page 98: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

]A>.<1U!B1!<8U<1!JA0A!.B!<X61-1!=37V!>0.AC-1c!6A</8XCc!BA!`A08A/B.!-.!8CU6AC>8A!AB!A>.J6A0

C8>!%[2-/+-"1'$!!!!!E*73QC7&:=&C8&8:=&9:@:4629E!!!!C8!>f!%[2-/+-"1'$

&a10A!C1U!-.6.C.<1U!5C!J1>1!JA0A!8<JB.<.C6A0!.B!<X61-1!=1,p$43231,V

Z0.A<1U!.B!<X61-1c!.C!BA!>BAU.!0)-$c!.C!5CA!C5.`A!>A6.910QA!BBA<A-A!gB).23,-g

2<%:iC;C2<>!%U1*-1#'%"2!!!!!E*9:7&5<7&<5:i7&9:iC;C2<&A5798B<82=7&:<&=7&@2=:@@C2<&8:&9:iC;C2<:;&8:=&9:@:4629E

!!!!|!"/G131#'!|

!!!!9:iC;C2<;!8U*8B!!!!!!!!8Nb05.7}9:iC;C2<;!>f!"98:9:8*2==:@6C2<!C.T~E

!!!!"/G131#'!>f!%:iC;C2<!C.TE

!!!!9:iC;C2<;!A--7!"/G131#'E

!!!!j!"/G131#'

&B!A>.J6A0!.U6.!<X61-1c!>0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!.$43231,2!L!BA!>BAU.!p$43231,!-.C601!-.!BA!>A6.910QA!-.!>BAU.U!g'kD$)\B$73)gc!B5.91!>1C68C5A<1U!BA!.[.>5>8;C!>1C!.B!/16;C!0.1%$$7E

8",)++0"%)#$h$^(*)()*8",,)+/0"%

I%10)#+2))5#'210!.7$.$791**$%&31,0&%',52'2'0%0+#102+2&2',#102'02+0&51&#0#"(2'02'07/208/2"#'05'12",%(#1:

SRG222

Page 99: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

W+012"0/'%0)#+2))5?'07/20,52'2012',5(#0(20#"(2'302P>#'20/'0>"#,#)#+#07/205')+/F20&2'1%9210>%"%0%))2(2"0%0+#102+2&2',#10>#"01/0>#15)5?':0@92&>+#1C0=a3.2&30=2$%1,730=&:3.730=*)2&30=)**bD&63.2&30=)**bD&/)2&30=)77/)2&V30=)7763.2&V30=)77V)a&$.V30=)77b$a1.$V302,):

&a10A!C1U!61>A!>1<JB.6A0!BA!8<JB.<.C6A>8;C!-.!BA!>BAU.!p$43231,c!J08<.01!>0.A<1U!.B!<X61-1!=37V!c!.C!BA!>A6.910QA!g)%%$223,-gc!>1C!U5!>100.UJ1C-8.C6.!`A08A/B.!-.!8CU6AC>8AE

C8>!%[2-/+-"1'$!!!!!E*73QC7&:=&C8&8:=&9:@:4629E!!!!C8!>f!%[2-/+-"1'$

+5.91!8<JB.<.C6A<1U!.B!<X61-1!=&3($2&)(BVc!.C!BA!>BAU.!p$43231,c!-.C601!-.!BA!>A6.910QA!g)%%$223,-g!L!>0.A<1Uc!AB!A>.J6A0!.B!<X61-1c!BA!`A08A/B.!-.!8CU6AC>8A7

6C3:;6734>!%[2-/+-"1'$!!!!!E*73QC7&:=&6C3:;6734&8:=&9:@:4629E!!!!6C3:;6734!>f!%[2-/+-"1'$

x!>1C68C5A<1U

SSG222

Page 100: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

)<JB.<.C6A<1U!.B!<X61-1!=1,91,&.3"D&1.Vc!.C!BA!>A6.910QA!gB).23,-gc!L!>0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!%1,&.3"D&1.!L!BA!>BAU.!91,&.3"D&1.!.C!BA!>A6.910QA!g'kD$)\B$73)gE

2<*2<69CQ5629>!%U1*-1#'%"2!!!!!E@9:7&5<&@2<69CQ5629&^&=2&A57987&:<&:=&9:@:4629E!!!!@2<69CQ5629!>f!*2<69CQ5629!C.TE!!!!j!@2<69CQ5629

&a10A!C1U!61>A!8<JB.<.C6A0!.B!<X61-1!n8J7!.C!BA!>BAU.!Z1C608/5610c!L!>0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!>100.UJ1C-8.C6.E

C4>!%[2-/+-"1'$!!!!!E*73QC7&:=&C4&8:=&9:@:4629E!!!!C4!>f!%[2-/+-"1'$

x!BB.9A<1U!ABc!6AB!`.=c!<X61-1!<fU!8<J106AC6.!-.B!8<J106A-10E

Z0.A<1U!.B!<X61-1!.C!BA!>BAU.!p$43231,c!.C!BA!>A6.910QA!g)%%$223,-gc!-.!BA!U8958.C6.!N10<A7

6:k6>!%[2-/+-"1'$!!!!!E*73QC79&:=&6:k6&8:=&9:@:4629E!!!!6:k6!>f!%[2-/+-"1'$)AU#L6.D608C9!=8JJ.-E

F33G222

Page 101: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!>0.A<1Uc!AB!A>.J6A0!.B!<X61-1c!BA!`A08A/B.!-.!8CU6AC>8A!>100.UJ1C-8.C6.E

'./8-1!A!O5.!.B!<AL10!J10>.C6A[.!-.!B1U!-A61U!U.0fC!J0.>8UA<.C6.!B1U!6.d61Uc!95A0-A<1U!B1U!-A61U!>1<J08<8-1U!JA0A!1>5JA0!<.C1U!.UJA>81E!!H10!.UA!>A5UA!.U!O5.!B.!.C`8A<1U!.B!<.CUA[.!=|3BB$7CAB!D608C9!-.UJ5XU!-.!AU.950A0C1U!O5.!.B!A095<.C61!U.A!5C!b;&$'&.3,-E

Z1C68C5A<1U7

Z0.A<1U!.B!<X61-1!=%1(($,&Vc!.C!BA!>BAU.!p$43231,c!.C!BA!>A6.910QA!g)%%$223,-g7

@233:<6>!%[2-/+-"1'$!!!!!E*73QC7&:=&@233:<6&8:=&9:@:4629E!!!!@233:<6!>f!%[2-/+-"1'$

x!>0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!AB!A>.J6A0E

gb@%P)*&P$Dh!V*1!B1!>0..CY!\A<1U!A!.dJB10A0!.B!0.U5B6A-1!-.!BA!.dJB10A>8;C!JA0A!`AB8-A0!O5.!B1U!-A61U!-.B!jP+!-.!.[.<JB1!.U6XC!.C!C5.U601U!1/[.61UE

F3FG222

Page 102: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!CA`.9A<1U!5C!J1>1!A!60A`XU!-.!B1U!1/[.61U!9.C.0A-1U7

HA0.>8.0A!O5.!.U6f!61-1!/8.Cc!B1!pC8>1!O5.!C1!.U!Nf>8B!-.!`AB8-A0!AUQ!A!U8<JB.!`8U6A!.U!.B!6.d61!O5.!95A0-A<1U!>1<J08<8-1E

F32G222

Page 103: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

HA0A!`AB8-A0!B1U!6.d61Uc!`A<1U!A!8<JB.<.C6A0!5C!<X61-1!O5.!-.U>1<J08<A!.B!6.d61E

D.B.>>81CA<1Uc!.C!.B!.dJB10A-10c!AB9pC!1/[.61!-.!>BAU.!p$43231,!L!.U>08/8<1U!.C!.B!JAC.B!8CN.0810!B1!U8958.C6.7

x!B1!.`AB5A<1U!>1C!J08C6!86!gB.3,&C3&C>B?g!I1!&+b"JME

+1!8<JB.<.C6A<1Uc!.C!BA!>A6.910QA!g)%%$223,-gc!-.!BA!U8958.C6.!N10<A7

F3^G222

Page 104: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

6:k6!!!!E%:;42<8:&:=&6:k6&8:=&9:@:4629E!!!!j!6:k6!5C=8JJ.-

x!J0.U81CA<1U!.B!/16;C!0.1%$$7!JA0A!>1C68C5A07

xc!JA0.>8.0A!O5.c!.B!6.d61!.U6f!/8.CE

&a10A!`A<1U!A!`AB8-A0!.B!8<J106A-10!J01>.UAC-1!AB9pC!A0>a8`1!0.AB!L!<fU!90AC-.c!>1<.C>.<1U!8<J106AC-1!BA!i8?8J.-8A!.C!+A6QCE!!@U!J1U8/B.!O5.c!J01>.UAC-1!5C!A0>a8`1!<fU!90AC-.c!.C>1C60.<1U!O5.!NAB6A!8<JB.<.C6A0!AB9pC!1601!6A9!O5.!C1!6.CQA<1U!.C!.B!.[.<JB1!AC6.0810E

b.>B.A<1U!B1!U8958.C6.c!.C!.B!d1.\2B)%$c!L!U.B.>>81CA<1U!BA!B8C.A!>100.UJ1C-8.C6.!AB!A0>a8`1!-.!BA!i8?8J.-8A!.C!+A6QC!L!B1!.[.>56A<1U!.dJB10AC-1!.B!0.U5B6A-1E

F3_G222

Page 105: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!1/6.C.<1U!B1!U8958.C6.7

HA0.>.!O5.!6.C-0.<1U!O5.!8<JB.<.C6A0!AB95C1U!<X61-1U!<fU!JA0A!J01>.UA0!.U6.!.[.<JB1E!!@U1!C1!-./.0QA!U.0!J01/B.<Ac!LA!O5.!A!.U6A!AB650A!<AC.[A<1U!.B!'.J50A-10!<.[10!O5.!A!5C!a10C1U!<8>011C-AUE

xA!a.<1U!60A/A[A-1!U1/0.!5C!.0010!>1<1!.U6.c!B1!O5.!.U6f!JAUAC-1!.U!O5.!.B!JA0U.0!C1U!-8>.!O5.!C1!UA/.!>1<1!0.A>>81CA0!AB!6A9!SD2$.,)($RE

___

CC!("#$'

CCCC!2,23$'<.3&:($&3%)!.2,23$'

CCCC!,&'u!.,&'

CCCC!)$;,*,+%'

CCCCCC!,&'xuxts!.,&'

CCCCCC!2,0$*2"0('WwwuEUwEWU`wUVxWVUWy!.2,0$*2"0('

F3eG222

Page 106: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

CCCCCC!-+%2),>?2+)'

CCCCCCCC!?*$)%"0$'6*)b1&!.?*$)%"0$'

CCCCCCCC!,&'uwo!.,&'

CCCCCC!.-+%2),>?2+)'

CCCCCC!0,%+)C.'

CCCCCC!-+00$%2'b1&VC63Z3,-Cf3\3C2;,&)Z!.-+00$%2'

CCCCCC!2$@2CZ(*V2B)%$MlB.$2$.4$l'MMC8$C41%)"D*1C<.3&:($&3%)$C732%3B*3,)$CMM___!.2$@2'

CCCC!.)$;,*,+%'

CC!.("#$'

___

#5U>A<1U!.C!.B!jP+!.B!B59A0!-1C-.!.U6f!.B!6A9c!L!`.<1U!O5.!.U!1601!-A61!O5.!J5.-.C!6.C.0!B1U!91,&.3"D&1.E!)CU60580!AB!JA0U.0c!.C!.B!<X61-1!c$73)f3\3C%*)22RRa.1(63*$5)($7Vc!U1/0.!5C!C5.`1!6.d6"6A9!-.!BA!U8958.C6.!N10<A7

!!!!0%"3/"!1Cb.d6bA97!S5;:9<73:S!U.C-7!]5;:9<73:>E

%.>1<.C=A<1U!BA!.[.>5>8;C

x!Aa10A!-./.<1U!8<JB.<.C6A0!.B!<X61-1!=D2$.,)($V!>1<1!LA!UA/.<1U!I>BAU.!91,&.3"D&1.c!>A6.910QA!-.!<X61-1U!g)%%$223,-gc!`A08A/B.!-.!8CU6AC>8Ac!.6>EM

5;:9<73:>!%[2-/+-"1'$!!!!!E*73QC7&:=&5;:9<73:&8:=&9:@:4629E!!!!5;:9<73:!>f!%[2-/+-"1'$

Z1C68C5A<1U7

F34G222

Page 107: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

P8U<1!J01>.-8<8.C61!JA0A!.B!<X61-1!=37V

C8>!%[2-/+-"1'$!!!!!E*73QC7&:=&C8&8:=&9:@:4629E!!!!C8!>f!%[2-/+-"1'$

x!>1C68C5A<1U

&JA0.>8;!1601!6A9!O5.!-.U>1C1>.!.B!JA0U.0E

___

CC!("#$'

CCCC!2,23$'<.3&:($&3%)!.2,23$'

CCCC!,&'u!.,&'

CCCC!)$;,*,+%'

CCCCCC!,&'xuxts!.,&'

CCCCCC!2,0$*2"0('WwwuEUwEWU`wUVxWVUWy!.2,0$*2"0('

CCCCCC!-+%2),>?2+)'

CCCCCCCC!?*$)%"0$'6*)b1&!.?*$)%"0$'

CCCCCCCC!,&'uwo!.,&'

CCCCCC!.-+%2),>?2+)'

CCCCCC!0,%+)C.'

CCCCCC!-+00$%2'b1&VC63Z3,-Cf3\3C2;,&)Z!.-+00$%2'

CCCCCC!2$@2CZ(*V2B)%$MlB.$2$.4$l'MMC8$C41%)"D*1C<.3&:($&3%)$C732%3B*3,)$CMM!.2$@2'

CCCC!.)$;,*,+%'

CC!.("#$'

___

F3,G222

Page 108: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&B95CAU!0.`8U81C.U!68.C.C!5CA!.UJ.>8.!-.!<A0>A!O5.!8C-8>A!O5.!U1C!0.`8U81C.U"<.C10.UE!)CU6058<1U!AB!JA0U.0!>1C!B1!U8958.C6.7

!!!!0%"3/"!1CbA97!S3C<29S!U.C-7!]2<-C<29>E

x!0.>1<.C=A<1U!.B!J01>.U1E

&a10A!8<JB.<.C6A<1U!.B!<X61-1!=1,c3,1.Vc!.C!BA!>A6.910QA!gB).23,-gc!-.!BA!U8958.C6.!<AC.0A7

2<-C<29>!%U1*-1#'%"2!!!!!E-79@7&7=&9:@:4629&@232&3C<29E!!!!3C<29!>f!695:E

x!>0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!AB!A>.J6A0E

'./8-1!A!BA!N10<A!.C!O5.!.B!jP+!C1U!A`8UA!O5.!AB95CA!0.`8U8;C!.U!<.C10!I.U6f!.B!6A9!U;B1!JA0A!BAU!0.`8U81C.U!<.C10.Uc!L!C1!aAL!CA-A!O5.!8C-8O5.!O5.!5CA!0.`8U8;C!C1!.U!<.C10Mc!-./.<1U!61<A0!5CA!>1CU8-.0A>8;C!.d60AE!VW5X!JAUA0f!>1C!BA!`A08A/B.!(3,1.!.C!BAU!0.`8U81C.U!C1"<.C10.UY!Z1C!.B!>;-891!6AB!L!>5AB!B1!6.C.<1U!.C!.U6.!J5C61c!6.C-0.<1U!5C!&.D$!JA0A!BAU!0.`8U81C.U!<.C10.U!L!5C!,3*!JA0A!BAU!160AUE!HA0A!-.[A0!>1CU8U6.C6.!.U61c!J1-.<1U!8C8>8AB8=A0!BA!`A08A/B.!.C!a)*2$E

HA0A!aA>.0B1c!J1-.<1U!568B8=A0!.B!#01TU.0!-.!ZBAU.UE!!gbAC61!5UA0!.B!'.J50A-10!O5.!>AU8!C1U!1B`8-A<1U!-.B!#01TU.0hE

&/08<1U!.B!/01TU.0!IP.Cp!-.B!P5C-1!kk!!g1B$,___g!!kk!g".1f2$.C>"?g!1!&+b"/Mc!U.B.>>81CA<1U!BA!>A6.910QA!-.!>BAU.U!g'kD$)\B$73)gc!U.B.>>81CA<1U!BA!>BAU.!p$43231,!L!.C!.B!JAC.B!>100.UJ1C-8.C6.!A!BAU!>A6.910QAU!-.!<X61-1U!8C`1>A<1U!.B!<.Cp!>1C6.d65AB!I/16;C!A=5BM!L!.U>19.<1U!BA!1J>8;C!g,$fC%)&$-1.;___g!

F3RG222

Page 109: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@B.98<1U!BA!1J>8;C!g,$f__g

x!6.>B.A<1U7!8C868AB8=A681CE

&B!A>.J6A0c!.B!#01TU.0!C1U!<5.U60A!5CA!JBAC68BBA!-.!<X61-1!.C!.B!JAC.B!8CN.08107

F3SG222

Page 110: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

%..<JBA=A<1U!BA!JBAC68BBA!>1C!B1!U8958.C6.7

C<C6C7=Cn:!!!!E)<C@C7=Cn7&:=&9:@:4629E!!!!3C<29!>f!?7=;:E

x!A>.J6A<1UE

`%0+0-,0I-+0F%$*)$"'G)/"#

@'0+%1042"15#'210%),/%+210(20*7/2%-0+%105'1,%')5%10"2)562'02+0&2'1%920=3,3&3)*3|$C5'&2(5%,%&2',20(21>/K10(2012"0)"2%(%1:

@'0#,"#10(5%+2),#10(20*&%++,%+-021,#0>/2(20'#012"0%1=:

*5021,/452120/1%'(#0#,"#0(5%+2),#0(20*&%++,%+-30#0/'%042"15?'04529%0(20*7/2%-30120(262"=%02'45%"02+0&2'1%920=3,3&3)*3|$0(21(202+0&K,#(#0(20)+%120=,$f0(208#"&%015&5+%"0%0+#07/20<5)5&#10)#'02+0&2'1%920(20)+%120=\$;V0F02+0&K,#(#0(205'1,%')5%0=3,3&3)*3|$h$;V0(20+%0)+%1205)($2B)%$:

xA!J1-.<1U!0.>1<.C=A0!BA!.[.>5>8;CE

&a10A!.B!J01>.U1!U.!61<A!5C!/5.C!0A61!IL!.UA!.U!/5.CA!U.qAB!LA!O5.!O58.0.!-.>80!O5.!.U6f!J01>.UAC-1!.B!jP+!U8C!J01/B.<AUM!L!C1U!-8>.7

FF3G222

Page 111: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

#5U>A<1U!.C!.B!jP+!.B!6A9c!L!`.<1U!O5.!AB95CAU!Jf98CAU!68.C.C!0.U608>>81C.UE

___

CC!("#$'

CCCC!2,23$'0)-3,)CB.3()!.2,23$'

CCCC!,&'nWr!.,&'

CCCC!)$*2),-2,+%*'2;21B!.)$*2),-2,+%*'

CCCC!)$;,*,+%'

CCCCCC!,&'xtxUs!.,&'

CCCCCC!2,0$*2"0('WwwuEUwEWo`wtVuWVusy!.2,0$*2"0('

CCCCCC!-+%2),>?2+)'

CCCCCCCC!?*$)%"0$'c;%} 2!.?*$)%"0$'

CCCCCCCC!,&'so!.,&'

CCCCCC!.-+%2),>?2+)'

CCCCCC!-+00$%2'24-!.-+00$%2'

CCCCCC!2$@2CZ(*V2B)%$MlB.$2$.4$l'J*&~GEEC0*$)2$C,1&$C&:)&C(12&C!.2$@2'

CCCC!.)$;,*,+%'

CC!.("#$'

___

)CU6058<1U!AB!JA0U.0!JA0A!O5.!J01>.U.!B1U!6A9U!S.$2&.3%&31,2R!>1<1!5C!6.d6"6A9!.C`8AC-1!.B!<.CUA[.!=.$2&.3%&31,2V!L!0.>1<.C=A<1UE

Z0.A<1U!.B!<X61-1!L!BA!`A08A/B.!-.!8CU6AC>8Ac!L!U.958<1UE

FFFG222

Page 112: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&B!>A/1!-.!5C!/5.C!0A61!IAJ01d8<A-A<.C6.!F!<8C561!L!_3!U.95C-1U!.C!<8!<fO58CAM!.B!J01>.U1!6.0<8CA!>100.>6A<.C6.E

&C6.U!-.!A/AC-1CA0!.B!.[.<JB1c!`A<1U!A!<80A0!5C!J1>1!-1C-.!U.!.U6f!>1CU5<8.C-1!.B!68.<J1E

HA0A!.U1!568B8=A<1U!BA!>BAU.!c$22)-$`)**;!-.!BA!U8958.C6.!N10<A7

-:;;7A:+7==^!UJL$C7}-:8C7cCVC!N01<(8B.*A<.-7!SoCVC4:8C7y'76C<7y47A:;y@599:<6yHPPKFFFI1k3=S~

x!1/6.C.<1U!B1!U8958.C6.7

5)##-3)?-,,A

I%0<2""%&52',%0B211%$2D%++F0"2)#+2),%05'8#"&%)5?'01#6"20+%0)%',5(%(0(20,52&>#07/20120)#'1/&202'0+#10&K,#(#10F0'#10+%10&/21,"%0(20/'%08#"&%0)+%"%0>%"%0>#(2"0#>,5&5R%"0'/21,"#0)?(5$#02'0+#07/20"21>2),%0%0+%042+#)5(%(0(20292)/)5?':

FF2G222

Page 113: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

D8!J0.U6A<1U!A6.C>8;C!A!B1U!0.U5B6A-1U!-.B!c$22)-$`)**;c!`.<1U!O5.!.B!4^E^l!-.B!68.<J1!U.!.U6f!>1CU5<8.C-1!AB!>1<J08<80!B1U!6.d61UE

Z1<1!.U!/8.C!UA/8-1!O5.!C1!68.C.!U.C68-1!>1<J08<80!6.d61U!>a8>1Uc!`A<1U!A!<1-8N8>A0!5C!J1>1!.B!<X61-1!=&$Z&V!JA0A!>1<J08<80!U1BA<.C6.!B1U!6.d61U!O5.!<8-AC!<fU!-.!2!K/L6.UE

6:k6>!%[2-/+-"1'$!!!!!E*73QC79&:=&6:k6&8:=&9:@:4629E

!!!!|!3-"1'$!|

!!!!3-"1'$!>f!%[2-/+-"1'$!AU#L6.D608C9E

!!!!6:k6!>f!I3-"1'$!U8=.!e!HPJNM!!!!!!!!!!!!!!!!!!!!8Nb05.7}3-"1'$!=8JJ.-~!!!!!!!!!!!!!!!!!!!!8N(ABU.7}3-"1'$~E

*1!.U!C.>.UA081!O5.!<1-8N8O5.<1U!.B!<X61-1!=&$Z&!J10O5.!.B!<X61-1!=D,||3B$7!.U!B1!U5N8>8.C6.<.C6.!8C6.B89.C6.!>1<1!JA0A!-A0U.!>5.C6A!O5.!.B!U608C9!C1!.U6f!>1<J08<8-1E

\1B`.<1U!A!.[.>56A0!.B!8<J106A-10c!5UAC-1!.B!c$22)-$`)**;c!JA0A!`.0!.B!8<JA>61!-.!C5.U601!>A</81E

FF^G222

Page 114: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

].<1U!/A[A-1!.B!68.<J1!-.!FFe!U.95C-1U!A!4^!U.95C-1Uc!CA-A!<AB!JA0A!5C!>A</81!-.!^!1!_!BQC.AU!-.!>;-891E

$60A!1J>8;Cc!JA0A!aA>.0!.U6A!1J68<8=A>8;Cc!a5/8.U.!U8-1!5UA0!.B!`3($0.1a3*$b.1f2$.E!!HA0A!5UA0B1!aAL!O5.!.`AB5A0!B1!U8958.C6.7

+C3:!92?C=:a92c;:9!UJL$C7}-:8C7cCVC!N01<(8B.*A<.-7!SoCVC4:8C7y'76C<7y47A:;y@599:<6yHPPKFFFI1k3=S~E

FF_G222

Page 115: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

?0&)e("]0,)(=(">#)(

@+0`3($0.1a3*$b.1f2$.0&/21,"%0+#10&51&#10(%,#107/202+0c$22)-$`)**;30>2"#0+#10>"212',%02'0/'0O"#H12"07/20>2"&5,20&#(585)%"0(5"2),%&2',20+#10&K,#(#1:0

Z1C!.U61!-A<1U!J10!>1C>B58-1!.B!.[.<JB1!-.B!8<J106A-10!-.!i8?8J.-8AE!D;B1!B.`AC6A<1U!B1U!-A61U!AB!DO5.A?!L!C1!a8>8<1U!CA-A!>1C!.BB1Uc!J.01!0.>5.0-.C!O5.!.B!1/[.68`1!-.B!B8/01!.U!.CU.qA0!A!568B8=A0!5C!A</8.C6.!-.!D<ABB6AB?!L!C1!aA>.0!5CA!AJB8>A>8;[email protected]<1U!aA>.0!5CA!AJB8>A>8;C!C1!608`8AB!JA0A!6.C.0!BA!1J1065C8-A-!-.!<1U60A0!-8N.0.C6.U!1J>81C.U!-.B!A</8.C6.c!J.01!C1!J10O5.!O58U8X0A<1U!aA>.0!BA!AJB8>A>8;C!.C!U8E!!'.!>5ABO58.0!N10<Ac!O5.-AC!61-1U!8C`86A-1U!A!>1<JB.6A0!.U6A!AJB8>A>8;C!-16fC-1BA!-.!C5.`AU!N5C>81CAB8-A-.UE

(=A5<7;&C8:7;>

! :.C.0A0c!>1C!B1U!-A61U!8<J106A-1Uc!5C!-1>5<.C61!1J.C"1NN8>.!>1C!BA!i8?8J.-8A!.C!N10<A61!B8/01E!!+A!8-.A!.U!BB.9A0c!>1C!BA!8CN10<A>8;C!B8/0.c!8C>B5U1!A!BA!9.C6.!O5.!C1!6.C9A!10-.CA-10.UE

FFeG222

Page 116: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

! ]A>.0!5CA!8C6.0NA=!90fN8>A!L!J1C.0!61-1U!B1U!-A61Uc!>1C!BA!AJB8>A>8;Cc!.C!5C!Z'E!!'.!.UA!N10<A!BB.9A0QA<1U!A!BA!9.C6.!O5.!U8!68.C.!10-.CA-10c!J.01!O5.!C1!68.C.!A>>.U1!A!)C6.0C.6E

! )C`.U689A0!>1C!6X>C8>AU!-.!6.d6"<8C8C9!.!8C-.dA0!BA!8CN10<A>8;C!-.!<.[10.U!<AC.0AU!O5.!BAU!1N0.>8-AU!a1L!.C!-QA!J10!BA!i8?8J.-8AE

FF4G222

Page 117: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

($)$41*'1P$4=#+$7

@B!-.UA001BB1!-.B!.[.<JB1!AC6.0810!.U65`1!0.98-1!J10!.B!JA0U.1!-.!5C!A0>a8`1E!@B!D<ABB6AB?!C1U!1N0.>.!.d>.B.C6.U!AB6.0CA68`AU!JA0A!8C6.0A>65A0!>1C!8CN10<A>8;C!O5.!.U6f!N5.0A!-.!BA!8<A9.C!IA0>a8`1Uc!/AU.U!-.!-A61U!6AC61!0.BA>81CAB.U!>1<1!-.!1/[.61Uc!U1>?.6U!-.!6>Jc!.6>ME

D8C!.</A091c!>5AC-1!aA>.<1U!5C!U8U6.<A!>1<JB.6A<.C6.!>1C6.C8-1!.C!BA!8<A9.Cc!BAU!`.C6A[AU!U.!<5B68JB8>ACE!Z5AC-1!<AC8J5BA<1U!1/[.61U!-.!C5.U60A!8<A9.C!C1U!1B`8-A<1U!-.c!J10!.[.<JB1c!A/080!L!>.00A0!>1C.d81C.Uc!A/080!L!>.00A0!A0>a8`1Uc!-.!U865A>81C.U!-.!.0010.U!J10!<1-8N8>A>8;C!-.!BA!8CN10<A>8;C!J10!1601U!J0190A<AUc!.6>E!L!U;B1!AJB8>A<1U!BAU!0.9BAU!-.!5C!A</8.C6.!-.!1/[.61U7!$/[.61U!L!<.CUA[.UE

&a10A!-.UA001BBA0.<1Uc!6A</8XC!JAU1!A!JAU1c!5C!J.O5.q1!<1610!-.!i10?NB1TE

9"(D],">

@+0`+/9#0(20,"%6%9#0ZJ#"-8+#H02'05'$+K1\02102+021,/(5#0(20+#10%1>2),#10#>2"%)5#'%+210(20/'%0%),545(%(0(20,"%6%9#C0)?&#012021,"/),/"%'0+%10,%"2%130)?&#0120"2%+5R%'30)/A+02101/0#"(2'0)#""2+%,54#30)?&#012015')"#'5R%'30)?&#08+/F20+%05'8#"&%)5?'07/201#>#",%0+%10,%"2%10F0)?&#0120+20<%)2012$/5&52',#0%+0)/&>+5&52',#0(20+%10,%"2%1:0r2'2"%+&2',20+#10>"#6+2&%10(208+/9#0(20,"%6%9#0120&#(2+%'0)#'0"2(210(20!2,"5:

*50652'02+0)#')2>,#0(208+/9#0(20,"%6%9#0'#021021>2)=85)#0%0+%0,2)'#+#$=%0(20+%05'8#"&%)5?'30/'0>%",20212')5%+0(2+01#8,H%"20>%"%0,"%6%9#0)#+%6#"%,54#0Z$"#/>H%"2\02'09/1,%&2',202+08+/9#0(20,"%6%9#:

!%"%0&A105'8#"&%)5?'042"C

! <,,>Cll21:H5-5>2(5%:#"$lH5-5lJ#"-8+#H0 0

! <,,>Cll2':H5-5>2(5%:#"$lH5-5lJ#"-8+#H0 00

\A<1U!A!568B8=A0!5CA!<.61-1B19QA!<5L!U8<8BA0!AB!sb.U6!'08`.C!'.`.B1J<.C6tE

?)#/$_(02)%$_)2),":&)%/

@+0#692,54#0(20,#(#0>"#$"%&%(#"0(262"=%012"02+0(20$2'2"%"0'()*+,-.*/0*,-12!-324#*,4":

@P51,2'0'/&2"#1%10"%R#'210>%"%021)"565"0'()*+,-.*/0*,-12!-324#*,4"-5'.63730%+$/'%10(202++%101#'C

! r2'2"%"0.Iv`0210/'%08#"&%0>"2(2)56+20(20(21%""#++%":0*20>/2(201%62"0)/%'(#0120,2"&5'%02+0(21%""#++#0F0'#0'#10>"2#)/>%&#10>#"0/'0+%"$#0)5)+#0(20(2>/"%)5?':

FF,G222

Page 118: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

! @+0.Iv`0'#10(%0+%0#>#",/'5(%(0(20%>"2'(2"0,#(%10+%10+2))5#'2107/202+0)?(5$#0,52'207/20(2)5"'#1:

! @+0.Iv`06"5'(%0&29#"210#>#",/'5(%(210%0+#10/1/%"5#10(20'/21,"#01#8,H%"2:

! @+0.Iv`0>2"&5,207/20'#1#,"#10)#'852&#102'0'/21,"#10)#&>%S2"#10F07/202++#10)#'852'02'0'#1#,"#1:

! ./%'(#021)"565&#10.Iv`30'#1012',5&#10&29#"0)#'0'#1#,"#10&51&#1:

]%F0&/)<%108/2"R%107/20'#10(585)/+,%'021)"565"0.Iv`302',#')210o)?&#0>#(2&#10$2'2"%"0.Iv`p:

@1,%0&2,#(#+#$=%0ZD21,0;"542'0;242+#>&2',0^0D;;\0)#'151,202'0<%)2"07/20+#10,21,10%/,#&A,5)#1012%'0+#107/20"5$2'02+0(21%""#++#:00!%"%021#012$/5&#10+%015$/52',20"2$+%1C

! @1)"565"0'/24#0)?(5$#01?+#0150,2'2&#10/'0,21,0%/,#&A,5)#07/208%++%:

! @+5&5'%"0+%0(/>+5)%)5?':

W>+5)%"021%10T0"2$+%105&>"5&2'02+015$/52',20"5,&#0%+0>"#)21#0(20(21%""#++#C

! E"G"J0@1)"565"0/'0,21,07/208%++2:

! j)(*)J0]%)2"07/202+0,21,08/')5#'20+#0&A10"A>5(%&2',20>#156+2:00!#(2&#10)#&2,2"0)/%',#10>2)%(#107/2"%&#102'021,%02,%>%0F%07/202+0#692,54#02101%+5"120(2+0"#9#0)/%',#0%',21:

! E)]-+/"(0I-(J0@+5&5'%"0,#(%0+%0(/>+5)%)5?'0)"2%(%02'02+0>%1#0%',2"5#":

BA105'8#"&%)5?'C

! @'02+0+56"#C0fD21,^;"542'0;242+#>&2',06F0@P%&>+2g0Z42"0656+5#$"%8=%\:

! <,,>Cll21:H5-5>2(5%:#"$lH5-5lD((0 0

! <,,>Cll2':H5-5>2(5%:#"$lH5-5lD21,m("542'm(242+#>&2',0 0

xA!O5.!61-A!BA!N5C>81CAB8-A-!U.!8<JB.<.C6A!U;B1!-.UJ5XU!-.!O5.!5C!-.6.0<8CA-1!6.U6!B1!0.O58.0Ac!5C!U8U6.<A!-.UA001BBA-1!-.!.U6A!N10<A!>1C68.C.!-.>.CAUc!U8!C1!>.C6.CA0.Uc!-.!6.U6UE!!+A!A-<8C8U60A>8;C!-.!B1U!6.U6!.Uc!J5.Uc!JA06.!-.B!-.UA001BB1!L!U.!aA>.!>1C`.C8.C6.!>1C6A0!>1C!a.00A<8.C6AU!O5.!C1U!AL5-.CE!HA0A!.U>08/80!L!A-<8C8U60A0!B1U!6.U6U!5UA0.<1U!.B!N0A<.T10?!BBA<A-1!DoC86E

Bl%0/

*V'5,0210+%0&%("20(20,#(#10+#108"%&2H#"-10(20V'5,0D21,5'$:

!%"%0&A105'8#"&%)5?'C

! <,,>Cll1/'5,:1#/")28#"$2:'2,l0 0

FFRG222

Page 119: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

! <,,>CllHHH:P>"#$"%&&5'$:)#&l,21,8"%&:<,&0 0

! <,,>Cll21:H5-5>2(5%:#"$lH5-5l!"/26%m/'5,%"5%0 0

! <,,>Cll2':H5-5>2(5%:#"$lH5-5lV'5,m,21,0 0

! <,,>CllHHH:5%&:/'562:)<lw(/)%112l!"#$"%&&2RlE'D<2J26lW",x^*V'5,:>(80 0

! <,,>CllHHH:5%&:/'562:)<lw(/)%112l!"#$"%&&2RlE'D<2J26l*V'5,@'$+51<T:>(80 0

HA0A!AL5-A0C1U!.C!BA!6A0.A!-.!0.NA>6108=A>8;C!C1U!`AB-0.<1U!-.!160A!a.00A<8.C6A7!@B!%.NA>6108C9!#01TU.0E!!

E)]-+/"(0%3$=(">#)(

@+0Q28%),#"5'$0O"#H12"0210/'%04%"5%',20(2+0O"#H12"0(20.+%12107/20'#10#8"2)20#>)5#'210>%"%0%/,#&%,5R%"0+#10#>2"%)5#'210,=>5)%10(20"28%),#"5'$:

!%"%0&A105'8#"&%)5?'042"C0<,,>Cll1,^HHH:)1:/5/):2(/l/12"1l6"%',lQ28%),#"Fl

E)]-+/"(0%3

*20++%&%0Q28%),#"5'$0%+0>"#)21#0(20)%&65%"0/'0151,2&%0(201#8,H%"20(20,%+08#"&%07/20'#0120)%&65202+0)#&>#",%&52',#0451,#0(21(20%8/2"%30>2"#0120&29#"%01/021,"/),/"%05',2"'%0>%"%0<%)2"+#0&A108A)5+0ZF0&A106%"%,#\0(20&#(585)%":

BA105'8#"&%)5?'02'02+0+56"#C0fQ28%),#"5'$0t0d&>"#45'$0,<20(215$'0#802P51,5'$0)#(2g0Z42"0656+5#$"%8=%\:

Z1<.C>.<1U!>1C!.B!.[.<JB1E!*5.U601!a5<8B-.!<1610!-.!i10?NB1T!.U6A0f!>1<J5.U61c!J08C>8JAB<.C6.c!J10!2!90AC-.U!905J1U!-.!1/[.61U7!+A!-.N8C8>8;C!-.!B1U!J01>.U1Uc!L!BAU!8CU6AC>8AU!-.!B1U!J01>.U1UE

+AU!-.N8C8>81C.U!U1C!BA!-.>BA0A>8;C!-.!>1<1!68.C.C!O5.!U.0!B1U!J01>.U1UE!!&BBQ!-.>8<1U!O5.c!J10!.[.<JB1c!B1U!J01>.U1U!BBA<A-1U!s\.C6At!>1<8.C=AC!-.UJ5XU!-.!0.>8/80!5CA!10-.C!-.!J.-8-1E!W5.!A!>1C68C5A>8;C!6.C.<1U!O5.!.<8680!5CA!10-.C!-.!J01-5>>8;C!JA0A!O5.!BA!Nf/08>A!U.!J1C9A!.C!N5C>81CA<8.C61c!B5.91!8CN10<A<1U!AB!-.JA06A<.C61!>1C6A/B.!U1/0.!BA!C5.`A!-.5-A!O5.!.B!>B8.C6.!6.C-0f!>1C!C5.U60A!.<J0.UAc!.6>E

+AU!-.N8C8>81C.U!.C5<.0AC!5CA!U.08.!-.!.U6A-1U!L!BAU!60ACU8>81C.U!.C60.!.BB1UE

FFSG222

Page 120: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

+AU!8CU6AC>8AU!-.!J01>.U1U!U1C!BAU!0.J0.U.C6A>81C.Uc!.C!C5.U601!U8U6.<Ac!-.!5CA!1J.0A>8;C!.C!>50U1E!D8958.C-1!.B!.[.<JB1!AC6.0810!J1-.<1U!-.>80!O5.!5CA!8CU6AC>8A!-.!BA!-.N8C8>8;C!s\.C6At!.U!>5AC-1!.B!>B8.C6.!r5AC!HX0.=!C1U!J8-.!F33!.U>0861081UE!!$60A!8CU6AC>8Ac!-.!BA!<8U<A!-.N8C8>8;Cc!.U!>5AC-1!1601!>B8.C6.!C1U!J8-.!1601!J01-5>61E!\A08AU!8CU6AC>8AU!>100.UJ1C-.C!A!5CA!pC8>A!-.N8C8>8;C!LA!O5.!BA!-.N8C8>8;C!U;B1!8C-8>A!>1<1!.U!.B!J01>.-8<8.C61!L!BAU!8CU6AC>8AU!U1C!5CA!`.C6A!.C!JA068>5BA0E

HA0A!.<J.=A0!A!.U>08/80!5C!J1>1!-.!>;-891!IgxA!6.C91!9ACAU!-.UJ5XU!-.!6AC6A!8C601-5>>8;ChM!>1<.C>.<1U!>1C!5C!6.U6!O5.!J05./.!BA!-.N8C8>8;C!<fU!U8<JB.!O5.!U.!C1U!1>500A!L!1/6.C9A<1U!.B!01[1E

oUA<1U!.B!#01TU.0!-.!ZBAU.U!JA0A!>0.A0c!J08<.01c!5CA!>A6.910QA!-.!>BAU.U!BBA<A-A!gd1.\a*1fg!L!B5.91!>0.A<1U!5CA!U5/>BAU.!-.!`$2&9)2$!BBA<A-A!d1.\a*1f`$2&E

&a10A!>0.A<1U!5CA!>A6.910QA!-.!<X61-1U!BBA<A-A!g.D,,3,-g!Lc!-.C601c!>0.A<1U!5C!<X61-1!BBA<A-1!=&$2&/)c)2'3(B*$8$a3,3%3[,E

!"#$&1/"*"#$*)$/)#/0%3$+"&0)%I-%$:"($k/)#/

I#10&K,#(#107/20)#&52'R%'0)#'0s,21,012"A'0)#'15(2"%(#10&K,#(#10(20,21,5'$0>#"02+08"%&2H#"-0*V'5,:000./%'(#0+20(5$%&#10%+08"%&2H#"-07/20292)/,20,#(#10+#10,21,0(20/'%0(2,2"&5'%(%0)+%123021,205'4#)%"A0%0,#(#10+#10&K,#(#10)/F#10'#&6"210)#&52')2'0)#'0

F23G222

Page 121: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

s,21,:00@+0"21,#0(2+0'#&6"230>#"0)#'42')5?'30'#10(21)"56207/20210+#07/202+0&K,#(#0>"/26%:

+A!<fU!U8<JB.!-.N8C8>8;C!O5.!U.!<.!1>500.!.U!AB91!O5.!>1<8.C>.!L!6.0<8C.!8C<.-8A6A<.C6.c!AB91!>1<17

b0A-5>8<1U!.U.!90fN8>1!A!>;-891!D<ABB6AB?E!'.>8-8<1U!O5.!`A<1U!A!-.N8C80!BAU!60ACU8>81C.U!L!.U6AU!aA0fC!0.N.0.C>8A!A!B1U!.U6A-1UE

6:;6'7-7;.C34=:0:?C<C@CY<!!!!E!95:Q7&=7&8:?C<C@CY<&3B;&;C34=:&42;CQ=:E!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79&^&6:93C<79S!!!!!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.b0ACU8>81C.U!U8=.!f!F~E!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.@U6A-1U!U8=.!f!H~E

!"#$%&"'()%#$*+(,+-.%+"(%#(/*(-#0%+1*2(,34/-5*

!"#$%&'()*+,-,.&)'"$'/()/'()'*&$0($,($/('(0,/#+'1($)#+'*&.&'0#.&)'#',.12(.($/#+'2#)'*2#)()'3')")'.4/&%&)5'672&'$&)'*&$*($/+#.&)'($'*&.&'$&)'8")/#+9#'")#+'()&)'&-:(/&)5

;($)#+'*&.&')('")#$'2&)'&-:(/&)'<)"',$/(+=#>'1?-2,*#@'#$/()'%('1($)#+'*&.&')('+()&20(+A$'2&)'.($)#:()'<2&)'.4/&%&)@'$&)'#3"%#+A'#'*+(#+',$/(+=#*()'.A)'2,.1,#)5

4#/(6+/6(-$*)$,"#$/)#/

!"A),5)%&2',20,#(#10+#10,21,10,52'2'0+%015$/52',208#"&%C

! d'1,%')5%)5?'0(20+#10#692,#1:

F2FG222

Page 122: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

! W+$/'%0#>2"%)5?'01#6"20+#10#692,#1:

! @1>2)585)%)5?'0(2+0"21/+,%(#021>2"%(#:

!%"%021>2)585)%"0)/%+02102+0"21/+,%(#021>2"%(#0(51>#'2&#10(204%"5#10&K,#(#10Z<2"2(%(#10(20`$2&9)2$\:00I#10&A105&>#",%',2101#'C

k-##)(/J0@1>2)585)%07/202+0%"$/&2',#0(262012"0&.D$:

k*)%AJ0@1>2)585)%07/202+0%"$/&2',#0(262012"0a)*2$:

k#f"6,*J0@1>2)585)%07/202+0%"$/&2',#0Z'#"&%+&2',20/'06+#7/2\0(262024%+/%"120%0&.D$:

k#f"6,*%/J$@1>2)585)%07/202+0%"$/&2',#0Z'#"&%+&2',20/'06+#7/2\0(262024%+/%"120%0a)*2$:

k#f"6,*J(-0#)J$@1>2)585)%07/20+%024%+/%)5?'0(2+0>"5&2"0%"$/&2',#0Z'#"&%+&2',20/'06+#7/2\0(2620+%'R%"0/'%02P)2>)5?'0(20+%0)+%120(%(%0Z'#"&%+&2',20%+$/'%01/6)+%120(20YZ%$B&31,\02'02+012$/'(#0%"$/&2',#:

k#f"6,*%/J(-0#)J$@1>2)585)%07/20+%024%+/%)5?'0(2+0>"5&2"0%"$/&2',#0Z'#"&%+&2',20/'06+#7/2\0'#0(262"=%0+%'R%"0/'%02P)2>)5?'0(20+%0)+%120(%(%0Z'#"&%+&2',20%+$/'%01/6)+%120(20YZ%$B&31,\02'02+012$/'(#0%"$/&2',#:

&B!A>.J6A0!.B!<X61-1!.B!A</8.C6.!C1U!8CN10<A!O5.!C1!UA/.!O5.!.U!8$a3,3%3[,8$0.1%[email protected]<1U!>0.A0!BA!>BAU.c!a.0.C>8A!-.!!"#$%&c!.C!BA!>A6.910QA!gd1.\a*1fgE!+5.91!C1U!-8>.!O5.!=)-.$-).8$a3,3%3[,8$`.),23%3[,V7$27$V:)2&)V!.U!5C!U.B.>610!-.U>1C1>8-1c!C1U1601U!>1CN80<A<1U!O5.!.U6f!/8.C!.U>0861E!+5.91!aA>.<1U!B1!<8U<1!>1C!B1U!U.B.>610.U!=7$a3,3%31,$28$`.),23%31,$2!L!=7$a3,3%31,$28$Y2&)71E!@B!#01TU.0!C1U!O5.-A!AUQ7

F22G222

Page 123: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!A/08<1U!BA!a.00A<8.C6A!BBA<A-A!sDoC86!b.U6!%5CC.0t!IP.Cp!-.B!P5C-1!kk!!g1B$,___gCkk!g'z,3&C`$2&CpD,,$.gM!O5.!.U!BA!.C>A09A-A!-.!.[.>56A0!C5.U601U!6.U6UE

! !

Bl%0/$?)#/$E6%%)(

F2^G222

Page 124: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@1,%0<2""%&52',%0'#10>2"&5,20292)/,%"30%/,#&A,5)%&2',230,#(#10+#10,21,10(20+%10)+%121012+2))5#'%(%1:00M#10&/21,"%0,#(%10+%10)+%12107/201#'0<2"2')5%10(20`$2&9)2$0F0'#10>2"&5,2012+2))5#'%"0+%107/207/2"%&#1:

I#106#,#'210,52'2'0+%1015$/52',208/')5#'21C

E$/)$*HM0L/2+420%0++2'%"0+%0+51,%0(20)+%121:0e,5+0)/%'(#0)"2%&#10'/24%10)+%1210(20,21,0#06#""%&#10%+$/'%0F%02P51,2',2:

I,32$)M0M#10>2"&5,2012+2))5#'%"0)+%1210/1%'(#0)%"%),2"210)#&#(5'21:

J2+(M0;2,52'20+%0292)/)5?'0(20+#10,21,1:

E?%5G%$M0@92)/,%0+#10,21,0(20+%0)+%12012+2))5#'%(%:

E?%5B33M0@92)/,%0+#10,21,10(20,#(%10+%10)+%121012+2))5#'%(%1:

*$3$-25"33M0*2+2))5#'%0,#(%10+%10)+%1210(20,21,:

&$*$3$-25"33M0;212+2))5#'%0,#(%10+%10)+%1210(20,21,:

2+#3$5*$3$-2,+%*M0d'452",20+%012+2))5?':00I%10)+%121012+2))5#'%(%10>%1%'0%021,%"0(212+2))5#'%(%10F045)242"1%:

I#10(#10>%'2+2105'82"5#"210&/21,"%'0+%0+51,%0(20,21,07/208%++%"#':0]%F0T0,5>#10(208%++#102'0+#10,21,1C

! I%0)#'(5)5?'07/202P5$5&#102'02+0,21,0'#0120)/&>+2:0W021,#10,21,10120+210%1#)5%02+0)#+#"0%&%"5++#0F0120&/21,"%'02'02+0>%'2+0)2',"%+:

! @+0,21,0)%')2+%0F0'#0,2"&5'%0(20292)/,%":00*20+#10%1#)5%0)#'02+0)#+#"0"#9#0F0120+#10&/21,"%02'02+0>%'2+05'82"5#":

]%)52'(#0)+5)01#6"202+0,21,0)#'02+08%++#0120%6"5"A02+0>"2^(2>/"%(#"0)#'02+02""#"0)#""21>#'(52',2:00!#(2&#10/,5+5R%"02+0(2>/"%(#"0>%"%0)#""2$5"02+08%++#:

@B!DoC86!b.U6!%5CC.0c!AB!A/080U.c!68.C.!U.B.>>81CA-AU!61-AU!BAU!>BAU.U!AUQ!O5.!J0.U81CA<1U!.B!/16;C!7$2$*$%&C)**!JA0A!-.U.B.>>81CA0!61-AU!BAU!>BAU.Uc!B5.91!J0.U81CA<1U!.B!/16;C!63*&$.!.!8C90.UA<1Uc!.C!.B!>5A-01!-.!-8AB191c!B1!U8958.C6.7!d1.\a*1fK

F2_G222

Page 125: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&B!A>.J6A0!C5.U60A!>BAU.!-.!6.U6!0.>8XC!>0.A-A!O5.-A!U.B.>>81CA-A7

x!.U6A<1U!B8U61U!JA0A!.[.>56A0c!J10!J08<.0A!`.=c!C5.U601!6.U6!J0.U81CAC-1!.B!/16;C!pD,C!,$7

F2eG222

Page 126: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

g@50.?Ah!xA!6.C.<1U!.B!01[1!O5.!.U6f/A<1U!/5U>AC-1!IVD.0f!.U61!5CA!-.>BA0A>8;C!J1BQ68>AYME

D.9pC!.B!b''c!Aa10A!-./.<1U!.U>AJA0C1U!-.B!01[1!B1!<fU!0fJ8-1!J1U8/B.E!)C>B5U1!.U6A<1U!A56108=A<1U!A!>1<.6.0!>5AC61U!J.>A-1U!C.>.U86.<1U!>1C!6AB!-.!B190A0B1!>5AC61!AC6.UE!IV@U6A<1U!A56108=A-1U!A!J.>A0!JA0A!.U>AJA0C1U!-.B!01[1Yc!<.[10!<.!1B`8-1!-.!U.9580!aA>8.C-1!5C!JA0AB.B8U<1!>1C!BA!J1BQ68>A!AC6.U!-.!O5.!.B!6.<A!U.!<.!.U>AJ.!-.!BAU!<AC1UME

&a10A!aA>.<1U!>B8>!U1/0.!.B!6.U6!.C!01[1!I.C!.B!JAC.B!8CN.0810M

!L!1/6.C.<1U!.B!J0."-.J50A-10

F24G222

Page 127: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@U6A<1U!AC6.!5CA!U865A>8;C!>1C1>8-A7!oC!1/[.61!C1!.C68.C-.!5C!-.6.0<8CA-1!<.CUA[.!L!.B!J0."-.J50A-10!C1U!1N0.>.!>0.A0!.B!<X61-1E!!+1!aA>.<1U!.C!BA!>BAU.!8$a3,3%3[,8$0.1%$21c!.C!BA!>A6.910QA!g)%%$223,-gE

7A9:A790:?C<C@CY<0:+97<;C@CY<>!-"%'31*16'+-"1'$!8:;8:>!/3-%(#U/3(/+-"1'$)m7;67>!/3-%(#g%3-%+-"1'$!

!!!!E(A9:A7&5<7&8:?C<C>CY<&8:&697<;C@CY<&@2<&:=&<23Q9:&8782h&_5:&5<:&82;&:;6782;&8:&<23Q9:;&8782;E

!!!!697<;C@C2<:;!A--7!z-"%'31*16'+-"1'$E!/3-%(#U/3(/+-"1'$E!/3-%(#g%3-%+-"1'${

&B!A>.J6A0!.B!A</8.C6.!C1U!1N0.>.!BA!J1U8/8B8-A-!-.!>0.A0!BA!`A08A/B.!-.!8CU6AC>8A!&.),23%31,$2c!C1U1601U!A>.J6A<1U!BA!J01J5.U6A!L!.B!-.J50A-10!C1U!O5.-A!AUQ7

F2,G222

Page 128: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@B.98<1U!>1C68C5A0!J0.U81CAC-1!.B!/16;C!0.1%$$7E!L!1/6.C.<1U!B1!U8958.C6.7

H0.U81CA<1U!.B!/16;C!8$"D-!JA0A!ACAB8=A0!5C!J1>1!O5.!.U!B1!O5.!.U6f!JAUAC-1E!!D.B.>>81CA<1Uc!.C!.B!JAC.B!U5J.0810c!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR)-.$-).8$a3,3%3[,8$`.),23%3[,V7$27$V:)2&)VE!\.<1U!O5.!.B!<.CUA[.!U.!.U6f!.C`8AC-1!A!BA!0.>8XC!>0.A-A!`A08A/B.!-.!8CU6AC>8A!&.),23%31,$2E!D.B.>>81CA<1U!BA!`A08A/B.!-.!8CU6AC>8A!.C!.B!JAC.B!8CN.0810!8=O58.0-1!L!`.<1Uc!.C!.B!JAC.B!U8958.C6.c!O5.!68.C.!5C!,3*E

'./.0QA<1U!6.C.0c!.C!.UA!`A08A/B.c!AB9pC!68J1!-.!>1B.>>8;C!>1<1!5C!'$&E!!@U6.!.U!5C!>AU1!LA!>1C1>8-17!H1-.<1U!8<JB.<.C6A0!.B!<X61-1!=3,3&3)*3|$!JA0A!8C8>8AB8=A0!BA!`A08A/B.!-.!8CU6AC>8A!

F2RG222

Page 129: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&.),23%31,$2!1!J1-.<1U!5UA0!.B!8-81<!BA=L"8C868AB8=A681CE!H0.N.08<1Uc!.C!.U6.!J5C61c!BA!1J>8;C!-.B!BA=L"8C868AB8=A681C!LA!O5.!.U6A<1U!AJ50A-1U!JA0A!.U>AJA0C1U!-.B!01[1!L!BA!J1-.<1U!8<JB.<.C6A0!-80.>6A<.C6.!.C!.B!-.J50A-107

7A9:A790:?C<C@CY<0:+97<;C@CY<>!-"%'31*16'+-"1'$!8:;8:>!/3-%(#U/3(/+-"1'$)m7;67>!/3-%(#g%3-%+-"1'$!

!!!!E(A9:A7&5<7&8:?C<C@CY<&8:&697<;C@CY<&@2<&:=&<23Q9:&8782h&_5:&5<:&82;&:;6782;&8:&<23Q9:;&8782;E

!!!!697<;C@C2<:;!8U*8B!!!!!!!!8Nb05.7}697<;C@C2<:;!>f!.:6!C.T~E

!!!!697<;C@C2<:;!A--7!z-"%'31*16'+-"1'$E!/3-%(#U/3(/+-"1'$E!/3-%(#g%3-%+-"1'${

&>.J6A<1U!L!>1C68C5A<1U!J0.U81CAC-1!.B!/16;C!0.1%$$7E

&a10A!8<JB.<.C6A<1U!.B!<X61-1!.C!BA!>BAU.!8$a3,3%3[,8$0.1%$21c!.C!BA!>A6.910QA!g)%%$223,-gc!-.!BA!U8958.C6.!N10<A7

8:?C<C@C2<:;0:+97<;C@C2<:;!!!!E%:;42<8:&=7;&8:?C<C@C2<:;&8:&697<;C@C2<:;&8:=&9:@:4629E!!!!j!697<;C@C2<:;

&>.J6A<1U!L!>1C68C5A<1UE

F2SG222

Page 130: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!8<JB.<.C6A<1U!.B!<X61-1!.C!BA!>BAU.!8$a3,3%3[,8$0.1%$21c!.C!BA!>A6.910QA!g)%%$223,-gc!-.!BA!U8958.C6.!N10<A7

8:?C<C@C2<:;0:$;6782;!!!!E%:;42<8:&=7;&8:?C<C@C2<:;&8:&:;6782;&8:=&9:@:4629E

!!!!|!"/35,-%(#!|

!!!!"/35,-%(#!>f!.:6!C.TE!!!!"/35,-%(#!A--&BB7!I697<;C@C2<:;!>1BB.>67!}7/%*B!|!/%*B!U.>1C-~ME!!!!"/35,-%(#!A--&BB7!I697<;C@C2<:;!>1BB.>67!}7/%*B!|!/%*B!6a80-~ME

!!!!j!"/35,-%(#E

8",)++0"%)#$h$&)%#-G)$k+",,)+/J

@4%+N%02+06+#7/20(%(#0>#"0)%(%02+2&2',#0(2+0"2)2>,#"0)#&#0%"$/&2',#:00.#+2))5#'%0+#10"21/+,%(#102'0/'%0)#+2))5?'0(2+0,5>#0(2+0"2)2>,#":0Q21>#'(2021%0)#+2))5?'0'/24%0)#&#0"21/+,%(#:

4G)&:,"#J

7,-$/-',-$*),$W7ZR0,#C0R[\0)#++2),C0aC!"#$0c0!"#$0O0Wb:

7m:-($"$0&:-(n7ZR0,#C0R[\0)#++2),C0aC!"#$0c0!"#$0242'b:

7/"*"$-$&-AP#+6,-#7

M6%-$+-*)%-M0)#++2),C0aC!"#$0c0!"#$0%1V>>2")%12b:

&>.J6A<1U!L!>1C68C5A<1UE!!&a10A!BA!.[.>5>8;C!6.0<8CA!/8.Cc!J1-.<1U!`1B`.0!A!.[.>56A0!JA0A!1/6.C.0!.B!`.0-.!IJ0.U81CAC-1!.B!/16;C!pD,C!,$ME

F^3G222

Page 131: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

D.9pC!.B!b''c!Aa10A!-./.<1U!0.NA>6108=A0!.B!>;-891!JA0A!0.<1`.0!61-1U!B1U!J.>A-1U!O5.!aABBA<1U!>1<.68-1!.C!.B!JAU1!AC6.0810E!!@B!<X61-1!O5.!8<JB.<.C6A<1U!C1!O5.-;!<5L!>BA01c!AUQ!O5.!`A<1U!A!B8<J8A0B1!5C!J1O5861E!!#5U>A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR7$a3,3%31,$28$Y2&)712!.C!.B!#01TU.0!-.!ZBAU.U7

+1!J08<.01!O5.!`A<1U!A!aA>.0!.U!<.[10A0!BA!B.98/8B8-A-!-.B!<X61-1!5UAC-1!.B!JA60;C!BBA<A-1!s@dJBA8C8C9!b.<J10A0L!\A08A/B.tE

F^FG222

Page 132: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!"#$%&"'(6$(.7$(4*+*0"(%$5+-4-+(589-:"(/-.,-"

B2'*7%,8&')('2(('3')('.&%,=,*#'."*C9),.#)'.A)'0(*()'%('2#)'D"(')('()*+,-(5'!"#2D",(+',$0(+),7$'($'8($(+#+'*7%,8&'2,.1,&'3'($/($%,-2('1#8#+A'."*C&)'-($(=,*,&)'($'(2'="/"+&5

4L:,-0%0%3$?)&:"(-(A$j-(0-',)

ZL%"5%6+20D2&>#"%+0@P>+5)%,54%\

o.?&#0120>/2(2015&>+585)%"0/'%02P>"215?'0)#&>+29%0(2',"#0(20/'0&K,#(#p

! @P,"%20/'%01/62P>"215?'0(21(20+%02P>"215?'0)#&>+29%30%15$'%02+04%+#"0%0/'%04%"5%6+20,2&>#"%+0%',210(20+%02P>"215?'0)#&>+29%:0Q22&>+%R%"0+%01/62P>"215?'0>#"0+%04%"5%6+2:0@+0'#&6"20(20+%04%"5%6+205'(5)%"A07/2015$'585)%0+%01/62P>"215?'0%/&2',%'(#0+%0+2$565+5(%(0(2+0&K,#(#:

BA105'8#"&%)5?'02'02+0+56"#C0f*&%++,%+-0O21,0!"%),5)20!%,,2"'1g0Z42"0656+5#$"%8=%\:

HA0A!aA>.0!.U6A!0.NA>6108=A>8;C!568B8=A0.<1U!5CA!-.!BA!N5C>81CAB8-A-.U!-.B!%.NA>6108C9!#01TU.0E!D.B.>>81CA<1U!BA!U5/.dJ0.U8;C!O5.!O5.0.<1U!.d60A.0E

H.-8<1U!.B!<.Cp!>1C6.d65AB!L!.B.98<1U!BA!1J>8;C!�$Z&.)%&C&1C&$(B1.).;___�!O5.!.U6f!-.C601!-.B!U5/<.Cp!�2$*$%&31,___�E

F^2G222

Page 133: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

b.>B.A<1Uc!.C!.B!>5A-01!-.!-8fB191c!.B!C1</0.!-.!BA!`A08A/B.!6.<J10AB7!$2&)7128$27$E

x!A>.J6A<1UE

F^^G222

Page 134: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

%.J.68<1U!BA!1J.0A>8;C!JA0A!BA!160A!U5/.dJ0.U8;CE

oUAC-1!$2&)712{)2&)!>1<1!C1</0.!-.!`A08A/B.!6.<J10ABE

F^_G222

Page 135: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!0..U>08/8<1U!.B!<X61-1!-.!BA!U8958.C6.!N10<A7

8:?C<C@C2<:;0:$;6782;!!!!E%:;42<8:&=7;&8:?C<C@C2<:;&8:&:;6782;&8:=&9:@:4629E

!!!!|!/3-%(#3U/3(/!/3-%(#3g%3-%!|!!!!/3-%(#3U/3(/!>f!697<;C@C2<:;!>1BB.>67!}7/%*B!|!/%*B!U.>1C-~E!!!!/3-%(#3g%3-%!>f!697<;C@C2<:;!>1BB.>67!}7/%*B!|!/%*B!6a80-~E!!!!j!I/3-%(#3U/3(/!h!/3-%(#3g%3-%M!AUD.6E

8",)++0"%)#$h$&)%#-G)$k.

.#')%,2'%02+0"2)2>,#"0F02+0%"$/&2',#02'0/'%01#+%0)#+2))5?'0F0"21>#'(20+%0'/24%0)#+2))5?':

4G)&:,"#J

M6%$#/(0%3M0.0M$M0.0M"/("$#/(0%3M:

sZR0W\0.0sZ0Q0<\:

sZR0W\0.0M*0)3"M:

ZR0,#C0R[\0.0ZR0,#C0U\:

F^eG222

Page 136: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

@B!<X61-1c!.U>0861!AUQc!-.[A!<5L!>BA01!O5.!61-AU!BAU!-.N8C8>81C.U!-.!.U6A-1U!U1C!BA!>1C>A6.CA>8;C!-.!B1U!.U6A-1U!-.U-.!L!B1U!.U6A-1U!aAU6Ac!U8C!-5JB8>A-1UE

&a10A!.U!.B!<1<.C61!-.!.[.>56A0!C5.`A<.C6.!B1U!6.U6U!A561<f68>1U!JA0A!AU.950A0C1U!O5.!C1!a.<1U!0161!CA-A!>1C!BA!0.NA>6108=A>8;CE

].<1U!>5<JB8-1!5C1!-.!B1U!>8>B1U!-.B!b''E!!@U>08/8<1U!5C!6.U6!AC6.U!-.!8<JB.<.C6A0!BA!N5C>81CAB8-A-c!1/65`8<1U!5C!01[1c!JAUA<1U!AB!`.0-.!B1!<fU!0fJ8-1!J1U8/B.c!0.NA>6108=A<1U!.B!>;-891!JA0A!O5.!O5.-.!Z+W(!IZ;-891!+8<J81!W5.!(5C>81CAME

&a10A!.U>08/A<1U!1601!6.U6!O5.!8CU6AC>8.!5CA!-.N8C8>8;C!-.!J01>.U1!5C!J1>1!<fU!>1<JB8>A-A7

)C601-5>8<1U!1601!6.U6c!.C!BA!<8U<A!>BAU.E

6:;60:?C<C@CY<.C34=:!!!!E!95:Q7&5<7&8:?C<C@CY<&;C34=:E!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE

F^4G222

Page 137: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79S!!!!!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!!!!!aAU6A7!S(SE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S6:93C<79S!!!!!!!!!!!!-.U-.7!S(S!!!!!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.b0ACU8>81C.U!U8=.!f!H~E!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.@U6A-1U!U8=.!f!I~E

x!.[.>56A<1U!C5.`A<.C6.!B1U!6.U6UE

*A-A!<ABE!+A!8<JB.<.C6A>8;C!O5.!6.C.<1U!a.>aA!.U!U5N8>8.C6.!JA0A!.B!1601!>AU1E!!D89A<1U!8C601-5>8.C-1!1601!>AU1c!.U6.!U.0f!ApC!<fU!>1<JB8>A-1!O5.!.B!AC6.0810E

)C601-5>8<1U!1601!6.U6E

F^,G222

Page 138: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

6:;60:?C<C@CY<#2+9CiC7=!!!!E!95:Q7&5<7&8:?C<C@CY<&<2&69CiC7=E!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S;CA5C:<6:S!!!!!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!!!!!aAU6A7!S(SE

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S;CA5C:<6:S!!!!!!!!!!!!-.U-.7!S(S!!!!!!!!!!!!aAU6A7!SaSE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S7<6:9C29S!!!!!!!!!!!!-.U-.7!SaS!!!!!!!!!!!!aAU6A7!S(SE

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S;CA5C:<6:S!!!!!!!!!!!!-.U-.7!SaS!!!!!!!!!!!!aAU6A7!S*SE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S7<6:9C29S!!!!!!!!!!!!-.U-.7!S*S!!!!!!!!!!!!aAU6A7!SaSE

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S;CA5C:<6:S!!!!!!!!!!!!-.U-.7!S*S!!!!!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.b0ACU8>81C.U!U8=.!f!L~E!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.@U6A-1U!U8=.!f!K~E

x!`1B`.<1U!A!.[.>56A0!B1U!6.U6UE

F^RG222

Page 139: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

xA!6.C.<1U!^!6.U6U!.C!`.0-.!>1C!BA!<8U<A!8<JB.<.C6A>8;C!O5.!a8>8<1U!JA0A!.B!J08<.01!-.!.BB1UE!D8C!.</A091!LA!.U!a10A!-.!J.CUA0!-.!160A!N10<AE!!b.C.<1U!^!6.U6U!O5.!J05./AC!-8N.0.C6.U!8CU6AC>8A>81C.U!`fB8-AU!J.01!VO5X!JAUA!U8!>0.A<1U!8CU6AC>8AU!.00;C.AUYE

!"#$%&"'()+"4*+(/*$($-0;*5-"#%$(/<.-0%

!"#$%&')('C#*($'/()/)'()',.1&+/#$/('1+&-#+E'/#.-,4$E'2#)'),/"#*,&$()'%('29.,/(5

6&%.,/"''6,'1&+'#28"$#'*#")#'/($(.&)'D"('1+&-#+'D"('"$'%(/(+.,$#%&'0#2&+'()/4'($/+('F'3'GHE'2#'=&+.#'I*&++(*/#J')(+9#'D"('()*+,-#.&)E'#%(.A)'%('2&)'/()/)'1#+'2&)'*#)&)'0A2,%&)E'/()/)'D"('()1(*,=,D"($'D"('K'3'GG')&$'*#)&)',$0A2,%&)5

@C!BA!8<JB.<.C6A>8;C!A>65AB!.C`8A<1U!`A081U!<.CUA[.U!I5C1!J10!60ACU8>8;CM!JA0A!>0.A0!5CA!-.N8C8>8;C!>1<JB.6A!L!C1!C1U!.U!J1U8/B.!`AB8-A0!.C!>A-A!BBA<A-A!LA!O5.c!.B!90AN1c!C1!U.0QA!>100.>61!.C!B1U!.U6A-81U!8C6.0<.-81UE!!+A!N10<A!<fU!U8<JB.!O5.!J1-.<1U!8<JB.<.C6A0!.U!J.-80c!.dJBQ>86A<.C6.c!A!BA!-.N8C8>8;C!O5.!U.!`AB8-.!A!U8!<8U<A!L!C1U!8C-8O5.!U8!.U!5CA!8CU6AC>8A!`fB8-A!1!C1E

P1-8N8>A<1U!B1U!6.U6U!A90.9AC-1!B1!U8958.C6.7

;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!.U\AB8-A~E

W5.-AC-1!B1U!6.U6U!-.!BA!U8958.C6.!N10<A7

F^SG222

Page 140: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

6:;6'7-7;.C34=:0:?C<C@CY<!!!!E!95:Q7&=7&8:?C<C@CY<&3B;&;C34=:&42;CQ=:E!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79&^&6:93C<79S!!!!!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!.U\AB8-A~E!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.b0ACU8>81C.U!U8=.!f!F~E!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.@U6A-1U!U8=.!f!H~E

6:;60:?C<C@CY<.C34=:!!!!E!95:Q7&5<7&8:?C<C@CY<&;C34=:E!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79S!!!!!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!!!!!aAU6A7!S(SE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S6:93C<79S!!!!!!!!!!!!-.U-.7!S(S!!!!!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!.U\AB8-A~E!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.b0ACU8>81C.U!U8=.!f!H~E!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.@U6A-1U!U8=.!f!I~E

6:;60:?C<C@CY<#2+9CiC7=!!!!E!95:Q7&5<7&8:?C<C@CY<&<2&69Ci=7=E!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S;CA5C:<6:S!!!!!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!!!!!aAU6A7!S(SE

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S;CA5C:<6:S

F_3G222

Page 141: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!!!!!!!!!-.U-.7!S(S!!!!!!!!!!!!aAU6A7!SaSE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S7<6:9C29S!!!!!!!!!!!!-.U-.7!SaS!!!!!!!!!!!!aAU6A7!S(SE

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S;CA5C:<6:S!!!!!!!!!!!!-.U-.7!SaS!!!!!!!!!!!!aAU6A7!S*SE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S7<6:9C29S!!!!!!!!!!!!-.U-.7!S*S!!!!!!!!!!!!aAU6A7!SaSE

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S;CA5C:<6:S!!!!!!!!!!!!-.U-.7!S*S!!!!!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!.U\AB8-A~E!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.b0ACU8>81C.U!U8=.!f!L~E!!!!;:=?!Ua15B-7}(/@1'1*16'U/!"#*/3#!-.N8C8>81C.U'.@U6A-1U!U8=.!f!K~E

&a10A!.[.>56A<1U!B1U!6.U6UE

H0.`8U8/B.<.C6.!1/6.C.<1U!^!01[1UE

F_FG222

Page 142: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

H0.U81CA<1U!U1/0.!>5ABO58.0!-.!B1U!6.U6U!JA0A!1/6.C.0!.B!J0."-.J50A-10!L!J0.U81CA<1U!.B!/16;C!9.$)&$!JA0A!>0.A0!.B!<X61-1!NAB6AC6.!.C!BA!>BAU.!8$a3,3%3[,8$0.1%$21c!.C!BA!>A6.910QA!g&$2&3,-gE

x!B1!8<JB.<.C6A<1Uc!J10!Aa10A!I0.>5.0-.C!O5.!6.C.<1U!O5.!.U>AJA0C1U!-.B!01[1!B1!<fU!0fJ8-1!O5.!J1-A<1UMc!-.!BA!U8958.C6.!N10<A7

:;,7=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E!!!!j!695:

Z.00A<1U!.B!-.J50A-10!L!.[.>56A<1U!61-1U!B1U!6.U6UE

F_2G222

Page 143: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!-./.0QA<1U!.U>08/80!AB95C1U!6.U6U!O5.!<5.U60.C!>5AB.U!U1C!B1U!>AU1U!8C`fB8-1UE

oC1!-.!B1U!>AU1U!8C`fB8-1U!U.0QA!5CA!-.N8C8>8;C!-.!J01>.U1!O5.!C1!6.C9A!5C!.U6A-1!8C8>8ABE!\1B>A<1U!.U1!.C!5C!6.U67

6:;60:?C<C@CY<.C<!9C<@C4C2!!!!E!95:Q7&5<7&8:?C<C@CY<&C<iB=C87&_5:&<2&6C:<:&5<&:;6782&C<C@C7=&==73782&S49C<@C4C2SE!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79S!!!!!!!!!!!!-.U-.7!S(S!!!!!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-C67}(/@1'1*16'U/!"#*/3#!.U\AB8-A~E

x!.[.>56A<1U!B1U!6.U6UE

F_^G222

Page 144: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

$/6.C.<1U!5C!6.U6!A<A08BB1!I0.>5.0-.C!O5.!B1U!6.U6U!A<A08BB1U!U1C!AO5.BB1U!O5.!C1!>A5UAC!.0010c!J.01!O5.!AB95CA!-.!BAU!>1C-8>81C.U!C1!U.!>5<JB.CME!!]A>.<1U!>B8>!U1/0.!.B!6.U6!A<A08BB1!L!1/6.C.<1U!.B!J0."-.J50A-10E

Z5AC-1!aA>.<1U!>B8>!.C!5C!6.U6!.C!A<A08BB1c!.B!N0A<.T10?!JA0A!BA!.[.>5>8;C!.C!5C!J5C61!AC6.0810!A!C5.U601!6.U6E!!@U61!U.!aA>.!JA0A!6.C.0!BA!1J1065C8-A-!-.!-.J50A0!JAU1!A!JAU1!.B!6.U6!AC6.U!-.!BB.9A0!A!BAU!>1C-8>81C.UE!!@C!.U6.!>AU1!C1!C1U!8C6.0.UA!.[.>56A0!.B!6.U6!JAU1!A!JAU1c!AUQ!O5.!J0.U81CA<1U!.B!/16;C!0.1%$$7!JA0A!U.9580!L!1/6.C.0!.B!-.J50A-10!.C!.B!J5C61!-.!NABB1E

&a10A!BA!.[.>5>8;C!U.!-.68.C.!.C!.B!J5C61!.dA>61!-.B!NABB1!L!1/6.C.<1U!.B!J0."-.J50A-10!JA0A!J1-.0!8C-A9A0!U1/0.!B1!O5.!1>5008;E!H0.U81CA<1U!.B!/16;C!8$"D-!L!/5U>A<1Uc!.C!.B!JAC.B!U5J.0810c!.B!>1C6.d61!-.!.[.>5>8;C!>100.UJ1C-8.C6.!A!C5.U601!<X61-1E

F__G222

Page 145: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!`.<1U!>BA0A<.C6.!O5.!.B!NABB1!U.!-A!.C!BA!>1C-8>8;C!O5.!C1!U.!>5<JB.E!!W5.-A!.C!.`8-.C>8A!O5.!6.C.<1U!O5.!8<JB.<.C6A0!<fU!N5C>81CAB8-A-!.C!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR$2i)*37)E

oUAC-1!AB9pC!#01TU.0!<1-8N8>A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR$2i)*37)!-.!BA!U8958.C6.!N10<A7

:;,7=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E!!!!;:=?!aAB6E!!!!j!695:

5)%#-G)$kf-,/

W0)/%+7/52"0#692,#0120+20>/2(202'45%"02+0&2'1%920=:)*&0>%"%0<%)2"0f1%+,%"g0%+0(2>/"%(#":0!#(2&#102'45%"021,20&2'1%9202'0)/%+7/52"0>/',#0(2+0)?(5$#0(#'(20'2)215,2&#10/'06"2%->#5',:

F_eG222

Page 146: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

]A>.<1U!>B8>!U1/0.!.B!6.U6!.C!A<A08BB1c!L!J0.U81CA<1U!.B!/16;C!0.1%$$7!.C!.B!J0."-.J50A-10E

H0.U81CA<1U!.B!/16;C!8$"D-E!L!/5U>A<1Uc!.C!.B!-.J50A-10c!.B!>1C6.d61!>100.UJ1C-8.C6.!AB!<X61-1!8$a3,3%3[,8$0.1%$21RR$2i)*37)E

!"#$%&"(=(6/(9%,;+*9"+(#"$(4+-#9*(.7$(-#1"+.*5-8#(*(/*(>"+*(9%(

F_4G222

Page 147: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

-.,/%.%#0*+

L.12(.($/#+'"$'.4/&%&'($'(2'%(1"+#%&+'/,($('"$#'0($/#:#'."3',.1&+/#$/('*&$'+()1(*/&'#'C#*(+2&'($'2&)'-+&M)(+N'O,)1&$(.&)'%(2'*&$/(P/&'($'(2'*"#2')('#*/,07'(2'.4/&%&5

O,)1&$(.&)'%(',$=&+.#*,7$')&-+('(2'+(*(1/&+'<($'2&)'Q'1#$(2()'%('#-#:&'#'2#',>D",(+%#@E',$=&+.#*,7$'%(2'*&$/(P/&'*&.&'#+8".($/&)'3'0#2&+()'%('0#+,#2()'/(.1&+#2()'<($'2&)'Q'1#$(2()'%('#-#:&'#'2#'%(+(*C#@E',$=&+.#*,7$'%('2#'1,2#'%('*&$/(P/&)'<(2'*#22R)/#*S@E'(/*5

T&%,=,*#+'#28?$'.4/&%&E'#8+(8#$%&'"$'=:)*&'1#+#'D"('(2'%(1"+#%&+'$&)'%(',$=&+.#*,7$'%('*&$/(P/&E'()'"$#'*&)/".-+('."3'(P/($%,%#'($/+('2&)'1+&8+#.#%&+()'%('6.#22/#2S5

%.8<JB.<.C6A<1U!.B!<X61-1!-.!BA!U8958.C6.!N10<A7

:;,7=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E

!!!!I;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!S49C<@C4C2SM!!!!!!!!!8N(ABU.7}j!?7=;:~E

!!!!j!695:

8",)++0"%)#$h$&)%#-G)$k0%+,6*)#J

Q21>#'(201502+0#692,#0(%(#0)#&#0%"$/&2',#0210/'#0(20+#102+2&2',#10(2+0"2)2>,#":

x!.[.>56A<1U!B1U!6.U6UE

F_,G222

Page 148: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

\.0-.E

&a10A!O5.!<.!-1L!>5.C6Ac!>1<.68<1U!5C!.0010!106190fN8>1!.C!.B!C1</0.!-.!<X61-1!=$2i)*37)E!*5.`A<.C6.!568B8=A0.<1U!5CA!-.!BAU!1J>81C.U!-.B!%.NA>6108C9!#01TU.0!JA0A!>100.980B1E!!#5U>A<1U!L!U.B.>>81CA<1U!.B!<X61-1!.C!>5.U68;C!.C!5C!#01TU.0!-.!ZBAU.UE

H.-8<1U!.B!<.Cp!>1C6.d65AB!U1/0.!.B!<X61-1c!L!U.B.>>81CA<1U!BA!1J>8;C!g.$,)($C($&:17gE

F_RG222

Page 149: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

$/6.C.<1U!5CA!`.C6ACA!O5.!C1U!J.0<86.!>A</8A0!.B!C1</0.!-.!<X61-1c!>1<1!AUQ!6A</8XC!>A</8A0!.B!10-.C!-.!B1U!A095<.C61U!IU8!B1U!a5/8.0AME

@C!.B!J08<.0!JAC.Bc!-1C-.!-8>.!$2i)*37)c!68J.A<1U!$2i�*37)!I.U6A!`.=!>1C!68B-.Mc!A>.J6A<1U!>1C!&+b"U!L!J0.U81CA<1U!.B!/16;C!1\E!!@C!.U6.!<1<.C61c!.B!%.NA>6108C9!#01TU.0c!>A</8;!.B!C1</0.!-.B!<X61-1!L!>100898;!61-1U!B1U!<X61-1U!-1C-.!U.!.C`8A/A!.B!<.CUA[.!=$2i)*37)E

HA0A!`AB8-A0!B1U!>A</81U!O5.!a8=1!.B!%.NA>6108C9!#01TU.0c!J1-.<1U!J0.U81CA0!.B!/16;C!2$,7$.2C

F_SG222

Page 150: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

-.B!#01TU.0!-.!ZBAU.Uc!U.B.>>81CA<1U!$2i�*37)c!L!`.<1U!O5.!<X61-1U!-.!61-A!BA!8<A9.C!.C`QAC!.U.!<.CUA[.E

B)%*)(#

I%08/')5?'012'(2"10Z(51>#'56+20)#&#0/'06#,?'02'0+#106"#H12"30)#&#0/'%0#>)5?'0(2+0&2'N0)#',2P,/%+01#6"202+0&K,#(#0#0>"215#'%'(#0WID^'\0'#106"5'(%0/'06"#H12"0)#'0,#(#10+#10&K,#(#10(20+%05&%$2'07/202'4=2'0(5)<#0&2'1%92:

@1,%0210/'%0(20+%0>"5')5>%+210<2""%&52',%10>%"%06/1)%"02'0*&%++,%+-:00.%(%0)%1#07/202+0[12'(2"1[0'#10&/21,"%0210/'0292&>+#0(20/1#0(2+0&2'1%92:0G0'#0210/'0292&>+#0)/%+7/52"%3015'#07/201#'0292&>+#107/2021,A'08/')5#'%'(#02'0+%05&%$2'0F07/230++2$%(#02+0)%1#30>#(2&#10(2>/"%"0>%1#0%0>%1#:0B/)<#0&29#"07/20/'%0(#)/&2',%)5?'021,A,5)%02'0%+$N'0%")<54#02P,2"'#:

&-.<fU!-./.0QA<1U!.[.>56A0c!C5.`A<.C6.c!B1U!6.U6U!JA0A!AU.950A0C1U!O5.!C1!a.<1U!0161!CA-AE

Fe3G222

Page 151: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!O5.!.U6A<1U!.C!`.0-.c!.U!.B!<1<.C61!JA0A!B8<J8A0!5C!J1>1!.B!>;-891!O5.!A>A/A<1U!-.!9.C.0A0E

:;,B=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E

!!!!I;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!S49C<@C4C2SM!8N(ABU.7!}j?7=;:~E!!!!j695:

oCA!-.!BAU!>1UAU!O5.!0.U6AC!>BA08-A-!.C!.B!>;-891!.U!.B!5U1!-.!>1CU6AC6.U!v<f98>AUvE!!oCA!>1CU6AC6.!<f98>A!.U!5CA!>1CU6AC6.!I<5>aAU!`.>.U!5C!B86.0ABM!O5.!AJA0.>.!.C!.B!>;-891!U8C!<fUc!U8C!.UJ.>8N8>A0!U5!U89C8N8>A-1E!!HA0A!.`86A0!.U6.!<AB!`A<1U!A!568B8=A0!.B!JA60;C!vZ1CU6AC6!P.6a1-vE

8"%#/-%/$5)/f"*

ZBK,#(#0.#'1,%',2\

o.?&#0120>/2(20)#(585)%"0/'%0)#'1,%',206"5'(%'(#05'8#"&%)5?'01#6"201/015$'585)%(#p

! ."2%"0/'0&K,#(#07/20(24/2+420+%0)#'1,%',2:0W>"#42)<%"120(2+0'#&6"20(2+0&K,#(#30F02+0)#&2',%"5#0(2021,230>%"%02P>+5)%"02+015$'585)%(#0(20+%0)#'1,%',2:

BA105'8#"&%)5?'02'02+0+56"#C0f*&%++,%+-0O21,0!"%),5)20!%,,2"'1g0Z42"0656+5#$"%8=%\:

*1U!`AB-0.<1Uc!C5.`A<.C6.c!-.!5CA!-.!BAU!N5C>81CAB8-A-.U!-.B!%.NA>6108C9!#01TU.0!IgZ;<1!<.!95U6A!.B!%.NA>6108C9!#01TU.0hME!!D.B.>>81CA<1U!BA!JA06.!O5.!>100.UJ1C-.!A!BA!>1CU6AC6.c!J.-8<1U!.B!

FeFG222

Page 152: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

<.Cp!>1C6.d65AB!L!U.B.>>81CA<1U!BA!1J>8;C!g$Z&.)%&C($&:17gE

)C90.UA<1U!.B!C1</0.!-.B!<X61-1!I-.!BA!<8U<A!N10<A!O5.!B1!a8>8<1U!>5AC-1!>A</8A<1U!.B!C1</0.!AB!<X61-1!=$2i)*37)ME!)C90.UA<1U7!,1(".$8$Y2&)71+,3%3)*E

Fe2G222

Page 153: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&>.J6A<1U!I>1C!&+b"UM!L!J0.U81CA<1U!.B!/16;C!1\E!@B!<X61-1!C1U!O5.-A!AUQ7

x!.B!0.>8XC!>0.A-1!<X61-1!O5.-A!AUQ7

Fe^G222

Page 154: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

Z1<.C6A<1U!.B!<X61-1!-.!BA!U8958.C6.!N10<A7

<23Q9:0:$;6782)<C@C7=!!!!E%:;42<8:&:=&<23Q9:&8:=&:;6782&C<C@C7=E

!!!!j!S49C<@C4C2S

D.958<1U!8C601-5>8.C-1!B1U!>AU1U!8C`fB8-1Uc!Aa10A!aA>.<1U!B1!J01J81!JA0A!.B!.U6A-1!N8CABE

6:;60:?C<C@CY<.C<pC<7=!!!!E!95:Q7&5<7&8:?C<C@CY<&C<iB=C87&_5:&<2&6C:<:&5<&:;6782&?C<7=&==73782&S?C<SE

!!!!|!(/@1'1*16'U/!"#*/3#!|!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79S!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!aAU6A7!S(SE!!!!;:=?!Ua15B-C67!}(/@1'1*16'U/!"#*/3#!.U\fB8-A~

$/6.C.<1U!.B!A<A08BB1!Lc!A!J5C61!U.958-1c!8<JB.<.C6A<1U!BA!N5C>81CAB8-A-!-.!N10<A!ACfB19A!A!BA!AC6.0810E

Fe_G222

Page 155: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

:;,B=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E

!!!!I;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!;:=?!C1</0.'.@U6A-1)C8>8ABM!!!!!!!!!8N(ABU.7!}j?7=;:~E

!!!!I;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!;:=?!C1</0.'.@U6A-1(8CABM!!!!!!!!!8N(ABU.7!}j?7=;:~E

!!!!j695:

<23Q9:0:$;6782pC<7=!!!!E%:;42<8:&:=&<23Q9:&8:=&:;6782&?C<7=E

!!!!j!S?C<S

@[.>56A<1U!B1U!6.U6U!L!.U6A<1U!.C!`.0-.!C5.`A<.C6.E

*1U!1B`8-A<1U!-.c!6AB!`.=c!.B!>AU1!8C`fB8-1!<fU!U8<JB.7!oCA!-.N8C8>8;C!U8C!60ACU8>81C.U!C8!.U6A-1UE

6:;60:?C<C@CY<,7@X7!!!!E!95:Q7&5<7&8:?C<C@CY<&C<iB=C87&429&:;679&i7@X7E

!!!!|!(/@1'1*16'U/!"#*/3#!|!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE

FeeG222

Page 156: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!;:=?!Ua15B-C67!}(/@1'1*16'U/!"#*/3#!.U\fB8-A~

x!.[.>56A<1U!B1U!6.U6UE

]A>.<1U!>B8>!U1/0.!.B!6.U6!>1C!.0010!L!A/08<1U!.B!-.J50A-10!JA0A!`.0!O5.!.U!B1!O5.!1>5008;E

Fe4G222

Page 157: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

*5.`A<.C6.!.U6A<1U!AC6.!.B!>AU1!O5.!BA!`A08A/B.!-.!8CU6AC>8A!&.),23%31,$2!C1!.U6f!8C8>8AB8=A-AE!@B!>AU1!AC6.0810!B1!0.U1B`8<1U!>1C!BA=L"8C868AB8=A681C!.C!.B!<X61-1!=)-.$-).8$a3,3%3[,8$`.),23%3[,V7$27$V:)2&)Vc!J.01!.U.!<X61-1!C1!N5.!8C`1>A-1!.C!.U6.!>AU1E!!xA!.U!a10A!O5.!<1`A<1U!BA!8C8>8AB8=A>8;C!-.!.UA!`A08A/B.!AB!<X61-1!=3,3&3)*3|$CI.C!BA!>A6.910QA!g3,3&3)*3|)&31,gME

Fe,G222

Page 158: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!0.<1`.<1U!.B!BA=L"8C868AB8=A681C!O5.!a8>8<1U!AC6.0810<.C6.E

&a10A!.[.>56A<1Uc!C5.`A<.C6.c!B1U!6.U6UE

FeRG222

Page 159: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!"#$/)#/#$#"%.$/-&'01%.$*"+6&)%/-+0F%

*50"21>2,%&#10+%1015&>+210"2$+%107/20(#&5'%'02+0D;;30'#0,2'("2&#10'5'$/'%08/')5#'%+5(%(02'02+01#8,H%"20(21%""#++%(#07/20'#0,2'$%30)#&#0&='5&#30j0,21,07/20+%04%+5(2:0@1,#05&>+5)%07/202+0)#'9/',#0(20+#10,21,0(20/'0151,2&%01#'0/'%02P)2+2',20(#)/&2',%)5?':

I#10,21,10)#&>#'2'0/'%0(#)/&2',%)5?'07/20120>/2(230%(2&A10(20+22"30292)/,%"02'02+0(2>/"%(#"0>%1#0%0>%1#:0D%&65K'01%62&#10%0)52')5%02P%),%015021%0(#)/&2',%)5?'021,A0%),/%+5R%(%0#0'#012$N'02+0,21,021,K02'042"(20#02'0"#9#:0G30>#"01508/2"%0>#)#30+#10,21,101#'0(#)/&2',%)5?'07/2012021)"5620%0+%042R07/20120(21%""#++%02+0151,2&%:

HA0A!<.[10A0!BA!-1>5<.C6A>8;C!-.B!U8U6.<A!O5.!.U6A<1U!-.UA001BBAC-1c!`A<1U!A!0.>A6.9108=A0!B1U!6.U6U!JA0A!8C-8>A0!>5AB.U!>100.UJ1C-.C!A!8CU6AC>8A>81C.U!`fB8-AU!L!>5AB.U!A!8CU6AC>8A>81C.U!8C`fB8-AUE!oUA<1U!.B!#01TU.0!-.!ZBAU.U!JA0A!>0.A0!2!C5.`AU!>A6.910QAU!-.!<X61-1U7!g.D,,3,-CEC3,2&),%3)2C4�*37)2g!L!g.D,,3,-CEC3,2&),%3)2C3,4�*37)2g!I5UA<1U!.B!<.Cp!>1C6.d65AB!-.B!JAC.B!-.!>A6.910QAU!-.!<X61-1Uc!BA!1J>8;C!g,$fC%)&$-1.;___gME

FeSG222

Page 160: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

&a10A!A00AU60A<1U!.B!<X61-1!I-.U-.!.B!JAC.B!-.!<X61-1UM!aAU6A!BA!>A6.910QA!-1C-.!O5.0.<1U!O5.!0.U8-AE!!%.109AC8=A<1U!B1U!<X61-1U!L!B5.91!!5UA<1U!1J>8;C!g.$(14$C$(B&;C%)&$-1.3$2gC-.U-.!.B!<.Cp!>1C6.d65AB!-.B!JAC.B!-.!>A6.910QAU!JA0A!/100A0!BA!>A6.910QA!`A>QAE

D.958<1U!>1C!BA!8<JB.<.C6A>8;CE!$60A!>1C-8>8;C!O5.!68.C.!O5.!>5<JB80!BAU!-.N8C8>81C.U!-.!J01>.U1!JA0A!U.0!`fB8-AU!.U!O5.!.B!.U6A-1!8C8>8AB!U.A!0.AB<.C6.!.B!J08<.01E!!@U>08/8<1U!1601!6.U6!>1C!.U6A!>1C-8>8;CE

6:;60:?C<C@CY<!9C<@C4C2)<iB=C82!!!!E!95:Q7&5<7&8:?C<C@CY<&82<8:&:=&:;6782&C<C@C7=&<2&:;&9:7=3:<6:&:=&C<C@C7=E

!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79S!!!!!!!!-.U-.7!S(S!!!!!!!!aAU6A7!S49C<@C4C2SE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S6:93C<79S!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-C67!}(/@1'1*16'U/!"#*/3#!.U\fB8-A~

@[.>56A<1U!B1U!6.U6U!L!1/6.C.<1U!.B!A<A08BB1!.UJ.0A-1E!HA0A!UA/.0!U8!.B!.U6A-1!8C8>8AB!.U!0.AB<.C6.!.B!8C8>8ABc!-./.<1U!AU.950A0C1U!O5.!C8C95CA!60ACU8>8;C!6.C9A!.U.!.U6A-1!>1<1!-.U68C1E

F43G222

Page 161: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

P1-8N8>A<1U!.B!<X61-1!=$2i�*37)!-.!BA!U8958.C6.!N10<AE

:;,B=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E

!!!!I;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!;:=?!C1</0.'.@U6A-1)C8>8ABM!!!!!!!!!8N(ABU.7!}j?7=;:~E

!!!!I;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!;:=?!C1</0.'.@U6A-1(8CABM!!!!!!!!!8N(ABU.7!}j?7=;:~E

!!!!I697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!6a80-!f!;:=?!C1</0.'.@U6A-1)C8>8AB~M!!!!!!!!8Nb05.7!}j?7=;:~E

!!!!j695:

8",)++0"%)#$h$&)%#-G)$k-%AB-/0#]AJ

@4%+N%02+06+#7/20)#'0+#102+2&2',#10(2+0"2)2>,#":00*502+06+#7/20"21>#'(20&.D$0Z42"(%(2"#\0>%"%0)/%+7/52"%0(20+#102+2&2',#130(24/2+420&.D$:00*5'#0(24/2+420a)*2$0Z8%+1#\:

@[.>56A<1U!B1U!6.U6U!L!.U6A<1U!.C!`.0-.!C5.`A<.C6.E

'.!BA!<8U<A!N10<Ac!6.C.<1U!O5.!AU.950A0C1U!O5.!.B!.U6A-1!N8CAB!U.A!0.AB<.C6.!.B!.U6A-1!N8CABE!@U>08/8<1U!1601!6.U6E

6:;60:?C<C@CY<pC<7=)<iB=C82!!!!E!95:Q7&5<7&8:?C<C@CY<&82<8:&:=&:;6782&?C<7=&<2&:;&9:7=3:<6:&:=&?C<7=E

!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79S!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!aAU6A7!S?C<SE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S6:93C<79S!!!!!!!!-.U-.7!S?C<S!!!!!!!!aAU6A7!S(SE

F4FG222

Page 162: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!;:=?!Ua15B-C67!}(/@1'1*16'U/!"#*/3#!.U\fB8-A~

@[.>56A<1U!B1U!6.U6U!L!1/6.C.<1U!160A!`.=!.B!A<A08BB1E

:;,B=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E

!!!!I;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!;:=?!C1</0.'.@U6A-1)C8>8ABM!!!!!!!!!8N(ABU.7!}j?7=;:~E

!!!!I;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!;:=?!C1</0.'.@U6A-1(8CABM!!!!!!!!!8N(ABU.7!}j?7=;:~E

!!!!I697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!6a80-!f!;:=?!C1</0.'.@U6A-1)C8>8AB~M!!!!!!!!8Nb05.7!}j?7=;:~E

!!!!I697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!U.>1C-!f!;:=?!C1</0.'.@U6A-1(8CAB~M!!!!!!!!8Nb05.7!}j?7=;:~E

!!!!j695:

x!-.!C5.`1!.U6A<1U!.C!`.0-.c!J.01!BA!>BA08-A-!-.B!<X61-1!=$2i�*37)!-.[A!<5>a1!O5.!-.U.A0E!\A<1U!A!B8<J8A0B1!5C!J1>1E

+AU!.dJ0.U81C.U!O5.!-.6.0<8CAC!B1U!_!>AU1U!8C`fB8-1U!U1C!5C!J1>1!>0QJ68>AUE!!*1U!`AB-0.<1U!-.B!JA60;C!vZ1<J1U.-!P.6a1-vE

8"&:"#)*$5)/f"*

ZBK,#(#0.#&>/21,#\

o.?&#0120(545(20/'0>"#$"%&%02'0&K,#(#1p

! ;545(5"02+0>"#$"%&%02'0&K,#(#107/20++242'0%0)%6#0/'%0,%"2%0652'05(2',585)%6+2:0B%',2'2"0,#(%10+%10#>2"%)5#'210(20/'0&K,#(#02'02+0&51&#0'542+0(20%61,"%))5?':

BA105'8#"&%)5?'02'02+0+56"#C0f*&%++,%+-0O21,0!"%),5)20!%,,2"'1g0Z42"0656+5#$"%8=%\:

oUA0.<1Uc!C5.`A<.C6.c!BA!N5C>81CAB8-A-!g$Z&.)%&C($&:17g!-.B!%.NA>6108C9!#01TU.0!JA0A!-.U<.C5=A0!.B!<X61-1!90AC-.!.C!J.O5.qAU!JA06.UE

H08<.01!U.B.>>81CA<1U!BA!.dJ0.U8;C!-.!BA!J08<.0A!>1C-8>8;CE

F42G222

Page 163: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!B1!.d60A.<1U!A!5C!<X61-1!BBA<A-1!&3$,$Y2&)71+,3%3)*E!!]A>.<1U!B1!<8U<1!JA0A!BA!J0;d8<A!.dJ0.U8;C!.d60ALXC-1BA!.C!5C!<X61-1!BBA<A-1!&3$,$Y2&)7163,)*E

D.958<1U!>1C!BA!U8958.C6.!.dJ0.U8;C!L!BA!.d60A.<1U!A!5C!<X61-1!BBA<A-1!**$-)<*-D,)`.),23%31,<*Y2&)71+,3%3)*E!!x!aA>.<1U!B1!<8U<1!JA0A!BA!pB68<A!>1C-8>8;C!.d60ALXC-1BA!A!5C!<X61-1!-.!C1</0.!2)*$<*-D,)`.),23%31,8$*Y2&)7163,)*

@B!<X61-1c!Aa10Ac!B5>.!>1<1!`.0-A-.0A!-1>5<.C6A>8;CE

:;,B=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E

!!!!;:=?!68.C.@U6A-1)C8>8AB!8N(ABU.7!}j?7=;:~E!!!!;:=?!68.C.@U6A-1(8CAB!8N(ABU.7!}j?7=;:~E!!!!;:=?!BB.9A&B95CAb0ACU8>81C&B@U6A-1)C8>8AB!8Nb05.7!}j?7=;:~E!!!!;:=?!UAB.&B95CAb0ACU8>81C'.B@U6A-1(8CAB!8Nb05.7!}j?7=;:~E!!!!j695:

x!>1<.C6A<1U!B1U!<X61-1U!.d60AQ-1U!J10!.B!%.NA>6108C9!#01TU.0E

6C:<:$;6782)<C@C7=!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&7=AD<&:;6782&C<C@C7=E

!!!!j;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!;:=?!C1</0.'.@U6A-1)C8>8AB

F4^G222

Page 164: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

6C:<:$;6782pC<7=!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&7=AD<&:;6782&?C<7=E

!!!!j;:=?!-.N8C8>81C.U'.@U6A-1U!8C>B5-.U7!;:=?!C1</0.'.@U6A-1(8CAB

==:A7(=A5<7+97<;C@C2<(=$;6782)<C@C7=!!!!E%:;42<8:&;C&7=A5<7&697<;C@CY<&8:=&9:@:4629&6C:<:&@232&==:A787&:=&:;6782&C<C@C7=E

!!!!j697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!6a80-!f!;:=?!C1</0.'.@U6A-1)C8>8AB~

;7=:(=A5<7+97<;C@C2<0:=$;6782pC<7=!!!!E%:;42<8:&;C&7=A5<7&697<;C@CY<&8:=&9:@:4629&6C:<:&@232&4796C87&:=&:;6782&?C<7=E

!!!!j697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!U.>1C-!f!;:=?!C1</0.'.@U6A-1(8CAB~

@[.>56A<1U!B1U!6.U6U!L!U.958<1U!.C!`.0-.E

]AU6A!.U6.!<1<.C61!6.C.<1U!95A0-A-A!61-A!BA!8CN10<A>8;C!-.!BAU!60ACU8>81C.U!.C!5C!&00ALE!!*1!.U!AB91!<5L!108.C6A-1!A!1/[.61U!O5.!-89A<1Uc!AUQ!O5.!`A<1U!A!>A</8A0!.B!<X61-1!=)-.$-).8$a3,3%3[,8$`.),23%3[,V7$27$V:)2&)V!-.!BA!U8958.C6.!N10<A7

7A9:A790:?C<C@CY<0:+97<;C@CY<>!-"%'31*16'+-"1'$!8:;8:>!/3-%(#U/3(/+-"1'$)

F4_G222

Page 165: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

m7;67>!/3-%(#g%3-%+-"1'$!

!!!!E(A9:A7&5<7&8:?C<C@CY<&8:&697<;C@CY<&@2<&:=&<23Q9:&8782h&_5:&5<:&82;&:;6782;&8:&<23Q9:;&8782;E

!!!!|!-"%'31*16'!|

!!!!-"%'31*16'!>f!0:?C<C@CY<0:+97<;C@CY<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!C1</0.7!-"%'31*16'+-"1'$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-.U-.7!/3-%(#U/3(/+-"1'$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!aAU6A7!/3-%(#g%3-%+-"1'$E

!!!!697<;C@C2<:;!A--7!-"%'31*16'

Z0.A<1U!BA!>BAU.!8$a3,3%3[,8$`.),23%3[,!AB!A>.J6A0c!.C!BA!>A6.910QA!-.!>BAU.U!gd1.\a*1fgE!x!>1CN80<A<1U!O5.!.B!U.B.>610!=,1(".$V7$27$V:)2&)V!.U!>100.>61E

@[.>56A<1U!B1U!6.U6UE

&a10A!.B.98<1U!AB95C1!-.!B1U!6.U6!.C!01[1!JA0A!A00.9BA0E!!Z0.1!O5.!U.0QA!<.[10!>1<.C=A0!J10!.B!6.U6!=&$2&/)c)2'3(B*$8$a3,3%3[,!LA!O5.!JA0.>.!U.0!.B!>AU1!<fU!U8<JB.!-.!A00.9BA0E!!H.-8<1U!.B!-.J50A-10!U1/0.!.U.!6.U6!IaA>8.C-1!>B8>!.C!.B!JAC.B!8CN.0810ME

F4eG222

Page 166: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!`.<1U!O5.!6.C.<1U!O5.!>0.A0!.B!<X61-1!.C!BA!>BAU.!8$a3,3%3[,8$`.),23%3[,C%*)22c!.C!BA!>A6.910QA!-.!<X61-1U!BBA<A-A!g3,2&),%$C%.$)&31,gE!L!B1!8<JB.<.C6A<1U!AUQ7

<23Q9:>!'#&4"/+-"1'$!8:;8:>!(/3(/+-"1'$!m7;67>!B%3-%+-"1'$!!!!E%:;42<8:&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629E

!!!!j!;:=?!C.T!8C868AB8=.*1</0.7!'#&4"/+-"1'$!-.U-.7!(/3(/+-"1'$!aAU6A7!B%3-%+-"1'$

&>.J6A<1U!L!>1C68C5A<1UE

&a10A!-./.<1U!8<JB.<.C6A0!.B!<X61-1!=3,3&3)*3|$51(".$V7$27$V:)2&)V!.C!BA!>BAU.!8$a3,3%3[,8$`.),23%3[,c!.C!5CA!C5.`A!>A6.910QA!-.!C1</0.!g3,3&3)*3|)&31,gc!-.!BA!U8958.C6.!N10<A7

C<C6C7=Cn:#23Q9:>!'#&4"/+-"1'$!8:;8:>!(/3(/+-"1'$!m7;67>!B%3-%+-"1'$!!!!E)<C@C7=Cn7&:=&9:@:4629E

!!!!'#&4"/!>f!'#&4"/+-"1'$E!!!!(/3(/!>f!(/3(/+-"1'$E!!!!B%3-%!>f!B%3-%+-"1'$E

x!>0.A<1U!BAU!`A08A/B.U!-.!8CU6AC>8A!,1(".$c!7$27$!L!:)2&)!AB!A>.J6A0E

Z1C68C5A<1UE

&a10A!`.<1U!O5.!5C!1/[.61!-.!>BAU.!8$a3,3%3[,8$`.),23%3[,!C1!.C68.C-.!.B!<.CUA[.!=2$%1,7E!!@U1!.U!CA650AB!LA!O5.!0..<JBA=A<1U!5C!<..);!J10!5CA!>BAU.!C5.U60AE!P1-8N8>A<1U!.B!<X61-1!=7$a3,3%31,$28$Y2&)712!-.!BA!U8958.C6.!N10<A7

8:?C<C@C2<:;0:$;6782;!!!!E%:;42<8:&=7;&8:?C<C@C2<:;&8:&:;6782;&8:=&9:@:4629E

F44G222

Page 167: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!|!/3-%(#3U/3(/!/3-%(#3g%3-%!|!!!!/3-%(#3U/3(/!>f!697<;C@C2<:;!>1BB.>67!}7/%*B!|!/%*B!-.U-.~E!!!!/3-%(#3g%3-%!>f!697<;C@C2<:;!>1BB.>67!}7/%*B!|!/%*B!aAU6A~E!!!!j!I/3-%(#3U/3(/!h!/3-%(#3g%3-%M!AUD.6E

&>.J6A<1U!L!>1C68C5A<1UE

&a10A!-./.<1U!8<JB.<.C6A0!B1U!<X61-1U!=7$27$!L!=:)2&)c!.C!BA!>BAU.!8$a3,3%3[,8$`.),23%3[,c!.C!BA!>A6.910QA!g)%%$223,-g!-.!BA!U8958.C6.!N10<A7

8:;8:!!!!E%:;42<8:&:=&<23Q9:&8:&:;6782&8:&4796C87&8:=&9:@:4629E!!!!j!8:;8:

m7;67!!!!E%:;42<8:&:=&<23Q9:&8:&:;6782&8:&==:A787&8:=&9:@:4629E!!!!j!m7;67

Z1C68C5A<1UE

&a10A!`.<1U!O5.!C5.U60A!>BAU.!C1!.C68.C-.!.B!<.CUA[.!=&:3.7E!!P1-8N8>A<1U!.B!<X61-1!=**$-)<*-D,)`.),23%31,<*Y2&)71+,3%3)*!-.!BA!U8958.C6.!N10<A7

==:A7(=A5<7+97<;C@C2<(=$;6782)<C@C7=!!!!E%:;42<8:&;C&7=A5<7&697<;C@CY<&8:=&9:@:4629&6C:<:&@232&==:A787&:=&:;6782&C<C@C7=E

!!!!j697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!aAU6A!f!;:=?!C1</0.'.@U6A-1)C8>8AB~

Z1C68C5A<1UE

&a10A!>A</8A<1U!.B!<X61-1!=2)*$<*-D,)`.),23%31,8$*Y2&)7163,)*E

;7=:(=A5<7+97<;C@C2<0:=$;6782pC<7=!!!!E%:;42<8:&;C&7=A5<7&697<;C@CY<&8:=&9:@:4629&6C:<:&@232&4796C87&:=&:;6782&?C<7=E

F4,G222

Page 168: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!j697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!-.U-.!f!;:=?!C1</0.'.@U6A-1(8CAB~

Z1C68C5A<1UE

&a10A!.[.>56A<1U!61-1U!B1U!6.U6U!C5.`A<.C6.!JA0A!`.0!O5.!C1U!aA>.!NAB6A!A00.9BA0E

*1!C1U!O5.-A!CA-A!JA0A!A00.9BA0E

!"#$/)#/#$-6&)%/-%$,-$+"%]0-%I-

o./%',%1042)210+210<%0>%1%(#0'#07/2"2"0)%&65%"0)?(5$#0&%+021)"5,#0>#"0'#021,%"012$/"#0150"#&>2"=%&#10%+$#p

I#10151,2&%10(21%""#++%(#10)#'0D;;021,A'0f)#',"#+%(#1g0>#"0(2)2'%10#0)2',2'%"210(20,21,1:00!#(2&#1021,%"0>"A),5)%&2',2012$/"#107/230150"28%),#"5R%&#10%+$#0F0+#10,21,108/')5#'%'30'#0<2&#10"#,#0'%(%:

$60A!`AB8-A>8;C!O5.!`A<1U!A!aA>.0!.U!AU.950A0C1U!O5.!61-1U!B1U!.U6A-1U!U.AC!A>>.U8/B.U!-.U-.!.B!.U6A-1!8C8>8ABE

)C90.UA<1U!.B!U8958.C6.!6.U6!.C!BA!>A6.910QA!g.D,,3,-CEC3,2&),%3)2C3,4�*37)2g7

F4RG222

Page 169: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

6:;60:?C<C@CY<*2<$;6782;)<7=@7<n7Q=:;!!!!E!95:Q7&5<7&8:?C<C@CY<&82<8:&m7^&:;6782;&_5:&<2&;:&45:8:<&7=@7<n79&8:;8:&:=&:;6782&C<C@C7=E

!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79&^&6:93C<79S!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!aAU6A7!S?C<SE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S6:93C<79S!!!!!!!!-.U-.7!S(S!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-C67!}(/@1'1*16'U/!"#*/3#!.U\fB8-A~

@[.>56A<1U!B1U!6.U6U!L!.U6A<1U!.C!A<A08BB1E

P1-8N8>A<1U!.B!<X61-1!=$2i�*37)!-.!BA!U8958.C6.!N10<AE

:;,B=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E

!!!!;:=?!68.C.@U6A-1)C8>8AB!8N(ABU.7!}j?7=;:~E!!!!;:=?!68.C.@U6A-1(8CAB!8N(ABU.7!}j?7=;:~E!!!!;:=?!BB.9A&B95CAb0ACU8>81C&B@U6A-1)C8>8AB!8Nb05.7!}j?7=;:~E!!!!;:=?!UAB.&B95CAb0ACU8>81C'.B@U6A-1(8CAB!8Nb05.7!}j?7=;:~E!!!!;:=?!68.C.@U6A-1U)CAB>AC=A/B.U!8Nb05.7}j?7=;:~E!!!!j695:

@[.>56A<1U!B1U!6.U6U!C5.`A<.C6.!JA0A!6.C.0!BA!1J1065C8-A-!-.!8C`1>A0!.B!J0."-.J50A-10!L!5UA0B1!JA0A!8<JB.<.C6A0!.B!<X61-1!=&3$,$Y2&)712+,)*%),|)"*$2!.C!BA!>A6.910QA!g&$2&3,-gE

6C:<:$;6782;)<7=@7<n7Q=:;!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&:;6782;&C<7=@7<n7Q=:;&8:;8:&:=&:;6782&C<C@C7=E

!!!!j!;:=?!.U6A-1U)CAB>AC=A/B.U!C16@<J6L

+5.91!8<JB.<.C6A<1U!.B!<X61-1!=$2&)712+,)*%),|)"*$2!.C!BA!>A6.910QA!g)%%$223,-gE

F4SG222

Page 170: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

:;6782;)<7=@7<n7Q=:;!!!!E%:;42<8:&=2;&:;6782;&C<7=@7<n7Q=:;&8:;8:&:=&:;6782&C<C@C7=E

!!!!j!;:=?!-.N8C8>81C.U'.@U6A-1U!>1JLi86a156&BB7!;:=?!.U6A-1U&B>AC=A/B.U

x!.B!<X61-1!=$2&)712<*%),|)"*$2c!6A</8XC!.C!BA!>A6.910QA!g)%%$223,-gE

:;6782;(=@7<n7Q=:;!!!!E%:;42<8:&=2;&:;6782;&7=@7<n7Q=:;&8:;8:&:=&:;6782&C<C@C7=E

!!!!|!%`131-%"!"/35,-%(#!|

!!!!%`131-%"!>f!"98:9:8*2==:@6C2<!T86a7!;:=?!C1</0.'.@U6A-1)C8>8ABE!!!!"/35,-%(#!>f!%`131-%"!AUD.6E

!!!!}%`131-%"!8U@<J6L~!!!!!!!!Ta8B.(ABU.7!}!!!!!!!!!!!!|!%*-5%,!'5/G#3!|!

!!!!!!!!!!!!%*-5%,!>f!%`131-%"!0.<1`.(80U6E!!!!!!!!!!!!'5/G#3!>f!I;:=?!.U6A-1U&B>AC=A/B.U'.U-.7!%*-5%,M!>1JLi86a156&BB7!"/35,-%(#E

!!!!!!!!!!!!"/35,-%(#!A--&BB7!'5/G#3E!!!!!!!!!!!!%`131-%"!A--&BB7!'5/G#3E!!!!!!!!~E

!!!!j!"/35,-%(#

xc!-.UJ5XUc!.B!<X61-1!=$2&)712<*%),|)"*$28$27$V!.C!BA!>A6.910QA!g)%%$223,-gE

:;6782;(=@7<n7Q=:;0:;8:>!%U/@1'1*16'U/h3-%(#!!!!E%:;42<8:&=2;&:;6782;&7=@7<n7Q=:;&8:;8:&:=&:;6782&8782E

!!!!j!697<;C@C2<:;!!!!!!!!!!!!U.B.>67}7/%*B!|!/%*B!-.U-.!f!%U/@1'1*16'U/h3-%(#~!!!!!!!!!!!!6a.CZ1BB.>67}7/%*B!|!/%*B!aAU6A~

8",)++0"%)#$h$&)%#-G)$k#),)+/J/f)%8",,)+/J

B2'1%920(20/,5+5(%(07/20120)#&>#",%0)#&#0/'0s12+2),C012$/5(#0(20/'0s)#++2),C:

F,3G222

Page 171: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

8",)++0"%)#$h$&)%#-G)$k#),)+/J

@4%+N%02+06+#7/20(%(#0>#"0)%(%02+2&2',#0(2+0"2)2>,#"0)#&#0%"$/&2',#:00.#+2))5#'%0+#102+2&2',#102'0+#10)/%+2102+06+#7/2024%+N%0%0&.D$0Z42"(%(2"#\02'0/'%0)#+2))5?'0(2+0,5>#0(2+0"2)2>,#":0Q21>#'(2021%0)#+2))5?'0'/24%0)#&#0"21/+,%(#:

4G)&:,"#J

[V'0*,"5'$[012+2),C0aC!"#$0c0!"#$051V>>2")%12b:

sZj0T0Y0_0k0y0z0x0{0jU\012+2),C0aC!"#$0c0!"#$0#((b:

*&%++,%+-0%++.+%1121012+2),CaC!"#$0c0!"#$01/>2")+%110||0D21,.%12b:

x!.U6A<1U!.C!`.0-.E

@B!pB68<1!>;-891!8C90.UA-1!O5.-;!<5L!J1>1!108.C6A-1!A!1/[.61UE!+A!>A5UA!J08C>8JAB!.U!O5.!61-A`QA!C1!>0.A<1U!5CA!>BAU.!JA0A!0.J0.U.C6A0!BAU!-.N8C8>81C.U!-.!.U6A-1!L!.U6A<1U!<AC8J5BAC-1!U608C9UE!\A<1U!A!>0.A0!BA!>BAU.!O5.!>100.UJ1C-.c!>1<.C=A<1U!<1-8N8>AC-1!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR)-.$-).8$a3,3%3[,8$`.),23%3[,V7$27$V:)2&)V!-.!BA!U8958.C6.!N10<A7

7A9:A790:?C<C@CY<0:+97<;C@CY<>!-"%'31*16'+-"1'$!8:;8:>!/3-%(#U/3(/+-"1'$)m7;67>!/3-%(#g%3-%+-"1'$!

!!!!E(A9:A7&5<7&8:?C<C@CY<&8:&697<;C@CY<&@2<&:=&<23Q9:&8782h&_5:&5<:&82;&:;6782;&8:&<23Q9:;&8782;E

F,FG222

Page 172: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!|!/3-%(#U/3(/!/3-%(#g%3-%!-"%'31*16'!|

!!!!/3-%(#U/3(/!>f!;:=?!.U6A-1'.*1</0.7!/3-%(#U/3(/+-"1'$E!!!!/3-%(#g%3-%!>f!;:=?!.U6A-1'.*1</0.7!/3-%(#g%3-%+-"1'$E

!!!!-"%'31*16'!>f!0:?C<C@CY<0:+97<;C@CY<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!C1</0.7!-"%'31*16'+-"1'$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-.U-.7!/3-%(#U/3(/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!aAU6A7!/3-%(#g%3-%E

!!!!697<;C@C2<:;!A--7!-"%'31*16'

x!.[.>56A<1U!B1U!6.U6UE!ZAU8!61-1U!NABBACE!!]A>.<1U!>B8>!U1/0.!AB95C1!-.!B1U!6.U6U!.C!01[1!JA0A!aA>.0C1U!-.B!-.J50A-10!L!J1-.0!8<JB.<.C6A0!ABBQE

Z0.A<1U!.B!<X61-1!=$2&)718$51(".$Vc!.C!BA!>A6.910QA!g)%%$223,-gc!-.!BA!U8958.C6.!N10<A7

:;67820:#23Q9:>!%+-"1'$!!!!!E%:;42<8:&5<&:;6782&8:&<23Q9:&87821&*9:7&5<2&<5:i2&;C&:;&<:@:;79C21E

!!!!j!:;6782;!!!!!!!!!!!!!!!!!A67!%+-"1'$!!!!!!!!!!!!!!!!!8N&/U.C6H567}0:?C<C@CY<0:$;6782!C1</0.7!%+-"1'$~E

8",)++0"%)#$h$&)%#-G)$k-/J0]H'#)%/e6/J

Q21>#'(202+02+2&2',#0(20'#&6"20(%(#:00*50'#0<%F0'5'$N'02+2&2',#0)#'02120'#&6"23012024%+N%02+06+#7/20(%(#0F02+0"21/+,%(#0(20(5)<%024%+/%)5?'0120$/%"(%02'02+0"2)2>,#"0F0120"21>#'(20%+0"2&5,2',2:

Z0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!$2&)712!L!BA!>BAU.!8$a3,3%3[,8$Y2&)71!I.C!BA!>A6.910QA!d1.\a*1fME

+A!C5.`A!`A08A/B.!-.!8CU6AC>8A!$2&)712!6.C-0f!5C!-8>>81CA081c!AUQ!O5.!<1-8N8>A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR3,3&3)*3|$!-.!BA!U8958.C6.!N10<A7

C<C6C7=Cn:!!!!E)<C@C7=Cn7&:=&9:@:4629E

F,2G222

Page 173: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!697<;C@C2<:;!>f!.:6!C.TE!!!!:;6782;!>f!0C@6C2<79^!C.TE

8",)++0"%)#$h$_0+/0"%-(A

@+0;5),5#'%"F0Z;5))5#'%"5#\0210/'%0)#+2))5?'07/20>/2(2042"120(21(20T0>/',#10(20451,%C

! .#&#0/'0*2,0(20%1#)5%)5#'210)+%42^h4%+#"

! .#&#0/'0)#',2'2(#"0(#'(20+#102+2&2',#101#'0'#&6"%(#10(21(202+02P,2"5#"30(#'(202+0'#&6"20>/2(2012"0)/%+7/52"0#692,#07/20"21>#'(%0%+0&2'1%920s|:

4G)&:,"#J

70%#/-%+0-(.$A$,,)%-(.$6%$*0++0"%-(0"7c0)*##*,4"8*,0c

)*##*,4"8*,0Ji0_0+/0"%-(A0'2H:

)*##*,4"8*,0%,C0Mf"AM0>/,C0_-/)0,#(%F:)*##*,4"8*,0%,C0M-f"(-M0>/,C0?0&)0'#H:)*##*,4"8*,0%,C0]-,#)0>/,C0M)#$]-,#)M:

7-,36%-#$]"(&-#$*)$-++)*)($-,$*0++0"%-(0"7)*##*,4"8*,0%,C0Mf"AM:)*##*,4"8*,0%,C0M&-N-%-M058W612',Ca%0,b:)*##*,4"8*,0%,C0M&-N-%-M:)*##*,4"8*,0%,C0M&-N-%-M058W612',!/,Ca_-/)0,#&#""#Hb:)*##*,4"8*,0%,C0M&-N-%-M:

7"/(-#$]"(&-#$*)$-++)#"7)*##*,4"8*,0-2F1:)*##*,4"8*,04%+/21:

7-,36%-#$0/)(-+0"%)#7?(-%#+(0:/0)+2%":

?(-%#+(0:/0)"}01<#HC0Mk*"JM}0)":)*##*,4"8*,0(#C0aC!"#$0c0000?(-%#+(0:/01<#HC0M$M0.0!"#$0%1*,"5'$}0)":b:

?(-%#+(0:/0)"}01<#HC0Mk-##"+0-/0"%#_"JM}0)":)*##*,4"8*,0%11#)5%,5#'1;#C0aC!"#$0c0000?(-%#+(0:/01<#HC0M$M0.0!"#$0%1*,"5'$}0)":b:

?(-%#+(0:/0)"}01<#HC0MkD)A#H%*j-,6)#_"JM}0)":)*##*,4"8*,0-2F1W'(L%+/21;#CaC!"#$9!:0C!"#$;"<2!0c0000?(-%#+(0:/01<#HC0M$M0.0!"#$9!:0%1*,"5'$0.0M$b$M0.0!"#$;"<2!0%1*,"5'$}0)":b:

?(-%#+(0:/

F,^G222

Page 174: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

D"%'1)"5>,0210/'%04%"5%6+20$+#6%+07/20%>/',%0%0/'%042',%'%0(20D"%'1)"5>,0Z1502107/2021,A0%652",%\:0M#"&%+&2',202+0D"%'1)"5>,0120/1%0>%"%0&#1,"%"0>27/2S#10&2'1%92107/20%F/(%'0%0+%0(2>/"%)5?'0(2+0)?(5$#:

!%"%0#6,2'2"0/'%042',%'%0(20D"%'1)"5>,0<%F07/20/1%"02+0&2'N0(2+0&/'(#0hh0g1B$,___gChh0g&.),2%.3B&C>&?g0Z#0>"215#'%"0WID^,\:

@+0D"%'1)"5>,0"21>#'(20%0/'%012"520(20&2'1%9210&/F0N,5+210%0+%0<#"%0(20(2>/"%"C

L*H+<M0B/21,"%02+0%"$/&2',#30)#'42",5(#0%0'&.3,-302'0+%042',%'%:

L-)0]%)20/'01%+,#0(20+='2%02'0+%042',%'%:

L-3$")0I5&>5%02+0)#',2'5(#0(20+%042',%'%:

)<JB.<.C6A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21C%*)22RR,1(".$Vc!.C!BA!>A6.910QA!g3,2&),%$C%.$)&31,gc!-.!BA!U8958.C6.!N10<A7

<23Q9:>!%+-"1'$!!!!!E%:;42<8:&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629E

!!!!j!;:=?!C.T!8C868AB8=.*1</0.7!%+-"1'$

x!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR3,3&3)*3|$51(".$Vc!.C!BA!C5.`A!>A6.910QA!g3,3&3)*3|)&31,gc!AUQ7

C<C6C7=Cn:#23Q9:>!%+-"1'$!!!!!E)<C@C7=Cn7&:=&9:@:4629E

!!!!<23Q9:!>f!%+-"1'$

x!>0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!,1(".$E

@[.>56A<1U!B1U!6.U6U!L!.U6A<1U!.C!A<A08BB1E

F,_G222

Page 175: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

VW5X!JAU1Y!]AU6A!Aa10A!`.CQA<1U!568B8=AC-1!U;B1!5C!'&.3,-!.C!B59A0!-.!5C!1/[.61!-.!>BAU.!8$a3,3%3[,8$Y2&)71!JA0A!B1U!.U6A-1UE!!@U6A<1U!5UAC-1!2!>1CU6AC6.U!I6A</8XC!'&.3,-M!JA0A!B1U!.UJ.>8AB.U!.U6A-1U!8C8>8AB!L!N8CABE!!D8!/5U>A<1U!B1U!U.C-.0U!-.!A</1U!<X61-1U!-.!>1CU6AC6.!I=,1(".$8$Y2&)71+,3%3)*!L!=,1(".$8$Y2&)7163,)*M!U.950A<.C6.!.C>1C60A0.<1U!.B!B59A0!I1!B1U!B59A0.UM!-1C-.!6.C.<1U!O5.!<.6.0!<AC1E

HA0A!.C>1C60A0!B1U!U.C-.0U!-.!=,1(".$8$Y2&)71+,3%3)*!J1-.<1U!5UA0!BA!1J>8;C!g2$,7$.2C1a___C>,?g!-.B!<.Cp!>1C6.d65AB!-.B!JAC.B!-.!<X61-1U!.C!5C!#01TU.0!-.!ZBAU.UE

F,eG222

Page 176: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!1/6.C.<1U!5C!#01TU.0!>1<1!.B!U8958.C6.7

x!.C>1C60A<1U!2!<X61-1U!O5.!6.C.<1U!O5.!>A</8A0E!!%.J.68<1U!.B!J01>.-8<8.C61!JA0A!.B!<X61-1!=,1(".$8$Y2&)71+,3%3)*!L!.C>1C60A<1U!1601U!^!<X61-1U!A!A00.9BA0E!+1U!A00.9BA<1U!-.!BA!U8958.C6.!N10<A7

6C:<:$;6782)<C@C7=!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&7=AD<&:;6782&C<C@C7=E

!!!!j;:=?!-.N8C8>81C.U'.@U6A-1U!!!!!!!!!!!!!!!!!!!!ACLDA68UNL7}7/%*B!|!/%*B!C1</0.!f!;:=?!C1</0.'.@U6A-1)C8>8AB~

6C:<:$;6782pC<7=!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&7=AD<&:;6782&?C<7=E

!!!!j;:=?!-.N8C8>81C.U'.@U6A-1U!!!!!!!!!!!!!!!!!!!!ACLDA68UNL7}7/%*B!|!/%*B!C1</0.!f!;:=?!C1</0.'.@U6A-1(8CAB~

==:A7(=A5<7+97<;C@C2<(=$;6782)<C@C7=!!!!E%:;42<8:&;C&7=A5<7&697<;C@CY<&8:=&9:@:4629&6C:<:&@232&==:A787&:=&:;6782&C<C@C7=E

!!!!j697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!aAU6A!C1</0.!f!;:=?!C1</0.'.@U6A-1)C8>8AB~

F,4G222

Page 177: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

;7=:(=A5<7+97<;C@C2<0:=$;6782pC<7=!!!!E%:;42<8:&;C&7=A5<7&697<;C@CY<&8:=&9:@:4629&6C:<:&@232&4796C87&:=&:;6782&?C<7=E

!!!!j697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!-.U-.!C1</0.!f!;:=?!C1</0.'.@U6A-1(8CAB~

:;6782;(=@7<n7Q=:;!!!!E%:;42<8:&=2;&:;6782;&7=@7<n7Q=:;&8:;8:&:=&:;6782&C<C@C7=E

!!!!|!%`131-%"!"/35,-%(#!|

!!!!%`131-%"!>f!"98:9:8*2==:@6C2<!T86a7!I;:=?!.U6A-1'.*1</0.7!;:=?!C1</0.'.@U6A-1)C8>8ABME!!!!"/35,-%(#!>f!%`131-%"!AUD.6E

!!!!}%`131-%"!8U@<J6L~!!!!!!!!Ta8B.(ABU.7!}!!!!!!!!!!!!|!%*-5%,!'5/G#3!|!

!!!!!!!!!!!!%*-5%,!>f!%`131-%"!0.<1`.(80U6E!!!!!!!!!!!!'5/G#3!>f!I;:=?!.U6A-1U&B>AC=A/B.U'.U-.7!%*-5%,M!>1JLi86a156&BB7!"/35,-%(#E

!!!!!!!!!!!!"/35,-%(#!A--&BB7!'5/G#3E!!!!!!!!!!!!%`131-%"!A--&BB7!'5/G#3E!!!!!!!!~E

!!!!j!"/35,-%(#

@!8<JB.<.C6A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR,1(".$c!.C!BA!>A6.910QA!g)%%$223,-gE

<23Q9:!!!!E%:;42<8:&:=&<23Q9:&8:=&9:@:4629E!!!!j!<23Q9:

&a10A!.U6A<1U!.C!`.0-.c!68.<J1!-.!B8<J8A0!.B!>;-891E

+A!`8.[A!8<JB.<.C6A>8;C!-.B!<X61-1!8$a3,3%3[,8$0.1%$21RR7$a3,3%31,$28$Y2&)712!J5.-.!U.0!0..<JBA=A-A!J10!BA!U8958.C6.7

8:?C<C@C2<:;0:$;6782;!!!!E%:;42<8:&=7;&8:?C<C@C2<:;&8:&:;6782;&8:=&9:@:4629E

F,,G222

Page 178: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!j!:;6782;!`AB5.U

x!U.958<1U!.C!`.0-.E

+A!.dJ0.U8;C!-.!A/A[1c!O5.!8C601-5[8<1U!.C!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR$2&)712<*%),|)"*$2c!.U!>BA0A!>AC-8-A6A!JA0A!5C!s.d60A>6!<.6a1-tE

I;:=?!.U6A-1'.*1</0.7!;:=?!C1</0.'.@U6A-1)C8>8ABM

+1!aA>.<1U!L!-.[A<1U!B1U!<X61-1U!-.!BA!U8958.C6.!N10<A7

:;6782;(=@7<n7Q=:;!!!!E%:;42<8:&=2;&:;6782;&7=@7<n7Q=:;&8:;8:&:=&:;6782&C<C@C7=E

!!!!|!%`131-%"!"/35,-%(#!|

!!!!%`131-%"!>f!"98:9:8*2==:@6C2<!T86a7!;:=?!.U6A-1)C8>8ABE!!!!"/35,-%(#!>f!%`131-%"!AUD.6E

!!!!}%`131-%"!8U@<J6L~!!!!!!!!Ta8B.(ABU.7!}!!!!!!!!!!!!|!%*-5%,!'5/G#3!|

!!!!!!!!!!!!%*-5%,!>f!%`131-%"!0.<1`.(80U6E!!!!!!!!!!!!'5/G#3!>f!I;:=?!.U6A-1U&B>AC=A/B.U'.U-.7!%*-5%,M!>1JLi86a156&BB7!"/35,-%(#E

!!!!!!!!!!!!"/35,-%(#!A--&BB7!'5/G#3E!!!!!!!!!!!!%`131-%"!A--&BB7!'5/G#3E!!!!!!!!~E

!!!!j!"/35,-%(#

:;6782)<C@C7=!!!!E%:;42<8:&:=&:;6782&C<C@C7=E

!!!!j!;:=?!.U6A-1'.*1</0.7!;:=?!C1</0.'.@U6A-1)C8>8AB

H1-.<1U!0.NA>6108=A0!AB95C1U!1601U!vU.C-.0Uv!-.!=,1(".$8$Y2&)71+,3%3)*!JA0A!AJ01`.>aA0C1U!-.B!C5.`1!<X61-1!>0.A-1!L!.`86A0!>1<JA0A>81C.U!J10!C1</0.E

F,RG222

Page 179: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

==:A7(=A5<7+97<;C@C2<(=$;6782)<C@C7=!!!!E%:;42<8:&;C&7=A5<7&697<;C@CY<&8:=&9:@:4629&6C:<:&@232&==:A787&:=&:;6782&C<C@C7=E

!!!!j697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!aAU6A!f!;:=?!.U6A-1)C8>8AB~

x!aA>.<1U!B1!<8U<1!JA0A!.B!.U6A-1!N8CABE

:;6782pC<7=!!!!E%:;42<8:&:=&:;6782&?C<7=E

!!!!j!;:=?!.U6A-1'.*1</0.7!;:=?!C1</0.'.@U6A-1(8CAB

;7=:(=A5<7+97<;C@C2<0:=$;6782pC<7=!!!!E%:;42<8:&;C&7=A5<7&697<;C@CY<&8:=&9:@:4629&6C:<:&@232&4796C87&:=&:;6782&?C<7=E

!!!!j697<;C@C2<:;!ACLDA68UNL7!}7/%*B!|!/%*B!-.U-.!f!;:=?!.U6A-1(8CAB~

x!U.958<1U!.C!`.0-.c!J.01!>1C!.B!>;-891!5C!J1>1!<fU!B8<J81E

+1!pB68<1!O5.!-./.<1U!`AB8-A0!.U!O5.!C1!.d8U6AC!<fU!-.!F!60ACU8>8;C!>1C!.B!<8U<1!C1</0.!JA0A!.B!.U6A-1!-.!UAB8-AE!'8>a1!-.!160A!N10<A7!BA!>1</8CA>8;C!.U6A-1'.U-."C1</0.'.b0ACU8>8;C!-./.!U.0!pC8>AE!!\1B>A<1U!.U1!.C!5C!6.U6E

6:;60:?C<C@CY<*2<+97<;C@C2<:;054=C@787;!!!!E!95:Q7&5<7&8:?C<C@CY<&82<8:&m7^&697<;C@C2<:;&@2<&:=&3C;32&<23Q9:&_5:&;7=:<&8:&5<&8:6:93C<782&:;6782E

!!!!|!(/@1'1*16'U/!"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE

!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79S!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!aAU6A7!S?C<SE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79S!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!aAU6A7!S(SE!!!!(/@1'1*16'U/!"#*/3#!

F,SG222

Page 180: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S6:93C<79S!!!!!!!!-.U-.7!S(S!!!!!!!!aAU6A7!S?C<SE

!!!!;:=?!Ua15B-C67!}(/@1'1*16'U/!"#*/3#!.U\fB8-A~

$/6.C.<1U!.B!A<A08BB1E

)<JB.<.C6A<1U!B1!U8958.C6.7

:;,B=C87!!!!E%:;42<8:&;C&:=&9:@:4629&:;&5<7&C<;67<@C7&iB=C87E

!!!!;:=?!68.C.@U6A-1)C8>8AB!8N(ABU.7!}j?7=;:~E!!!!;:=?!68.C.@U6A-1(8CAB!8N(ABU.7!}j?7=;:~E!!!!;:=?!BB.9A&B95CAb0ACU8>81C&B@U6A-1)C8>8AB!8Nb05.7!}j?7=;:~E!!!!;:=?!UAB.&B95CAb0ACU8>81C'.B@U6A-1(8CAB!8Nb05.7!}j?7=;:~E!!!!;:=?!68.C.@U6A-1U)CAB>AC=A/B.U!8Nb05.7}j?7=;:~E!!!!;:=?!68.C.&B95C@U6A-1Z1Cb0ACU8>81C.U'5JB8>A-AU!8Nb05.7}j?7=;:~E!!!!j695:

6C:<:(=A5<$;6782*2<+97<;C@C2<:;054=C@787;!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&7=AD<&:;6782&@2<&697<;C@C2<:;&&&&854=C@787;&E!!!!j!;:=?!-.N8C8>81C.U'.@U6A-1U!!!!!!!!!!!!ACLDA68UNL7!}7/%*Bh3-%(#!|!!!!!!!!!!!!!!!!!|!-"%'31*1#'/3U/3(/!'#&4"/3U/3(/!|!!!!!!!!!!!!!!!!!-"%'31*1#'/3U/3(/!>f!;:=?!60ACU8>81C.U'.U-.7!/%*Bh3-%(#E!!!!!!!!!!!!!!!!'#&4"/3U/3(/!>f!-"%'31*1#'/3U/3(/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>1BB.>67!}7/%*B9"%'31*1#'!|!/%*B9"%'31*1#'!C1</0.~E!!!!!!!!!!!!!!!!-"%'31*1#'/3U/3(/!U8=.!zf!'#&4"/3U/3(/!AUD.6!U8=.!!!!!!!!!!!!~

697<;C@C2<:;0:;8:>!%U/@1'1*16'U/h3-%(#!!!!E%:;42<8:&=7;&697<;C@C2<:;&_5:&6C:<:<&:=&:;6782&8782&@232&S8:;8:SE!!!!j!697<;C@C2<:;!!!!!!!!!!!!U.B.>67}7/%*B!|!/%*B!-.U-.!f!%U/@1'1*16'U/h3-%(#~

<23Q9:!!!!E%:;42<8:&:=&<23Q9:&8:=&9:@:4629E!!!!j!<23Q9:

FR3G222

Page 181: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!.U6A<1U!.C!`.0-.E

&a10A!-./.0QA<1U!<1`.0!BA!N5C>81CAB8-A-!O5.!6.C.<1U!.C!8$a3,3%3[,8$0.1%$21!J.01!O5.!B.!>100.UJ1C-.!A!BA!0.>8XC!>0.A-A!>BAU.!8$a3,3%3[,8$Y2&)71E!

HA0A!<1`.0!.UA!N5C>81CAB8-A-!`A<1U!A!<1-8N8>A0!BA!8CU6AC>8A>8;C!-.!BAU!60ACU8>81C.UE!]A0.<1U!O5.!BA!60ACU8>8;C!B.!8C-8O5.!A!>A-A!5C1!-.!B1U!.U6A-1U!8C`1B5>0A-1U!U1/0.!U5!J01J8A!.d8U6.C>8A!JA0A!O5.!.U61Uc!A!U5!`.=c!>1C1=>AC!BA!.U605>650A!-.!BA!>5AB!U1C!JA06.E

ZA</8A<1U!B1U!C1</0.U!-.!B1U!A095<.C61U!.C!.B!>1CU605>610!-.!!8$a3,3%3[,8$`.),23%3[,c!8C-8>AC-1!O5.!Aa10A!.UJ.0A<1U!1/[.61U!8$a3,3%3[,8$Y2&)71!L!C1!1/[.61U!'&.3,-E

<23Q9:>!'#&4"/+-"1'$!8:;8:>!(/3(/U/@1'1*16'U/h3-%(#!m7;67>!B%3-%U/@1'1*16'U/h3-%(#!!!!E%:;42<8:&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629E

!!!!j!;:=?!C.T!!!!!!!!!!!!!!!!8C868AB8=.*1</0.7!'#&4"/+-"1'$!!!!!!!!!!!!!!!!-.U-.7!(/3(/U/@1'1*16'U/h3-%(#!!!!!!!!!!!!!!!!aAU6A7!B%3-%U/@1'1*16'U/h3-%(#

&a10A!<1-8N8>A<1U!.B!<X61-1!-.!8C8>8AB8=A>8;C!A00.9BAC-1c!6A</8XCc!B1U!C1</0.U!-.!B1U!A095<.C61U!L!C168N8>AC-1!A!BAU!-.N8C8>81C.U!-.!.U6A-1!U1/0.!BA!60ACU8>8;C!0.>8XC!>0.A-AE

C<C6C7=Cn:#23Q9:>!'#&4"/+-"1'$!8:;8:>!(/3(/U/@1'1*16'U/h3-%(#!m7;67>&

FRFG222

Page 182: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

B%3-%U/@1'1*16'U/h3-%(#!!!!E)<C@C7=Cn7&:=&9:@:4629E

!!!!<23Q9:!>f!'#&4"/+-"1'$E!!!!8:;8:!>f!(/3(/U/@1'1*16'U/h3-%(#E!!!!m7;67!>f!B%3-%U/@1'1*16'U/h3-%(#E

!!!!8:;8:!C5.`Ab0ACU8>8;CDAB8.C6.7!;:=?E!!!!m7;67!C5.`Ab0ACU8>8;[email protected]!;:=?E

)<JB.<.C6A<1U!B1U!<X61-1U!=,D$4)`.),23%3[,')*3$,&$V!L!=,D$4)`.),23%3[,Y,&.),&$Vc!.C!BA!>BAU.!8$a3,3%3[,8$Y2&)71c!>0.AC-1!BAU!2!C5.`AU!`A08A/B.U!-.!8CU6AC>8A!C.>.UA08AUE

<5:i7+97<;C@CY<.7=C:<6:>!%U/@1'1*16'U/9"%'31*16'!!!!!E(A9:A7h&:<&=7&@2=:@@CY<&8:&697<;C@C2<:;&;7=C:<6:;&8:=&9:@:4629h&=7&8:?C<C@CY<&8:&697<;C@CY<&8787E

!!!!697<;C@C2<:;.7=C:<6:;!A--7!%U/@1'1*16'U/9"%'31*16'

<5:i7+97<;C@CY<$<697<6:>!%U/@1'1*16'U/9"%'31*16'!!!!!E(A9:A7h&:<&=7&@2=:@@CY<&8:&697<;C@C2<:;&:<697<6:;&8:=&9:@:4629h&=7&8:?C<C@CY<&8:&697<;C@CY<&8787E

!!!!697<;C@C2<:;$<697<6:;!A--7!%U/@1'1*16'U/9"%'31*16'

@!8C8>8AB8=A<1U!BAU!0.>8XC!>0.A-AU!`A08A/B.U!-.!8CU6AC>8A7

C<C6C7=Cn:!!!!E)<C@C7=Cn7&7=&9:@:4629E!!!!!!!!697<;C@C2<:;.7=C:<6:;!>f!.:6!C.TE!!!!697<;C@C2<:;$<697<6:;!>f!.:6!C.TE

)<JB.<.C6A<1U!.B!<X61-1!=$2&)712<*%),|)"*$2c!.C!BA!>BAU.!8$a3,3%3[,8$Y2&)71c!O5.!U.0f!.B!O5.!0..<JBA>.!AB!<X61-1!8$a3,3%3[,8$0.1%$21RR$2&)712<*%),|)"*$28$27$VE

:;6782;(=@7<n7Q=:;!!!!E%:;42<8:&=2;&:;6782;&7=@7<n7Q=:;&8:;8:&:=&9:@:4629E

!!!!j!697<;C@C2<:;.7=C:<6:;!>1BB.>67}7/%*B!|!/%*B!aAU6A~

FR2G222

Page 183: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

P1-8N8>A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR$2&)712<*%),|)"*$2

:;6782;(=@7<n7Q=:;!!!!E%:;42<8:&=2;&:;6782;&7=@7<n7Q=:;&8:;8:&:=&:;6782&C<C@C7=E

!!!!|!%`131-%"!"/35,-%(#!|

!!!!%`131-%"!>f!"98:9:8*2==:@6C2<!T86a7!;:=?!.U6A-1)C8>8ABE!!!!"/35,-%(#!>f!%`131-%"!AUD.6E

!!!!}%`131-%"!8U@<J6L~!!!!!!!!Ta8B.(ABU.7!}!!!!!!!!!!!!|!%*-5%,!'5/G#3!|

!!!!!!!!!!!!%*-5%,!>f!%`131-%"!0.<1`.(80U6E!!!!!!!!!!!!'5/G#3!>f!%*-5%,!.U6A-1U&B>AC=A/B.U!>1JLi86a156&BB7!"/35,-%(#E

!!!!!!!!!!!!"/35,-%(#!A--&BB7!'5/G#3E!!!!!!!!!!!!%`131-%"!A--&BB7!'5/G#3E!!!!!!!!~E

!!!!j!"/35,-%(#

#100A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR$2&)712<*%),|)"*$28$27$V!I5UAC-1!.B!<.Cp!>1C6.d65AB!U1/0.!.B!JAC.B!-.!<X61-1Uc!1J>8;C!g.$(14$C($&:17C>Z?gME

@[.>56A<1U!B1U!6.U6Uc!L!.U6A<1U!.C!`.0-.E

$60A!N5C>81CAB8-A-!O5.!-./.<1U!<1`.0!.U!BA!J05./A!J10!60ACU8>81C.U!UAB8.C6.U!-5JB8>A-AUE!&90.9A<1U!.B!U8958.C6.!<X61-1c!.C!BA!>BAU.!8$a3,3%3[,8$Y2&)71E

6C:<:+97<;C@C2<:;054=C@787;!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&3B;&8:&F&697<;C@CY<&;7=C:<6:&@2<&:=&3C;32&<23Q9:E

!!!!|!'#&4"/3!|

!!!!'#&4"/3!>f!I697<;C@C2<:;.7=C:<6:;!>1BB.>67}7/%*B!|!/%*B!C1</0.~M!AUD.6E

!!!!j!697<;C@C2<:;.7=C:<6:;!U8=.!zf!'#&4"/3!U8=.

x!>A</8A<1U!.B!U8958.C6.!<X61-1!.C!BA!>BAU.!8$a3,3%3[,8$0.1%$21E

FR^G222

Page 184: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

6C:<:(=A5<$;6782*2<+97<;C@C2<:;054=C@787;!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&7=AD<&:;6782&@2<&697<;C@C2<:;&&&&854=C@787;&E!!!!j!;:=?!-.N8C8>81C.U'.@U6A-1U!!!!!!!!!!!!ACLDA68UNL7!}7/%*B!|!/%*B!68.C.b0ACU8>81C.U'5JB8>A-AU~

#100A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR&.),23%31,$28$27$VE

@[.>56A<1U!B1U!6.U6U!L!U.958<1U!.C!`.0-.c!J.01!.U6A!`.=!.B!>;-891!.U>0861!.U!<5>a1!<fU!108.C6A-1!A!1/[.61UE

+B.9;!BA!a10A!-.!aA>.0!AB91!>1C!BA!'.N8C8>81C.U!-.!H01>.U1E!!+1!J08<.01!O5.!68.C.!O5.!aA>.0!5CA!'.N8C8>8;C!-.!H01>.U1!.U!>0.A0!5CA!)CU6AC>8A!-.!H01>.U1E!!!ZA/.!A>BA0A0!O5.!>5AC-1!aA/BA<1U!-.!5CA!)CU6AC>8A!-.!H01>.U1!.U6A<1U!5UAC-1!6.0<8C1B19QA!-.!i10?NB1T!L!C1!C1U!.U6A<1U!0.N808.C-1!A!8CU6AC>8AU!-.!D<ABB6AB?E

+A!)CU6AC>8A!-.!H01>.U1!<fU!U8<JB.!O5.!U.!<.!1>500.!.U!BA!U8958.C6.7

6:;6'7-7;.C34=:)<;67<@C70:!92@:;2!!!!E!95:Q7&=7&8:?C<C@CY<&3B;&;C34=:&42;CQ=:h&@2<&;5&C<;67<@C7E

!!!!|!(/@1'1*16'U/!"#*/3#!(/@1'1*16'h3-%(#K'1*1%,!0"#*/3#!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79&^&6:93C<79S!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!aAU6A7!S?C<SE

!!!!(/@1'1*16'h3-%(#K'1*1%,!>f!(/@1'1*16'U/!"#*/3#!.U6A-1)C8>8ABE

!!!!0"#*/3#!>f!(/@1'1*16'U/!"#*/3#!C5.`A)CU6AC>8AE!!!!;:=?!Ua15B-7}0"#*/3#!>BAUU!f!!92@:;2~E!!!!;:=?!Ua15B-7}0"#*/3#!.U6A-1!-.N8C8>8;C!f!(/@1'1*16'h3-%(#K'1*1%,~E

Z0.A<1U!BA!>BAU.!0.1%$21!AB!A>.J6A0!.B!<X61-1c!.C!BA!>A6.910QA!gd1.\a*1fgE

@[.>56A<1U!B1U!6.U6U!Lc!J0.`8U8/B.<.C6.c!.U6A<1U!.C!01[1E

Z0.A<1U!.B!<X61-1!=,D$4)+,2&),%3)!.C!BA!>BAU.!8$a3,3%3[,8$0.1%$21c!.C!5CA!C5.`A!

FR_G222

Page 185: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

>A6.910QA!-.!C1</0.!g3,2&),%3)2gE

<5:i7)<;67<@C7!!!!E*9:7&5<7&<5:i7&C<;67<@C7&8:&492@:;2E

!!!!j!!92@:;2!-.N8C8>8;C7!;:=?E

&a10A!>0.A<1U!.B!<X61-1!0.1%$21C%*)22RR7$a3,3%3[,Vc!.C!BA!>A6.910QA!g3,2&),%$C%.$)&31,gc!-.!BA!U8958.C6.!N10<A7

8:?C<C@CY<>!%U/@1'1*16'U/!"#*/3#!!!!!E*9:7&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629E

!!!!j!;:=?!C.T!8C868AB8=.'.N8C8>8;C7!%U/@1'1*16'U/!"#*/3#

x!.B!<X61-1!0.1%$21RR3,3&3)*3|$8$a3,3%3[,Vc!.C!BA!>A6.910QA!g3,3&3)*3|)&31,gE

C<C6C7=Cn:0:?C<C@CY<>!%U/@1'1*16'U/!"#*/3#!!!!!E)<C@C7=Cn7&=7&8:?C<C@CY<&8:=&9:@:4629E

!!!!8:?C<C@CY<!>f!%U/@1'1*16'U/!"#*/3#

x!>0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!7$a3,3%3[,!AB!A>.J6A0E

&a10A!-./.<1U!8<JB.<.C6A0!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR$2&)71E

+AU!8CU6AC>8AU!-.!J01>.U1!U8.<J0.!68.C.C!5C!.U6A-1!AU1>8A-1E!+1U!J01>.U1U!0.>8XC!.<J.=A-1U!.U6fC!.C!.B!.U6A-1!8C8>8ABc!L!B1U!J01>.U1U!6.0<8CA-1U!.U6fC!.C!.B!.U6A-1!N8CABE

P1-8N8>A<1U!.B!<X61-1!0.1%$21RR3,3&3)*3|$8$a3,3%3[,V!-.!BA!U8958.C6.!N10<A7

C<C6C7=Cn:0:?C<C@CY<>!%U/@1'1*16'U/!"#*/3#!!!!!E)<C@C7=Cn7&=7&8:?C<C@CY<&8:=&9:@:4629E

!!!!8:?C<C@CY<!>f!%U/@1'1*16'U/!"#*/3#E

!!!!:;6782!>f!8:?C<C@CY<!.U6A-1)C8>8AB!C5.`A)CU6AC>8AE

FReG222

Page 186: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

Z0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!$2&)71!AB!A>.J6A0E!!bA</8XC!>0.A<1U!.B!U8958.C6.!<X61-17

:;6782!!!!E%:;42<8:&:=&:;6782&7@657=&8:=&9:@:4629E

!!!!j!:;6782

&a10A!>0.A<1U!.B!U8958.C6.!<X61-1!.C!BA!>BAU.!8$a3,3%3[,8$Y2&)71c!.C!BA!>A6.910QA!g3,2&),%3)2gE

<5:i7)<;67<@C7!!!!E*9:7&5<7&<5:i7&C<;67<@C7&8:&:;6782E

!!!!j!$;6782!-.N8C8>8;C7!;:=?

Z0.A<1U!BA!>BAU.!Y2&)71c!.C!BA!>A6.910QA!gd1.\a*1fgc!AB!A>.J6A0E

&a10A!>0.A<1Uc!.C!BA!>BAU.!Y2&)71c!.B!<X61-1!-.!>BAU.!=7$a3,3%3[,Vc!.B!<X61-1!-.!8CU6AC>8A!=3,3&3)*3|$8$a3,3%3[,V!L!BA!`A08A/B.!-.!8CU6AC>8A!7$a3,3%3[,!-.!BA!<8U<A!N10<A!O5.!B1!a8>8<1U!.C!BA!>BAU.!0.1%$21E

bA</8XC!8<JB.<.C6A<1Uc!.C!BA!>BAU.!Y2&)71c!AUQ7

8:?C<C@CY<!!!!E%:;42<8:&=7&8:?C<C@CY<&8:=&9:@:4629E

!!!!j!8:?C<C@CY<

@[.>56A<1U!B1U!6.U6U!L!g@U6A<1U!.C!`.0-.h

FR4G222

Page 187: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

'.!CA-A!U80`.!5C!<1610!-.!T10?NB1T!U8!C1!J1-.<1U!.[.>56A0!>;-891!A0/860A081!.C!>A-A!>A</81!-.!.U6A-1E!!&!U5!`.=c!.U6.!>;-891!U.0f!.B!0.UJ1CUA/B.!-.!-.>8-80!O5.!60ACU8>8;C!61<A0!JA0A!JAUA0!-.!5C!.U6A-1!A!1601E!!HA0A!.U1!`A<1U!A!-.>80B.!A!BA!'.N8C8>8;C!-.!H01>.U1!O5.!568B8>.!5C!1/[.61!s9.U610t!JA0A!>1<5C8>A0B.!B1U!>A</81U!-.!.U6A-1E!!@B!9.U610c!A-.<fU!-.!aA>.0!B1!O5.!U.!C.>.U86.!J10!B1U!>A</81U!-.!.U6A-1c!U.0f!.B!O5.!-.>8-80f!O5.!60ACU8>8;C!5UA0!JA0A!JAUA0!-.B!.U6A-1!A>65AB!AB!J0;d8<1E

\A<1U!A!aA>.0!.B!>AU1!<fU!U8<JB.!J1U8/B.c!>1C!5C!9.U610!O5.!aA9A!A`AC=A0!.B!J01>.U1!-.B!.U6A-1!8C8>8AB!AB!.U6A-1!N8CABE

6:;6'7-7;.C34=:)<;67<@C70:!92@:;2*2</:;629!!!!E!95:Q7&=7&8:?C<C@CY<&3B;&;C34=:&42;CQ=:h&@2<&;5&C<;67<@C7&8:&492@:;2&^&;5&A:;629E

!!!!|!(/@1'1*16'U/!"#*/3#!0"#*/3#!$/3-#"!/3-%(#3!|

!!!!(/@1'1*16'U/!"#*/3#!>f!0:?C<C@CY<0:!92@:;2!C.TE!!!!(/@1'1*16'U/!"#*/3#!!!!!!!!!A90.9A0'.N8C8>8;C'.b0ACU8>8;C7!S@23:<n79&^&6:93C<79S!!!!!!!!-.U-.7!S49C<@C4C2S!!!!!!!!aAU6A7!S?C<SE

!!!!$/3-#"!>f!/:;629*2<a=2_5:!/B1O5.7!}70"#*!|!!!!!!!!!!!!!!!!I0"#*!.U6A-1!C1</0.!f!S49C<@C4C2SM!!!!!!!!!!!!!!!!!!!!8Nb05.7}S@23:<n79&^&6:93C<79S~!!!!!!!!!!!!!!!!!!!!8N(ABU.7}<C=~!!!!!!!!!!!!~E!!!!(/@1'1*16'U/!"#*/3#!9.U6107!$/3-#"E

!!!!0"#*/3#!>f!(/@1'1*16'U/!"#*/3#!C5.`A)CU6AC>8AE

FR,G222

Page 188: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!/3-%(#3!>f!0"#*/3#!.U6A-1UE

!!!!;:=?!Ua15B-7}/3-%(#3!U8=.!f!H~E!!!!;:=?!Ua15B-7}/3-%(#3!N80U6!-.N8C8>8;C!f!(/@1'1*16'U/!"#*/3#!.U6A-1)C8>8AB~E!!!!;:=?!Ua15B-7}/3-%(#3!U.>1C-!-.N8C8>8;C!f!(/@1'1*16'U/!"#*/3#!.U6A-1(8CAB~E!!!!;:=?!Ua15B-7}/3-%(#3!U.>1C-!60ACU8>8;C!C1</0.!f!S@23:<n79&^&6:93C<79S~E

Z1C!.U6.!6.U6!.U6A<1U!-.N8C8.C-1!J0f>68>A<.C6.!.B!N5C>81CA<8.C61!>1<JB.61!-.B!<1610!-.!i10?NB1TE

&C6.U!-.!J1C.0C1U!A!60A/A[A0!JA0A!O5.!.B!6.U6!N5C>81C.c!`A<1U!A!-.U<.C5=A0!U5!>1C6.C8-1!JA0A!`.0!O5.!.U!B1!O5.!.UJ.0A<1U!-.B!N5C>81CA<8.C61!-.B!<1610E!!+1!J08<.01!-8N.0.C6.!.U!O5.c!A!BA!'.N8C8>8;C!-.!H01>.U1c!B.!8C-8>A<1U!>5AB!U.0f!U5!s9.U610tE

@B!9.U610!.U!5C!1/[.61!O5.!68.C.!BA!1J1065C8-A-!-.!aA>.0!B1!O5.!U.!C.>.U86.!.C!>A-A!>A</81!-.!.U6A-1c!A!U5!`.=!.U!.B!0.UJ1CUA/B.!-.!8C-8>A0C1U!O5.!60ACU8>8;C!61<A0!JA0A!JAUA0!-.B!.U6A-1!A>65AB!AB!U8958.C6.E!!\A<1U!A!>0.A0!5CA!>BAU.!m$2&1.91,b*1kD$!O5.!U.0f!5C!F(%0-/"!O5.!60ACUN10<.!BA!8C6.0NA=!-.!5C!/B1O5.!.C!BA!8C6.0NA=!-.!5C!m$2&1.E

e-/(F%$*)$_0#)N"$h$H*-:/)(

@+0>%,"?'0W(%>,2"0120/,5+5R%0>%"%0,"%'18#"&%"0/'%05',2"8%R02'0#,"%30(20,%+0&#(#07/20/'%0)+%1207/20'#0>/(52"%0/,5+5R%"0+%0>"5&2"%30<%$%0/1#0(202++%0%0,"%4K10(20+%012$/'(%:

e("',)&-$C6)$#",6+0"%-

*20,52'20/'0)#&>#'2',20)#'0)52",%08/')5#'%+5(%(07/20120(212%0%>"#42)<%"30>2"#021,20)#&>#'2',20'#0)/&>+20(2,2"&5'%(%05',2"8%R30152'(#021,#0N+,5&#05&>2"%,54#:

`&:,)&)%/-+0F%

."2%"0/'%0'/24%0)+%1207/2012"A02+0W(%>,%(#"307/202P,52'(%0(2+0)#&>#'2',202P51,2',20205&>+2&2',20+%05',2"8%R0#6+5$%,#"5%:0;2021,20&#(#0,2'2&#10+%08/')5#'%+5(%(07/207/2"=%&#10F0)/&>+5&#10+%0)#'(5)5?'0(205&>+2&2',%"0+%05',2"8%R:

I%0(582"2')5%02',"20+#10>%,"#'210W(%>,2"0F0`%)%(2302107/202+0>"5&2"#0"2/,5+5R%0/'%05',2"8%R0F%02P51,2',230&52',"%107/202+012$/'(#0(285'20/'%0'/24%:

!%"%0&A105'8#"&%)5?'C

! <,,>Cll21:H5-5>2(5%:#"$lH5-5lW(%>,2"mZ>%,"?'m(2m(512S#\0 0

! I56"#0f;215$'0!%,,2"'10^0@+2&2',10#80Q2/1%6+20E692),0E"52',2(0*#8,H%"2g0Z42"0656+5#$"%8=%\

+1!J0;d8<1!C5.`1!.U!.B!.C`Q1!-.B!<.CUA[.!=$2&)712!I.C!JB50ABME!@U6.!<.CUA[.!6.C-0f!>1<1!

FRRG222

Page 189: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

0.UJ5.U6A!5CA!>1B.>>8;C!>1C!61-1U!B1U!.U6A-1U!O5.!65`1!.B!J01>.U1E!!@U!-8N.0.C6.!AB!<.CUA[.!=$2&)71!I.C!U8C95BA0Mc!O5.!5UA<1U!AC6.0810<.C6.c!O5.!U;B1!>1C6.U6A!.B!.U6A-1!A>65ABE

x!J10!pB68<1!6.C.<1U!.B!<.CUA[.!=&.),23%3[,!O5.!B.!.C`8A<1U!A!5C!@U6A-1E!!@U6.!<.CUA[.!0.UJ1C-.0f!O5.!60ACU8>8;C!N5.!BA!0.UJ1CUA/B.!-.!O5.!.U.!.U6A-1!U.!>1C`8068.0A!.C!.U6A-1!A>65ABE

&B!A>.J6A0!.B!<X61-1!>0.A<1U!BA!>BAU.!m$2&1.91,b*1kD$c!.C!BA!>A6.910QA!gd1.\a*1fgE

@[.>56A<1U!B1U!6.U6Uc!.U6A<1U!.C!01[1E

)<JB.<.C6A<1U!.B!<X61-1!>1CU605>610!m$2&1.91,b*1kD$C%*)22RR"*1kD$Vc!.C!BA!>A6.910QA!g3,2&),%$C%.$)&31,gc!-.!BA!U8958.C6.!N10<A7

Q=2_5:>!%[,#*._#'-/:-!!!!!E%:;42<8:&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629E!!!!j!;:=?!C.T!8C868AB8=.#B1O5.7!%[,#*._#'-/:-

x!.B!<X61-1!m$2&1.91,b*1kD$RR3,3&3)*3|$b*1kD$Vc!.C!BA!>A6.910QA!g3,3&3)*3|)&31,gE!Z0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!"*1kD$!AB!A>.J6A0!.B!<X61-1E

C<C6C7=Cn:a=2_5:>!%[,#*._#'-/:-!!!!E)<C@C7=Cn7&:=&Q=2_5:&8:=&9:@:4629E!!!!Q=2_5:!>f!%[,#*._#'-/:-

&a10A!8<JB.<.C6A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR-$2&1.Vc!.C!BA!>A6.910QA!g)%%$223,-gE!!Z0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!-$2&1.!AB!A>.J6A0!.B!<X61-1E

A:;629>!%i/3-#"!!!!E*73QC7&:=&A:;629&8:=&9:@:4629E!!!!A:;629!>f!%i/3-#"

&a10A!8<JB.<.C6A<1U!.B!<X61-1!0.1%$21RR$2&)712c!.C!BA!>A6.910QA!g)%%$223,-gE

:;6782;!!!!E%:;42<8:&5<7&@2=:@@CY<&@2<&6282;&=2;&:;6782;&429&=2;&_5:&7697i:;Y&:=&9:@:46291&!9C3:92&:=&3B;&iC:d21E

FRSG222

Page 190: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!|!"/35,-%(#!/3-%(#F*-5%,!|

!!!!"/35,-%(#!>f!"98:9:8*2==:@6C2<!C.TE

!!!!/3-%(#F*-5%,!>f!;:=?!.U6A-1E!!!!}/3-%(#F*-5%,!8U*8B~!!!!!!!!Ta8B.(ABU.7!}!!!!!!!!!!!!"/35,-%(#!A--7!/3-%(#F*-5%,E!!!!!!!!!!!!/3-%(#F*-5%,!>f!/3-%(#F*-5%,!.U6A-1&C6.0810E!!!!!!!!~E

!!!!j!"/35,-%(#!0.`.0U.-

x!.B!<X61-1!Y2&)71RR$2&)71<,&$.31.c!.C!BA!>A6.910QA!g)%%$223,-gc!L!>0.A<1U!BA!`A08A/B.!-.!8CU6AC>8A!&.),23%3[,!AB!A>.J6A0E

:;6782(<6:9C29!!!!E%:;42<8:&:=&:;6782&7<6:9C291&&&&.C&<2&m7^&<C<AD<&:;6782&7<6:9C29h&9:;42<8:&<C=E

!!!!j!697<;C@CY<!8U*8B!!!!!!!!!!!!8Nb05.7!}<C=~!!!!!!!!!!!!8N(ABU.7!}697<;C@CY<!-.U-.~

&a10A!>0.A<1U!.B!<X61-1!0.1%$21RR%)("3).Y2&)71Vc!.C!BA!>A6.910QA!gB.34)&$gE

@73QC79$;6782>!%h3-%(#!!!!E!%),(0"&G&*73QC7&:=&:;6782&7@657=&8:=&9:@:46291E

!!!!:;6782!>f!%h3-%(#E!!!!;:=?!>A</81'.@U6A-1E

51/"*"#$:(02-*"#

I#10&K,#(#10>"54%(#130>#"0)#'42')5?'30120#"$%'5R%'0(2',"#0(20+%0)%,2$#"=%0gB.34)&$g:

x!.B!<X61-1!=%)("318$Y2&)71c!.C!BA!>A6.910QA!gB.34)&$gE

@73QC20:$;6782

FS3G222

Page 191: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!E!%),(0"&G&$=&:;6782&8:=&9:@:4629&7@7Q7&8:&@73QC791&#26C?C@79&7=&A:;629&;C&:kC;6:1E

!!!!|!'#&4"/U/9"%'31*16'!|

!!!!8:?C<C@CY<!68.C.:.U610!!!!!!!!8N(ABU.7}j!;:=?~E

!!!!'#&4"/U/9"%'31*16'!>f!8:?C<C@CY<!9.U610!.U6A-1ZA</8A-1@C7!;:=?E!!!!!!!!'#&4"/U/9"%'31*16'!8U*8B!!!!!!!!8Nb05.7}!!!!!!!!!!!!:;6782!-.N8C8>8;C!68.C.b0ACU8>81C.UDAB8.C6.U!!!!!!!!!!!!!!!!8Nb05.7};:=?!.00107!S#23Q9:&8:&697<;C@CY<&C<iB=C87>&Sh!'#&4"/U/9"%'31*16'!AUD608C9~!!!!!!!!~!!!!!!!!8N(ABU.7}!!!!!!!!!!!!;:=?!AJB8>A0b0ACU8>8;C'.*1</0.7!'#&4"/U/9"%'31*16'!!!!!!!!~

x!>A</8A<1U!.B!<X61-1!0.1%$21RR3,3&3)*3|$8$a3,3%3[,V!O5.!.Uc!J10!Aa10Ac!.B!pC8>1!B59A0!-1C-.!>A</8A<1U!-.!.U6A-1E

C<C6C7=Cn:0:?C<C@CY<>!%U/@1'1*16'U/!"#*/3#!!!!!E)<C@C7=Cn7&=7&8:?C<C@CY<&8:=&9:@:4629E

!!!!8:?C<C@CY<!>f!%U/@1'1*16'U/!"#*/3#E

!!!!;:=?!>A</8A0@U6A-17!8:?C<C@CY<!.U6A-1)C8>8AB!C5.`A)CU6AC>8AE

)<JB.<.C6A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR&3$,$m$2&1.c!.C!BA!>A6.910QA!g&$2&3,-gE

6C:<:/:;629!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&5<&A:;629&2&<2E!!!!j!A:;629!C16*8B

&a10A!8<JB.<.C6A<1U!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR-$2&1.c!.C!BA!>A6.910QA!g)%%$223,-gE

A:;629!!!!E%:;42<8:&:=&A:;629&8:=&9:@:4629E

FSFG222

Page 192: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!j!A:;629

&a10A!>0.A<1U!.B!<X61-1!m$2&1.91,b*1kD$RR$2&)719)("3)71Y,Vc!.C!BA!>A6.910QA!g$4$,&2gE

:;6782*73QC782$<>!%!"#*/3#!!!!!EZ<&492@:;2&m7&@73QC782&;5&:;6782&7@657=E!!!!j!Q=2_5:!`AB5.7!%!"#*/3#

x!.B!<X61-1!Y2&)71RR,1(".$c!.C!BA!>A6.910QA!g)%%$223,-gE

<23Q9:!!!!E%:;42<8:&:=&<23Q9:&8:=&9:@:4629E!!!!j!8:?C<C@CY<!C1</0.

x!8$a3,3%3[,8$Y2&)71RR&3$,$`.),23%31,$2')*3$,&$2c!.C!BA!>A6.910QA!g&$2&3,-gE

6C:<:+97<;C@C2<:;.7=C:<6:;!!!!E%:;42<8:&;C&:=&9:@:4629&6C:<:&2&<2&697<;C@C2<:;&;7=C:<6:;E!!!!j!697<;C@C2<:;.7=C:<6:;!C16@<J6L

&a10A!.B!<X61-1!0.1%$21RR)B*3%).`.),23%3[,8$51(".$Vc!.C!BA!>A6.910QA!gB.34)&$gE

74=C@79+97<;C@CY<0:#23Q9:>!%+-"1'$!!!!!E!%),(0"&G&(4=C@7&=7&697<;C@CY<&8:&<23Q9:&8782E

!!!!|!(/@1'1*16'U/9"%'31*16'!-"%'31*16'!|

!!!!(/@1'1*16'U/9"%'31*16'!>f!8:?C<C@CY<!60ACU8>8;C'.*1</0.7!%+-"1'$!-.U-.7!:;6782E

!!!!-"%'31*16'!>f!(/@1'1*16'U/9"%'31*16'!C5.`A)CU6AC>8A'.U-.7!:;6782E

!!!!;:=?!>A</8A0@U6A-17!-"%'31*16'!aAU6A

x!.B!<X61-1!8$a3,3%3[,8$0.1%$21RR&.),23%3[,8$51(".$V7$27$Vc!.C!BA!>A6.910QA!g)%%$223,-gE

FS2G222

Page 193: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

697<;C@CY<0:#23Q9:>!%+-"1'$!8:;8:>!%'h3-%(#!!!!!E%:;42<8:&5<7&697<;C@CY<&8:&<23Q9:&8782&^&_5:&;:7&;7=C:<6:&8:=&:;6782&8782E

!!!!j!697<;C@C2<:;!!!!!!!!!!!!!!-.6.>67}7/%*B!|!/%*B!C1</0.!f!%+-"1'$!AC-7}/%*B!-.U-.!f!%'h3-%(#!-.N8C8>8;C~~

&a10A!.B!<X61-1!8$a3,3%3[,8$`.),23%3[,RR,D$4)+,2&),%3)8$27$Vc!.C!BA!>A6.910QA!g3,2&),%3)2gE!Z0.A<1U!BA!>BAU.!`.),23%3[,c!.C!BA!>A6.910QA!gd1.\a*1fgc!AB!A>.J6A0!.B!<X61-1E

<5:i7)<;67<@C70:;8:>!%'h3-%(#!!!!!E*9:7&5<7&<5:i7&C<;67<@C7&8:&697<;C@CY<E!!!!j!+97<;C@CY<!-.N8C8>8;C7!;:=?!-.U-.7!%'h3-%(#

&a10A!>0.A<1U!.B!<X61-1!`.),23%3[,C%*)22RR7$a3,3%3[,V7$27$Vc!.C!BA!>A6.910QA!g3,2&),%$C%.$)&31,gE

8:?C<C@CY<>!%U/@1'1*16'U/9"%'31*16'!8:;8:>!%'h3-%(#!!!!!E*9:7&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629E!!!!j!;:=?!C.T!8C868AB8=.'.N8C8>8;C7!%U/@1'1*16'U/9"%'31*16'!-.U-.7!%'h3-%(#

x!.B!<X61-1!`.),23%3[,RR3,3&3)*3|$8$a3,3%3[,V7$27$Vc!.C!BA!>A6.910QA!g3,3&3)*3|)&31,gE!Z0.A<1U!BAU!`A08A/B.U!-.!8CU6AC>8A!7$a3,3%3[,c!7$27$!L!:)2&)!AB!A>.J6A0!.B!<X61-1E

C<C6C7=Cn:0:?C<C@CY<>!%U/@1'1*16'U/9"%'31*16'!8:;8:>!%'h3-%(#!!!!!E)<C@C7=Cn7&:=&9:@:4629E

!!!!8:?C<C@CY<!>f!%U/@1'1*16'U/9"%'31*16'E!!!!8:;8:!>f!%'h3-%(#E!!!!m7;67!>f!8:?C<C@CY<!aAU6A!C5.`A)CU6AC>8Ab0ACU8>8;C7!;:=?E

&a10A!>0.A<1U!.B!<X61-1!8$a3,3%3[,8$Y2&)71RR,D$4)+,2&),%3)`.),23%3[,Vc!.C!BA!>A6.910QA!g3,2&),%3)2gE

<5:i7)<;67<@C7+97<;C@CY<>!%9"%'31*16'!!!!!E*9:7&5<7&<5:i7&C<;67<@C7&8:&:;6782E

FS^G222

Page 194: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!j!$;6782!-.N8C8>8;C7!;:=?!60ACU8>8;C7!%9"%'31*16'

&a10A!>0.A<1U!.B!<X61-1!Y2&)71C%*)22RR7$a3,3%3[,V&.),23%3[,Vc!.C!BA!>A6.910QA!g3,2&),%$C%.$)&31,gE

8:?C<C@CY<>!%U/@1'1*16'U/h3-%(#!697<;C@CY<>!%9"%'31*16'!!!!!E*9:7&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629E

!!!!j!;:=?!C.T!8C868AB8=.'.N8C8>8;C7!%U/@1'1*16'U/h3-%(#!60ACU8>8;C7!%9"%'31*16'

x!.B!<X61-1!Y2&)71RR3,3&3)*3|$8$a3,3%3[,V&.),23%3[,Vc!.C!BA!>A6.910QA!g3,3&3)*3|)&31,gE

C<C6C7=Cn:0:?C<C@CY<>!%U/@1'1*16'U/h3-%(#!697<;C@CY<>!%9"%'31*16'!!!!!E)<C@C7=Cn7&=7&8:?C<C@CY<&^&=7&697<;C@CY<&8:=&9:@:4629E

!!!!8:?C<C@CY<!>f!%U/@1'1*16'U/h3-%(#E!!!!697<;C@CY<!>f!%9"%'31*16'

x!Aa10A!8<JB.<.C6A<1U!B1U!<X61-1U!`.),23%3[,RR:)2&)c!`.),23%3[,RR7$27$c!Y2&)71RR&.),23%3[,!L!`.),23%3[,RR,1(".$c!.C!BA!>A6.910QA!g)%%$223,-gE

m7;67!!!!E%:;42<8:&:=&:;6782&Sm7;67S&8:=&9:@:4629E!!!!j!m7;67

8:;8:!!!!E%:;42<8:&:=&:;6782&S8:;8:S&8:=&9:@:4629E!!!!j!8:;8:

697<;C@CY<!!!!E%:;42<8:&=7&697<;C@CY<&_5:&8C2&29CA:<&7=&9:@:4629E!!!!j!697<;C@CY<

<23Q9:!!!!E%:;42<8:&:=&<23Q9:&8:=&9:@:4629E

FS_G222

Page 195: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!!!!j!8:?C<C@CY<!C1</0.

xc!-.UJ5XU!-.!6AC61!60A/A[1c!.[.>56A<1U!B1U!6.U6U!L!g.U6A<1U!.C!`.0-.h

&a10A!BB.9;!.B!<1<.C61!-.!B8<J8A0!.B!>;-891E!!]8>8<1U!6AC61!JA0A!.B!pB68<1!6.U6!O5.c!A-8`8C1c!6.C-0.<1U!5C!/5.C!60A/A[1!-.!B8<J8.=AE

+1!J08<.01!O5.!`.<1U!.U!AB91!O5.!LA!aA/QA<1U!J0.`8U61!AB!>1<.C=A0E!b.C.<1U!2!68J1U!-.!1/[.61U7!BAU!'.N8C8>81C.U!L!BAU!)CU6AC>8AUE!!D8!J0.U6A<1U!A6.C>8;C!`.<1U!O5.!61-AU!BAU!8CU6AC>8AU!I0.1%$21c!Y2&)71!L!`.),23%3[,M!>1<JA06.C!>1UAU!.C!>1<pC!L!.U1!U5.B.!U.0!5CA!ABA0<A!-.!O5.!BA![.0A0O5QA!-.!>BAU.U!C1!.U!>100.>6AE!!+1!O5.!C1U!.U6f!JAUAC-1!.U!O5.!UA/.<1U!O5.!B1U!H01>.U1Uc!@U6A-1U!L!b0ACU8>81C.U!68.C.C!AB91!.C!>1<pCc!J.01!61-A`QA!C1!`1B>A<1U!.U.!>1C1>8<8.C61!.C!.B!A</8.C6.E!!HA0A!aA>.0B1!`A<1U!A!>0.A0!5CA!C5.`A!>BAU.!BBA<A-A!+,2&),%3)E

P1-8N8>A<1U!BAU!>BAU.U!0.1%$21c!Y2&)71!L!`.),23%3[,!JA0A!O5.!Aa10A!U.AC!U5/>BAU.U!-.!+,2&),%3)!I.C!B59A0!-.!U.0!U5/>BAU.U!-.!!"#$%&ME!!HA0A!<1-8N8>A0!BA!U5J.0>BAU.!5UA<1U!.B!#01TU.0!-.!ZBAU.U!L!.C!BA!-.N8C8>8;C!-.!BA!>BAU.!I`.<1U!BA!-.N8C8>8;C!>5AC-1!6.C.<1U!U.B.>>81CA-A!BA!>BAU.!J.01!C1!6.C.<1U!U.B.>>81CA-1U!C8!>A6.910QA!-.!<X61-1U!C8!<X61-1UM!0..<JBA=A<1U!-1C-.!-8>.!!"#$%&!J10!+,2&),%3)c!L!A>.J6A<1UE

!

FSeG222

Page 196: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

%.J.68<1U!.B!<8U<1!J01>.U1!JA0A!BAU!>BAU.U!0.1%$21!L!`.),23%3[,E

&a10A!U.B.>>81CA<1U!BA!>BAU.!+,2&),%3)c!.C!.B!#01TU.0c!L!J0.U81CA<1U!.B!/16;C!:3$.CIa8.0A0>aL!m![.0A0O5QAME!Z1C!.U1!A/08<1U!.B!#01TU.0!r.0f0O58>1E

=(">#)($;)(o(C60+"

@+0O"#H12"0i2"A"7/5)#0#8"2)20/'08#"&%,#0(582"2',20%0+%0<#"%0(20>"212',%"0+%10)+%121:0@'0+/$%"0(20>"212',%"0T0>%'2+210)#'0+%10)%,2$#"=%10(20)+%1210F0+%10)+%1213021,20O"#H12"0&/21,"%01?+#0/'0>%'2+0)#'0/'0A"6#+07/205'(5)%0+%0"2+%)5?'01/>2")+%12^1/6)+%12:

Z1C!.U6.!#01TU.0!>1CN80<A<1Uc!`8U5AB<.C6.c!O5.!a8>8<1U!B1U!>A</81U!-.!U5J.0>BAU.!JA0A!BAU!^!>BAU.UE

@C60.!BAU!>1UAU!O5.!68.C.C!.C!>1<pC!BAU!^!>BAU.U!.C>1C60A<1U!BA!`A08A/B.!-.!8CU6AC>8A!7$a3,3%3[,E!oUA<1U!160A!N5C>81CAB8-A-!-.B!%.NA>6108C9!#01TU.0!JA0A!sU5/80t!BA!`A08A/B.!-.U-.!BAU!U5/>BAU.U!A!BA!>BAU.!+,2&),%3)E!!D.B.>>81CA<1U!BA!>BAU.!+,2&),%3)c!J.-8<1U!.B!<.Cp!>1C6.d65AB!L!U.B.>>81CA<1U!BA!1J>8;C!gBD**CDB___g!-.B!U5/<.Cp!g3,2&),%$C4).3)"*$2gE

FS4G222

Page 197: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

!D.B.>>81CA<1U!5CA!-.!BAU!`A08A/B.U!7$a3,3%3[,E

&a10A!/5U>A<1U!.B!<X61-1!Y2&)71RR3,3&3)*3|$8$a3,3%3[,V!Lc!-.U-.!.B!<.Cp!>1C6.d65AB!-.B!<X61-1c!U.B.>>81CA<1U!BA!1J>8;C!gBD2:CDBgE

FS,G222

Page 198: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

%.J.68<1U!BA!1J.0A>8;C!JA0A!.B!<X61-1!Y2&)71RR,1(".$!L!-.>8<1U!O5.!g;$2g!IUQM!>5AC-1!.B!%.NA>6108C9!#01TU.0!C1U!J0.95C6A!g81C;1DCf),&C&1C.$(14$C7DB*3%)&$C2D"%*)22C($&:172Pg!IVW58.0.!0.<1`.0!B1U!<X61-1U!-5JB8>A-1U!.C!BAU!U5/>BAU.UYME!&B!>1C6.U6A0!AN80<A68`A<.C6.!.U6A!J0.95C6Ac!.B!%.NA>6108C9!#01TU.0!/100A0f!>5ABO58.0!8<JB.<.C6A>8;C!895AB!A!BA!U5/8-A!A!BA!>BAU.!+,2&),%3)!.C!U5U!U5/>BAU.UE

%.J.68<1Uc!C5.`A<.C6.c!BA!1J.0A>8;C!JA0A!.B!<X61-1!Y2&)71RR7$a3,3%3[,E

x!Aa10A!aA>.<1U!B1!<8U<1!JA0A!.B!<X61-1!Y2&)71C%*)22RR7$a3,3%3[,VE!Lc!C5.`A<.C6.c!>1C6.U6A<1U!AN80<A68`A<.C6.!A!BA!J0.95C6A!-.!0.<1`.0!<X61-1U!-5JB8>A-1UE

&a10A!>A</8A<1U!.B!<X61-1!0.1%$21RR3,3&3)*3|$8$a3,3%3[,V!-.!BA!U8958.C6.!N10<AE

C<C6C7=Cn:0:?C<C@CY<>!%U/@1'1*16'U/!"#*/3#!!!!!E)<C@C7=Cn7&=7&8:?C<C@CY<&8:=&9:@:4629E

!!!!;54:9!8C868AB8=.'.N8C8>8;C7!%U/@1'1*16'U/!"#*/3#E

!!!!;:=?!>A</8A0@U6A-17!8:?C<C@CY<!.U6A-1)C8>8AB!C5.`A)CU6AC>8AE

&a10A!<1-8N8>A<1U!.B!>1CU605>610!Y2&)71C%*)22RR7$a3,3%3[,V&.),23%3[,V

FSRG222

Page 199: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

8:?C<C@CY<>!%U/@1'1*16'U/h3-%(#!697<;C@CY<>!%9"%'31*16'!!!!!E*9:7&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629E

!!!!j!I;:=?!-.N8C8>8;C7!%U/@1'1*16'U/h3-%(#M!8C868AB8=.b0ACU8>8;C7!%9"%'31*16'

x!>0.A<1U!.B!<X61-1!Y2&)71RR3,3&3)*3|$`.),23%3[,Vc!.C!BA!>A6.910QA!g3,3&3)*3|)&31,gE

C<C6C7=Cn:+97<;C@CY<>!%9"%'31*16'!!!!!E)<C@C7=Cn7&=7&697<;C@CY<&8:=&9:@:4629E

!!!!697<;C@CY<!>f!%9"%'31*16'

l#-($),$]6)%/)$*)$6%$&1/"*"$:-(-$+()-($"/("$&1/"*"$:-()+0*"

./%'(#0'2)215,%&#10)"2%"0/'0&K,#(#07/2021015&5+%"0%0/'#0F%02P51,2',20>#(2&#10&#(585)%"02+0&K,#(#04529#0%0&#(#0(20>+%',5++%30&#(585)%'(#01/0'#&6"230F0%)2>,%'(#:

./%'(#0<%)2&#1021#02+0O"#H12"0)"2%0#,"#0&K,#(#0F0(29%02+0%',2"5#"05',%),#:

x!/100A<1U!.B!<X61-1!!Y2&)71RR3,3&3)*3|$8$a3,3%3[,V&.),23%3[,V

&a10A!<1-8N8>A<1U!.B!>1CU605>610!`.),23%3[,C%*)22RR7$a3,3%3[,V7$27$V

8:?C<C@CY<>!%U/@1'1*16'U/9"%'31*16'!8:;8:>!%'h3-%(#!!!!!E*9:7&5<7&<5:i7&C<;67<@C7&8:=&9:@:4629E

!!!!j!I;:=?!-.N8C8>8;C7!%U/@1'1*16'U/9"%'31*16'M!8C868AB8=.'.U-.7!%'h3-%(#

Z0.A<1U!.B!<X61-1!`.),23%3[,RR3,3&3)*3|$8$27$V

C<C6C7=Cn:0:;8:>!%'h3-%(#!!!!!E)<C@C7=Cn7&:=&S8:;8:S&8:=&9:@:4629E

!!!!8:;8:!>f!%'h3-%(#

FSSG222

Page 200: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

x!.B!<X61-1!`.),23%3[,RR3,3&3)*3|$8$a3,3%3[,V

C<C6C7=Cn:0:?C<C@CY<>!%U/@1'1*16'U/9"%'31*16'!!!!E)<C@C7=Cn7&=7&8:?C<C@CY<&8:=&9:@:4629E

!!!!;54:9!8C868AB8=.'.N8C8>8;C7!%U/@1'1*16'U/9"%'31*16'E

!!!!m7;67!>f!8:?C<C@CY<!aAU6A!C5.`A)CU6AC>8Ab0ACU8>8;C7!;:=?E

x!/100A<1U!.B!<X61-1!`.),23%3[,RR3,3&3)*3|$8$a3,3%3[,V7$27$V

@[.>56A<1U!61-1U!B1U!6.U6U!L!`.<1U!O5.!U.958<1U!.C!`.0-.E!D89A<1U!B8<J8AC-1E

+AU!2!.UJ.>8AB8=A>81C.U!-.B!<X61-1!+,2&),%3)RR3,3&3)*3|$8$a3,3%3[,V!I.C!BAU!>BAU.U!0.1%$21!L!`.),23%3[,M!U1C!JA0A!aA>.0!AB91!>1C!BA!-.N8C8>8;C!AJ.CAU!BA!8CU6AC>8A!BA!>1C1>.E!P1-8N8>A<1U!.B!<X61-1!+,2&),%3)RR3,3&3)*3|$8$a3,3%3[,V!-.!BA!U8958.C6.!N10<AE

C<C6C7=Cn:0:?C<C@CY<>!%U/@1'1*16'U/h3-%(#!!!!!E)<C@C7=Cn7&=7&8:?C<C@CY<&8:=&9:@:4629E

!!!!8:?C<C@CY<!>f!%U/@1'1*16'U/h3-%(#E

!!!!;:=?!-.N8C8>8;CZA</8A-AE

@!8<JB.<.C6A<1U!.B!<X61-1!+,2&),%3)RR7$a3,3%3[,9)("3)7)!AUQ7

8:?C<C@CY<*73QC787!!!!E'7&8:?C<C@CY<&m7&@73QC782&:<&:=&9:@:4629E

&a10Ac!5UAC-1!BA!N5C>8;C!s@d60A>6!P.6a1-tc!.d60A.<1U!BAU!.dJ0.U81C.U!O5.!.U6fC!A!>1C68C5A>8;C!-.!BA!BBA<A-A!A!2DB$.c!A!C5.`1U!<X61-1U!-.!C1</0.!=7$a3,3%3[,9)("3)7)E

8:?C<C@CY<*73QC787!!!!E'7&8:?C<C@CY<&m7&@73QC782&:<&:=&9:@:4629E

!!!!;:=?!>A</8A0@U6A-17!8:?C<C@CY<!.U6A-1)C8>8AB!C5.`A)CU6AC>8A

233G222

Page 201: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

8:?C<C@CY<*73QC787!!!!E'7&8:?C<C@CY<&m7&@73QC782&:<&:=&9:@:4629E

!!!!m7;67!>f!8:?C<C@CY<!aAU6A!C5.`A)CU6AC>8Ab0ACU8>8;C7!;:=?

x!/100A<1U!B1U!<X61-1U!0.1%$21RR3,3&3)*3|$8$a3,3%3[,V!L!`.),23%3[,RR3,3&3)*3|$8$a3,3%3[,V

@[.>56A<1U!B1U!6.U6U!L!U.958<1U!.C!`.0-.E

&a10A!C1U!61>A0QA!0.NA>6108=A0!BA![.0A0O5QA!-.!'.N8C8>8;CE!!Z0.A0QA<1U!5CA!>BAU.!-.!C1</0.!8$a3,3%3[,c!<1-8N8>A0QA<1U!BA!U5J.0>BAU.!-.!8$a3,3%3[,8$0.1%$21c!8$a3,3%3[,8$Y2&)71!L!8$a3,3%3[,8$`.),23%3[,E!!D5/80QA<1U!BA!`A08A/B.!-.!8CU6AC>8A!,1(".$c!B1U!<X61-1U!-.!8CU6AC>8A!=,1(".$!L!=3,3&3)*3|$51(".$Vc!.B!<X61-1!-.!>BAU.!=,1(".$Vc!.6>E!!&B!>0.A0!BA![.0A0O5QA!C1U!a5/8XU.<1U!-A-1!>5.C6A!O5.!C1U!1B`8-A<1U!-.!J1C.0B.!C1</0.!A!BAU!'.N8C8>8;C'.H01>.U1!Lc!AB!>1B9A0BA!-.!BA!>BAU.!8$a3,3%3[,c!BA!a.0.-A0QAE

W5.-A!JA0A!.B!B.>610!BA!6A0.A!-.!>1<JB.6A0!BA!NA>6108=A>8;C!-.!BA![.0A0O5QA!8$a3,3%3[,E

+1!pB68<1!O5.!C1U!O5.-A!aA>.0!.U!>0.A0!BA!>BAU.!m$2&1.c!L!aA>.0!O5.!m$2&1.91,b*1kD$!U.A!5CA!U5/>BAU.E

Z0.A<1U!BA!>BAU.!.!8<JB.<.C6A<1U!.B!<X61-1!=$2&)719)("3)71Y,V

:;6782*73QC782$<>!%!"#*/3#!!!!!EZ<&492@:;2&m7&@73QC782&;5&:;6782&7@657=1

&&&&U7@:&=2&_5:&;:&<:@:;C6:&429&:=&@73QC2&8:&:;6782h&=5:A2&;:&9:;42<8:&:=&<23Q9:&8:&=7&697<;C@CY<&7&62379&4797&47;79&7=&49YkC32&:;6782h&2&<C=&@57<82&:=&:;6782&;:7&:=&?C<7=E

!!!!j!;:=?!U5/>BAUU%.UJ1CU8/8B86L

5)%#-G)$k#6'+,-##E)#:"%#0'0,0/A

@+0&2'1%920s1/6)+%11Q21>#'1565+5,F0210+%08#"&%0(205'(5)%"07/202120&K,#(#0(262012"05&>+2&2',%(#02'0+%101/6)+%121:00@10+%08#"&%0(20&%")%"0/'0&K,#(#0)#&#0%61,"%),#:

Z1C!.U61!-A<1U!J10!>1C>B58-1!.B!.[.<JB1!-.B!<1610!-.!i10?NB1TE!!D.!J5.-.!-.U>A09A0!.B!>;-891!

23FG222

Page 202: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. aT%'#3)%),%)b4"%c

>1<JB.61!-.B!.[.<JB1!-.U-.!.B!U8681!T./!-.B!B8/01!Ia66J7GGU<ABB6AB?E>1CU5B6A0E>1<M!A5CO5.!B1!O5.!0.AB<.C6.!0.>1<8.C-1!.U!O5.!U.!aA9A!.B!.[.<JB1c!JAU1!A!JAU1c!U8958.C-1!BAU!8CU605>>81C.U!-.B!B8/01E

232G222

Page 203: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. C%)2%0%

N1-31/1

HI@I,)+53-8)j/$%,#)A5/)/,)G/'(/(#")B%*/)%,)*#&0"%(#"8)HU/8888Jf)%(/&73;)0#")%<%(1(5"%8

@C!.U6.!>AJQ65B1!aA/BA0.<1Uc!U;B1!5C!J1>1c!-.!AB95CAU!N5C>81CAB8-A-.U!L!>A0A>6.0QU68>AU!O5.!D<ABB6AB?!J1U..!J.01!O5.c!J10!.B!.CN1O5.!L!.B!6A<Aq1!-.B!B8/01c!C1!U.0.<1U!>AJA>.U!-.!-.UA001BBA0!.C!U5!JB.C865-E!!*1!1>5B61!O5.!.B!1/[.68`1!J08C>8JAB!-.!.U6.!>AJQ65B1!.U!-.UJ.06A0!BA!>5081U8-A-!-.!B1U!B.>610.U!L!O5.c!.UA!>5081U8-A-c!U80`A!-.!<1610!JA0A!O5.!>1C68Cp.C!.C!.B!J01>.U1!-.!AJ0.C-.0!D<ABB6AB?E

-:<;7d:&]Q:@23:>

@B!<.CUA[.!="$%1($Vc!J0.U.C6.!.C!J0f>68>A<.C6.!61-1U!B1U!-8AB.>61Uc!J.0<86.!8C6.0>A</8A0!5C!1/[.61!I.B!0.>.J610M!J10!1601!I.B!A095<.C61M!.C!61-A!BA!8<A9.CE!!+1U!1/[.61U!O5.!0.N.0.C>8A/AC!AB!0.>.J610c!-.UJ5XU!-.B!.C`Q1!-.B!<.CUA[.Uc!0.N.0.C>8A0fC!AB!1/[.61!-A-1!>1<1!A095<.C61E

@U6.!<.CUA[.!.U!<5L!J1-.01U1!Lc!A!U5!`.=c!J.B8901U1E!!Z1<1!U5>.-.!>1C!61-AU!BAU!a.00A<8.C6AU!J1-.01UAUc!.d8U6.C!AB95C1U!>AU1U!-1C-.!U5!5U1!.U!BA!<.[10!U1B5>8;C!L!.d8U6.C!<5>a1U!<fU!>AU1U!-1C-.!U5!5U1!U.0QA!5C!.0010E

oC1!-.!B1U!>AU1U!-1C-.!U5.B.!5UA0U.!>1C!Xd861!.U!>5AC-1!O5.0.<1U!0..<JBA=A0!5CA!8CU6AC>8A!sNABUAt!J10!BA!0.ABu!.U!N0.>5.C6.!6.C.0!O5.!.C60.9A0!8CU6AC>8AU!8C>1<JB.6AU!1c!U8<JB.<.C6.c!.C60.9A0!5C!NABU1!1/[.61!O5.c!AB!5UA0U.c!8CU6AC>8.!.B!1/[.61!0.AB!L!U.!8C6.0>A</8.!J10!.B!I5C!BA=L"8CU6AC68A681CME!

-:<;7d:&]82:;#26Z<8:9;67<8>

Z5AC-1!.B!0.>.J610!C1!.C68.C-.!5C!<.CUA[.c!BA!<fO58CA!`8065AB!B.!-A!160A!1J1065C8-A-!JA0A!0.A>>81CA0!.C`8fC-1B.!.B!<.CUA[.!=71$251&z,7$.2&),7V!>1C!5C!1/[.61!-.!>BAU.!c$22)-$C>1<1!A095<.C61c!-1C-.!U.!AB<A>.CA!61-A!BA!8CN10<A>8;C!-.B!<.CUA[.!NABB8-1E

'.!895AB!N10<A!O5.!.B!>AU1!AC6.0810c!.B!<.CUA[.!=71$251&z,7$.2&),7V!.Uc!A!BA!`.=c!J1-.01U1!L!J.B8901U1E!!xc!6A</8XC!895AB!O5.!.C!.B!>AU1!AC6.0810c!.d8U6.C!AB95C1U!>AU1U!-1C-.!U5!5U1!.U!BA!<.[10!1J>8;CE!!bAB!`.=!.B!.[.<JB1!<fU!0.J0.U.C6A68`1!.U!.B!-.!aA>.0!J01d8.U!O5.!-.B.95.C!61-1U!B1U!<.CUA[.U!O5.!0.>8/.C!A!5C!1/[.61!O5.!>1C1=>ACE!!Z1</8CA-1!>1C!.B!<.CUA[.!AC6.0810!U.!J5.-.!aA>.0!O5.!.C!.B!J08<.0!<.CUA[.!C1!.C6.C-8-1!J10!.B!J01dLc!.U6.!8CU6AC>8.!I1!B1>AB8>.M!.B!1/[.61!0.AB!L!U.!8C6.0>A</8.!>1C!.B!5UAC-1!.B!="$%1($VE

-:<;7d:;&]4:9?293>h&]4:9?293>cC6m>h&]4:9?293>cC6m(==>h&:6@1

23^G222

Page 204: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. C%)2%0%

@U61U!<.CUA[.U!J.0<86.C!.C`8A0!5C!<.CUA[.!J10!C1</0.E!!@B!DoC86c!J10!.[.<JB1c!B1!568B8=A!JA0A!.C`8A0!AB!1/[.61!-.!>BAU.!`$2&9)2$!5C!<.CUA[.!J10!>A-A!5C1!-.!B1U!<X61-1U!O5.!>1<8.C=AC!J10!=&$2&E

!;:582Gi79C7Q=:&6mC;*2<6:k6

+A!JU.5-1"`A08A/B.!&:3291,&$Z&!J.0<86.!A>>.-.0!AB!1/[.61!O5.!0.J0.U.C6A!.B!>1C6.d61!-.!A>68`A>8;C!-.B!<X61-1E!!Z1C!.U6A!`A08A/B.!U.!J5.-.!aA>.0c!.C60.!160AU!>1UAUc!A!B1U!`AB10.U!-.!BAU!`A08A/B.U!B1>AB.Uc!AB!.<8U10!-.B!<.CUA[.c!.6>E!!@B!-.J50A-10!aA>.!5C!5U1!8C6.CU8`1!-.!.U6A!JU.5-1!`A08A/B.E!!bA</8XC!BA!568B8=A!.B!D.AU8-.!JA0A!>0.A0!B1U!>1C68C5A681CUE

.'7<Ah&3B_5C<7&iC9657=&^&4=5AC<;@B!D+AC9!.U!5C!U5/>1C[5C61!-.!BA!U8C6Ad8U!L!N5C>81CAB8-A-!-.B!B.C95A[.!D<ABB6AB?!O5.!J.0<86.!9.C.0A0!>;-891!.C!B.C95A[.!Z!>1C!BA!<8U<A!N5C>81CAB8-A-E!!+A!<fO58CA!`8065AB!.U6f!.U>086A!.C!D+AC9E!!@U6A!N5C>81CAB8-A-!6A</8XC!J.0<86.!.U>08/80!sJB598CUt!O5.!U1C!N0A9<.C61U!-.!>;-891!D<ABB6AB?!O5.c!AB!>1C`.0680B1U!A!Z!L!>1<J8BA0B1Uc!U.!.[.>56AC!A!<AL10!`.B1>8-A-E!!@B!D+AC9c!AB!U.0!5C!U5/>1C[5C61c!J.0<86.!O5.!BA!-.J50A>8;C!U.!aA9A!>1C!BA!08>AU!a.00A<8.C6AU!-.!D<ABB6AB?E

pp)&{&p29:CA<&p5<@6C2<&)<6:9?7@:@B!(()!.U!5C!>1C[5C61!-.!1/[.61U!O5.!J.0<86.C!BBA<A0!A!N5C>81C.U!O5.!0.U8-.C!.C!B8/0.0QAU!>1<JA068-AUE!!H10!.[.<JB1c!.B!JAO5.6.!$'#Z!aA>.!5U1!8C6.CU8`1!-.!.U6A!N5C>81CAB8-A-!JA0A!A>>.-.0!A!BAU!N5C>81C.U!-.!BA!'++!I1!.B!EU1!-.!B8C5dM!-.!$'#ZE

-:67492A9737@CY<@C!D<ABB6AB?!BAU!>BAU.U!U1C!1/[.61U!L!U.!BAU!J5.-.!<AC8J5BA0!>1<1!U.!aA>.!>1C!>5ABO58.0!1/[.617!.C`8AC-1!<.CUA[.E!!'8UJ1C.<1U!-.!<.CUA[.U!JA0A!8C-A9A0!O5.!<X61-1U!68.C.!BA!>BAU.c!JA0A!>1C1>.0!U5U!U5J.0>BAU.Uc!JA0A!`.0!61-AU!BAU!8CU6AC>8AUc!.6>E!!H.01!6A</8XC!J1-.<1U!>A</8A0!BA!.U605>650A!-.!BAU!>BAU.U!5UAC-1!<.CUA[.UE!!@U1!O58.0.!-.>80c!.C60.!160AU!>1UAUc!O5.!J1-.<1U!>0.A0!J0190A<A0!O5.!>0..C!J0190A<AU!I<.6AJ0190A<AUME

-5=6C6m9:78C<AD<ABB6AB?!J.0<86.!BA!J0190A<A>8;C!>1C!J01>.U1U!I.B!C1</0.!O5.!D<ABB6AB?!B.!-A!A!U5U!6a0.A-UM!-.U-.!U5U!J08<.0AU!`.0U81C.UE!!Z1C6A<1U!>1C!1/[.61U!JA0A!U8C>01C8=A0!.B!60A/A[1!.C60.!-8N.0.C6.U!J01>.U1U!>1<1!U.<fN101Uc!>1B.>>81C.U!6a0.A-"UAN.c!.6>E

23_G222

Page 205: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. C%)2%0%

._5:7V-74DO5.A?PAJ!.U!5C!0.J1U861081!-.!J01L.>61U!DO5.A?E!!D.!J5.-.C!-.U>A09A0!.!8CU6ABA0c!A!BA!N.>aAc!<fU!-.!433!AJB8>A>81C.UE

-,*P\Z!.U!.B!C1</0.!O5.!0.>8/.!.B!60A-8>81CAB!N0A<.T10?!JA0A!aA>.0!AJB8>A>81C.U!90fN8>AU!O5.!`.CQA!>1C!.B!D<ABB6AB?GR3E!!@U.!N0A<.T10?!0.>8/.!.B!<8U<1!C1</0.!O5.!.B!JA60;C!-.!-8U.q1!LA!O5.!.U!JA06.!N5C-A<.C6AB!-.!U5!A0O586.>650AE!!@U6.!.U!5C!N0A<.T10?!<5L!B8`8AC1!O5.!J5.-.!U.0!568B8=A-1!JA0A!-.UA001BB1!-.!AJB8>A>81C.U!-1C-.!.B!>1CU5<1!-.!<.<108A!U.A!5CA!B8<86AC6.E

23eG222

Page 206: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. C%)2%0%

-294mC@@C!DO5.A?!.d8U6.!1601!N0A<.T10?!JA0A!BA!>1CU605>>81C.U!-.!8C6.0NA>.U!90fN8>AU!-.!5U5A081E!!@B!P10Ja8>!J.0<86.!5CA!<AC8J5BA>8;C!<fU!>1C>0.6A!-.!B1U!1/[.61U!0.J0.U.C6A-1U!.C!BA!JAC6ABBAE!+1U!>1C>.J61U!/fU8>1U!-.!P10Ja8>!`8.C.!-.B!J01L.>61!D.BN!Ia66J7GG0.U.A0>aEU5CE>1<GU.BNGME

234G222

Page 207: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. C%)2%0%

23,G222

Page 208: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. C%)2%0%

(=A5<2;&492^:@62;&@2<&._5:7V

`1(/#\,#^f)!"#*/3%&1/'-#)(/)GO(/#

! !"#2/*-#)T%$"%-B/% !

23RG222

Page 209: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. C%)2%0%

!"#2/*-#)hkF,-/"/$# !

_#'-"#,)(/)j#4#-3

!

23SG222

Page 210: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. C%)2%0%

!"#*/3%&1/'-#)\#-#$"7@1*# !

! _%0-5"%)(/)GO(/#

2F3G222

Page 211: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. C%)2%0%

C/2/'(#)5')i!+

2FFG222

Page 212: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. \5-5"#

S767(+

@B!N56501!-.!D<ABB6AB?!.U!U.0`80!>1<1!a.00A<8.C6A!JA0A!-.UA001BBA0!.B!.C610C1!-.!>1<J56A>8;C!O5.!`5.B`A!1/U1B.61!AB!<8U<1!D<ABB6AB?E!!@U!5C!1/[.68`1!A</8>81U1!L!.B!-.UA001BB1!U.!.U6f!BB.`AC-1!A!>A/1!.C!-8N.0.C6.U!f0.AUE!&!>1C68C5A>8;C!.C5<.01!AB95C1U!-.!B1U!J01L.>61U!A>65AB.U7

Q4.2)9

D<ABB6AB?c!-.U-.!B1U!8C8>81Uc!1J6;!J10!5C!U8U6.<A!-.!0.568B8=A>8;C!/AUA-1!.C!a.0.C>8A!U8<JB.!JA0Ac!U1/0.!61-1c!.`86A0!BAU!>1<JB8>A>81C.U!O5.!>1CBB.`A!5C!U8U6.<A!-.!a.0.C>8A!<pB68JB.!>1<1c!J10!.[.<JB1c!.B!-.!Z��E!!b0A86U!.U!5C!J01L.>61!JA0A!A<JB8A0!.B!J1-.0!-.!.dJ0.U8;C!-.!5C!U8U6.<A!-.!a.0.C>8A!U8<JB.c!J.01!U8C!>A.0!.C!BAU!>1<JB8>A>81C.U!-.!5C!U8U6.<A!-.!a.0.C>8A!<pB68JB.E!!+A!J0;d8<A!`.0U8;C!-.!DO5.A?c!BA!^ESc!<5L!J01/A/B.<.C6.!8C>B580f!5CA!J08<.0A!`.0U8;C!5UA/B.!.C!.C610C1U!-.!J01-5>>8;CE!!HA0A!<fU!8CN10<A>8;C7!a66J7GGTTTE8A<E5C8/.E>aG�U>9G%.U.A0>aGb0A86UG

Q7'.=

@B!J01L.>61!D<ABB6AB?!N5.c!-.U-.!.B!J08C>8J81c!5C1!-.!B1U!<1610.U!O5.!.<J5[;!.B!-8U.q1!-.!8C6.0NA>.U!-.!5U5A081E!!bT.A?!.U!5C!C5.`1!N0A<.T10?!O5.!J0.6.C-.!<1`.0!BA!NA>8B8-A-!-.!BA!J0190A<A>8;C!68J1!.b1LU!A!5C!.C610C1!>1C!BA!J16.C>8A!>1<JB.6A!-.!D<ABB6AB?E!!HA0A!<fU!8CN10<A>8;C7!a66J7GG6T.A?E8<JA0AE-.G

RS132)9

+AU!J08<.0AU!<fO58CAU!`8065AB.U!-.!D<ABB6AB?!.0AC!-.!F4!/86U!L!J.0<86QAC!5C!<5L!B8<86A-1!-80.>>81CA<8.C61!-.!1/[.61UE!+A!J08<.0A!8<JB.<.C6A>8;C!-.!DO5.A?!LA!.0A!-.!^2!/86Uc!A5<.C6AC-1!60.<.C-A<.C6.!BA!>AJA>8-A-!-.!-80.>>81CA<8.C61E!!D8C!.</A091c!JA0A!O5.!D<ABB6AB?!U89A!B8-.0AC-1!BA!.`1B5>8;C!-.!.C610C1U!-.!>1<J56A>8;C!.U!C.>.UA081!JAUA0!A!5CA!A0O586.>650A!-.!1/[.61U!-.!4_!/86UE!HA0A!<fU!8CN10<A>8;C7!a66J7GGTTTEUO5.A?`<E109GUO5.A?4_G

M;'":4$%&')

VW5X!JAUA0QA!U8!-.UA001BBfU.<1U!5C!U8U6.<A!1J.0A68`1c!a1L!.C!-QAc!UA/8.C-1!B1!O5.!UA/.<1U!a1L!.C!-QAY!!@U6A!.U!BA!J0.95C6A!O5.!089.!.B!-.UA001BB1!-.!$J.CZ01O5.6c!5C!U8U6.<A!-.!1/[.61U!-8U608/58-1c!F33l!>1BA/10A68`1c!>1C!5CA!08>A!8C6.0NA=!-.!5U5A081!-.!1/[.61U!^'E!HA0A!<fU!8CN10<A>8;C7!a66J7GGTTTE1J.C>01O5.6E109

2F2G222

Page 213: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. \5-5"#

2F^G222

Page 214: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. _#&#)*#'-1'5%"

G+=+-%+"6$"71(

D8C!-5-A!B1!<fU!8<J106AC6.!JA0A!AJ0.C-.0!D<ABB6AB?!.U!<.6.0!<AC1!.C!5C!D<ABB6AB?E!!*1!`AB.!-.!CA-A!B..0!>8.C61U!-.!B8/01U!U8!C1!C1U!<.6.<1U!-.!BB.C1!.C!5C!A</8.C6.!-.!D<ABB6AB?!L!>1<.C=A<1U!A!aA>.0!>1UAUE

H.01!6A</8XC!.U!>8.061!O5.!BA!.dJ.08.C>8A!J5.-.!U.0!<fU!Nf>8B!U8!B190A<1U!J.0>8/80!AB91!-.!BA!N8B1U1NQA!-.B!-.UA001BB1!>1C!D<ABB6AB?!-.U-.!AB95C1U!B8/01UE!&!<8c!JA068>5BA0<.C6.c!<.!8<JA>6A01C!.UJ.>8AB<.C6.!BAU!U8958.C6.U!B.>650AU7

N$A(+;

! .37==67=VGNP&G&+m:&'7<A57A:>!@C!.U6.!B8/01!U.!J5.-.!.C6.C-.0c!-.!J.0U1CAU!O5.!JA068>8JA01C!.C!.B!-.UA001BB1!-.!D<ABB6AB?c!BA!N8B1U1NQA!-.B!B.C95A[.!L!BAU!<168`A>81C.U!O5.!B1!a8>8.01C!J1U8/B.E

! .37==67=VGNP&G&aC6;&2?&&UC;629^h&o298;&2?&(8iC@:>!@U6.!B8/01!<.!8<JA>6;!J10!B1!A>65AB!-.!B1U!>1<.C6A081U!a.>a1U!J10!J.0U1CAU!O5.!J01/A01C!D<ABB6AB?!A!J08C>8J81U!-.!B1U!Aq1U!R3E

! .37==67=V&a:;6&!97@6C@:&!766:9<;>!@U6.!B8/01!<.!.CU.q1!O5.!5CA!-.!BAU!>1UAU!<fU!8<J106AC6.Uc!JA0A!U.0!5C!/5.C!J0190A<A-10!D<ABB6AB?c!.U!J0.U6A0!<5>aQU8<A!A6.C>8;C!A!BA!>BA08-A-!-.B!>;-891E

! .37==67=V&cC6m&.6^=:>!@U6.!B8/01!<.!<1U60;!BA!<AL10QA!-.!BAU!>1C`.C>81C.U!O5.!U.!568B8=AC!A!BA!a10A!-.!.U>08/80!>;-891!D<ABB6AB?E

! 0:;CA<&!766:9<;&G&$=:3:<6;&2?&%:5;7Q=:&"Qd:@6&"9C:<6:8&.2?6c79:>!*1!.U!J1U8/B.!-.>80!a1L!.C!-QA!O5.!U.!UA/.!J0190A<A0!>1C!1/[.61U!U8!C1!U.!aA!B.Q-1!.U6.!B8/01E!@U6.!B8/01!.U!.B!>5BJA/B.!-.!O5.!a1L!.U6X!.U>08/8.C-1!5C!B8/01!-.!D<ABB6AB?!L!C1!5C1!-.!rA`A!1!E*@bE!!P.!.C6.0X!-.!BA!.d8U6.C>8A!-.!D<ABB6AB?c!L!-.!U5!8<JA>61!U1/0.!BA!6.>C1B19QA!-.!1/[.61Uc!A!60A`XU!-.!BAU!.dJB8>A>81C.U!-.!AB95C1U!JA601C.UE!!@U6.!.U!.B!B8/01!O5.!-.UJ.06;!<8!>5081U8-A-!J10!AJ0.C-.0!D<ABB6AB?E

! +m:&0:;;CA<&!766:9<;&.37==67=V&*2347<C2<>!@U6.!B8/01!<.!.CU.q;!<5>a1!D<ABB6AB?!J10!>1<JA0A>8;C!>1C!BA!8<JB.<.C6A>8;C!-.!B1U!JA601C.U!.C!.B!B8/01!AC6.0810E

'1/&(;-+-1(6T%7*+;

! 0:;CA<&!9C<@C4=:;&a:mC<8&.37==67=V>!@d>.B.C6.!-.U>08J>8;C!-.!BAU!<168`A>81C.U!O5.!089.C!.B!-.UA001BB1!-.B!J01L.>61!D<ABB6AB?E!!HA0.>.!>8.C>8A!N8>>8;C!U8!>1CU8-.0A<1U!O5.!BA!C16A!N5.!J5/B8>A-A!.C!BA!0.`8U6A!#L6.!-.!A91U61!-.!FSRFE

! !:9;2<7=&0^<73C@&-:8C7>!@d>.B.C6.!.dJB8>A>8;C!-.!BAU!<168`A>81C.U!-.60fU!-.B!-.UA001BB1!-.!D<ABB6AB?!.U>086A!J10!&BAC!KAL!.C!.B!Aq1!FS,4E

! +m:&$79=^&UC;629^&2?&.37==67=V>!@U6A!.U!5CA!a8U6108A!-.!D<ABB6AB?c!.U>086A!J10!&BAC!KALc!.C!.B!Aq1!FSS^!IAC6.U!-.!O5.!>1<.C=A0A!.B!J01L.>61!DO5.A?!ABBf!J10!.B!FSSeM!-1C-.!>5.C6A!-.!-1C-.!`8.C.C!BAU!8-.AU!J08C>8JAB.UE!!b.0<8CA!>1C!5CA!N0AU.!O5.!6A</8XC!<.!<A0>;!.UJ.>8AB<.C6.7!sV'1C-.!.U6fC!B1U!'AC!I)C9ABBUM!L!BAU!&-.B.!I:1B-/.09M!-.!B1U!R3U!L!B1U!S3U!O5.!C1U!BB.`.C!AB!J0;d8<1!C8`.B!-.!-.UA001BB1YtE

2F_G222

Page 215: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. _#&#)*#'-1'5%"

U(7/+;-#&-V;71($+;

@d8U6.C!-8N.0.C6.U!905J1U!-.!5U5A081U!L!B8U6AU!-.!-8U>5U8;C!.C!)C6.0C.6E!!+AU!>1<5C8-A-.U!-.!5U5A081U!-.!D<ABB6AB?!U5.B.C!U.0!<5L!A<A/B.Uc!A!-8N.0.C>8A!-.!160AU!>1<5C8-A-.Uc!>1C6.U6AC-1!A!J0.95C6AU!-.!J.0U1CAU!O5.!0.>8XC!>1<8.C=ACE

2FeG222

Page 216: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. _#'*,5316'

G+"%*7;$)"

@U6.!B8/01!C1!J0.6.C-QA!U.0!5C!<AC5AB!-.!D<ABB6AB?c!C8!6A<J1>1!5CA!95QA!-.!0.N.0.C>8AE!@U6.!B8/01!U;B1!J0.6.C-QA!<1U60A0!5C!J1>1!BA!N8B1U1NQA!-.60fU!-.!D<ABB6AB?!L!>1<1!.UA!N8B1U1NQA!8<JA>6A!.C!.B!-.UA001BB1!-.!U1N6TA0.!Lc!A!U5!`.=c!>1<1!.U6A!N10<A!-.!60A/A[A0!J01-5>.!U1N6TA0.!-.!<AL10!>AB8-A-!.C!<.C1U!68.<J1!O5.!>1C!160AU!1J>81C.UE

@B.9Q!<1U60A0!>1<1c!5C!A</8.C6.!-.B!J1-.0!-.!D<ABB6AB?c!J.0<86.!5C!.U68B1!-.!J0190A<A>8;C!<5L!8C>0.<.C6AB!LA!O5.!.B!>1U61!-.!B1U!>A</81U!.U!<5L!/A[1E!D8C!.</A091!>0.1!O5.!.U!C.>.UA081!A>BA0A0!O5.!D<ABB6AB?!C1!0.O58.0.!O5.!U.!60A/A[.!AUQ!L!O5.!.U!J.0N.>6A<.C6.!J1U8/B.!568B8=A0!5C!A</8.C6.!-.!D<ABB6AB?!>1C!5CA!N10<A!-.!60A/A[1!<.C1U!8C>0.<.C6AB!L!<.C1U!-8Cf<8>AE!!ZA-A!J0190A<A-10!68.C.!O5.!-.>8-80c!.C60.!160AU!>1UAUc!O5.!68J1!-.!J0190A<A>8;C!J0.N8.0.E!@C!.U6.!B8/01!U;B1!8C6.C6X!<1U60A0!.B!68J1!-.!J0190A<A>8;C!O5.!L1!J0.N8.01c!L!O5.!C1!J5.-1!-.UA001BBA0!.C!160AU!a.00A<8.C6AU!O5.!C1!U.AC!D<ABB6AB?E

&!B1!<.[10!O5.-A!.C!AB9pC!B.>610!BA!8-.A!O5.!.U6A!<.61-1B19QA!C1!.U!<5L!0fJ8-AE!D8!.U1!B.U!aA!1>5008-1!>1CU8-.0.C!O5.!65`.!O5.!<1U60A0c!JAU1!A!JAU1c!BAU!a.00A<8.C6AU!L!>1<1!U.!5UACc!6A</8XC!65`.!O5.!8C601-5>80!C16AU!>1C!.dJB8>A>81C.U!U1/0.!6AB!1!>5AB!>BAU.c!L!.U1!J1-0QA!aA/.0!8<JA>6A-1!C.9A68`A<.C6.!.C!BA!J.0>.J>8;C!-.B!68.<J1!-.!-.UA001BB1E!%.61!A!>5ABO58.0A!O5.!U.!aALA!J1-8-1!O5.-A0!>1C!.U.!UA/10!-.!/1>A!A!J01/A0!BA!<.61-1B19QA!.C!AB9pC!U8U6.<A!0.AB!L!O5.!.d60A89AC!BAU!>1C>B5U81C.U!U;B1!-.UJ5XU!-.!.UA!.dJ.08.C>8AE

D<ABB6AB?!.U!5CA!J8.=A!8C>0.Q/B.!-.!U1N6TA0.c!U8C!.</A091!D<ABB6AB?!C1!.U!BA!<.6A!.C!U8!<8U<1E!D<ABB6AB?!.U!JA06.!-.!5CA!`8U8;C!U1/0.!>1<1!-./8X0A<1U!568B8=A0!BAU!>1<J56A-10AUE

+1U!1/[.68`1U!JBAC6.A-1U!.C!BAU!8-.AU!O5.!089.C!.B!-.UA001BB1!-.!D<ABB6AB?!61-A`QA!C1!aAC!U8-1!AB>AC=A-1U!.C!U5!JB.C865-E!!D<ABB6AB?!C1U!J.0<86.c!a1Lc!8<A98CA0!>1<1!J1-0QA!U.0!BA!.dJ.08.C>8A!-.!568B8=A0!5CA!>1<J56A-10A!Lc!JA0A!AB>AC=A0!.B!1/[.68`1!<fd8<1!m!O5.!>5ABO58.0!J.0U1CA!c!L!C1!U;B1!J0190A<A-10.Uc!J5.-A!8C6.0A>65A0!>1C!BA!8CN10<A>8;C!L!>1CU60580!>1C1>8<8.C61!A!60A`XU!-.!.UA!8C6.0A>>8;C!m!-./.<1U!U.9580!<.[10AC-1!AB!D<ABB6AB?E

HA0A!B190A0!.U.!1/[.68`1!B1U!J0190A<A-10.U!6.C.<1U!5CA!6A0.A7!Z1C`.0680C1U!.C!<.[10.U!J0190A<A-10.U!L!>1<JA0680!>1C!61-1!.B!<5C-1!m!J0190A<A-10.U!L!C1!J0190A<A-10.U!m!B1!O5.!AJ0.C-8<1UE

2F4G222

Page 217: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. [14,1#$"%@O%

O$A*$+,(1DT1

@U6.!B8/01c!>1<1!LA!U.!A>BA0;!.C!.B!>AJQ65B1!-.!8C601-5>>8;Cc!C1!.U!5CA!95QA!>1<JB.6A!-.!D<ABB6AB?E!+1U!U8958.C6.U!B8/01U!L!JAJ.0U!U1C!>1<JB.<.C61U!8-.AB.U!JA0A!O58.C!-.>8-A!>1C68C5A0!U5!-.UA001BB1!>1<1!J0190A<A-10!AJ0.C-8.C-1!D<ABB6AB?E

&B95C1U!-.!.BB1U!U.!J5.-.C!-.U>A09A0c!-.!N10<A!90A6586Ac!-.!a66J7GGTTTE8A<E5C8/.E>aG�-5>AUU.G(0..#11?UEa6<B

(&'C66=:&.37==67=V[5((;)91&&--8U1C!i.UB.LE!FSR,E

a7@V&62&6m:&?5659:&G&+m:&.629^&2?&._5:7Vh&(&!97@6C@7=&.37==67=V&o9C66:<&C<&)6;:=?I%2;)F,%'a66J7GG5U.0UE8JAEC.6G�-T89a6aGUO5.A?G11JUBAwUO5.A?Ea6<B$$HD+&!S,!H01>..-8C9E!HE!^FR"^24E!&ZP!H0.UUc!*.T!x10?c!FSS,EIA!J1U6U>08J6!/L!'AC!)C9ABBU!8C!}:5=-8ABG%1U.!233F~ME

0:;CA<&!766:9<;&G&$=:3:<6;&2?&%:5;7Q=:&"Qd:@6&"9C:<6:8&.2?6c79:i%&&%;)h8;)j8)g/,&;)j8)l#B'3#';)%'()l8)`,1331(/3&--8U1C!i.UB.LE!FSSeE

0:;CA<&!9C<@C4=:;&a:mC<8&.37==67=VK'$%,,3;)U%'a66J7GG5U.0UE8JAEC.6G�-T89a6aGU<ABB6AB?G/L6.wA59RFG-.U89CwJ08C>8JB.Uw/.a8C-wU<ABB6AB?Ea6<B

:x69:3:&!92A9733C<A&:x4=7C<:8&G&$3Q97@:&*m7<A:[/*.;)I/'-&--8U1C!i.UB.LE!FSSSE

/5C8:&62&a:66:9&.37==67=V1&(&.296:8&*2==:@6C2<[/*.;)I/'-ZA</08-9.!oC8`.0U86L!H0.UU!.C!AU1>8A>8;C!>1C!D):D!#11?UE!oC86.-!D6A6.!1N!&<.08>AE!FSSSE

)<;C8:&.37==67=V&[i2=1&2<:&7<8&6c2\C%C#'(/;)m1,@8)j8)!5$B;)l#B'8)j8H0.C68>.!]ABBE!FSS3E

"Qd:@6G"9C:<6:8&)34=:3:<676C2<&2?&#53:9C@7=&-:6m28;1&(<&)<69285@6C2<&cC6m&|7i7&7<8&.37==67=V[/33/-;)U1(1/")g8P109AC!KA5N<ACC!H5/B8Ua.0UE!oC86.-!D6A6.!1N!&<.08>AE!233FE

!:9;2<7=&0^<73C@&-:8C7

2F,G222

Page 218: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. [14,1#$"%@O%

I%2;)F,%'8)i#,(4/"$;)F(/,/a66J7GGTTTE-1BJa8CaA0/10E109G-aGU<ABB6AB?G-1>5<.C6UG%.J08C6.-!8C!ba.!*.T!%.A-.0E!FS,4E

!2c:9?5=&)8:7;&C<&6m:&*=7;;9223[8)l8)F,,/')_#''8)j#3/;)I1&\8.TJ18C6U!%.U.A0>a!)CU68656.c!)C>E!233^E

%:?7@629C<A&a92c;:9&+22=["%'-;)g#B';)%'()U#')j#4/"-8!a66J7GGU6"TTTE>UE585>E.-5G�-01/.06UG6AJ1UGb&H$DEa6<

%:?7@629C<A1&&)3492iC<A&+m:&0:;CA<&2?&$kC;6C<A&*28:\#^,/";)T%"-1'&--8U1C!i.UB.LE!PAUUA>a5U.66UE!FSSSE

.C34=:&.37==67=V&+:;6C<A&G&oC6m&!766:9<;[/*.;)I/'-a66J7GGTTTEdJ0190A<<8C9E>1<G6.U6N0A<Ea6<

.37==67=V&(<&)<69285@6C2<&+2&(4=C@76C2<&0:i:=243:<6&Z;C<A&iC;57=c29Vg#0.1'3;)9"/G#")%'()g#"%';)[/"'%"(H.A0U1C!@-5>A681CE!FSSeE

.37==67=V&7<8&"Qd:@6&"9C:<676C2<&G&(<&)<69285@6C2<g5'-;)l#B'8)+0"1'$/"k`/",%$8)FSS,E

.37==67=V&a:;6&!97@6C@:&!766:9<;[/*.;)I/'-H0.68>.!]ABBc!*.T!r.0U.LE!FSS,E

.37==67=V&Q^&$k734=:&G&+m:&0:i:=24:9S;&/5C8:+B%"0;)F,/:P>:0AT!]8BB!b.d6E!FSS,E

.37==67=V&cC6m&.6^=:+.54,1*3;)+5?%''/8)I,1&%3;)h(^%"()l8)9B#&%3;)U%G1()F8H0.68>.!]ABBE!*.T!r.0U.LE!FSS4E

.37==67=VGNP&G&+m:&'7<A57A:i#,(4/"$;)F(/,/8)j#43#';)U%G1(&--8U1C"i.UB.L!H01NN.U81CABE!FSRSE

.37==67=VGNP&G&aC6;&2?&&UC;629^h&o298;&2?&(8iC@:I"%3'/";)i,/''&--8U1C!i.UB.LE!ZAB8N10C8AE!FSR^E

2FRG222

Page 219: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. [14,1#$"%@O%

.37==67=VGNP&G&+m:&)<6:97@6Ci:&!92A9733C<A&$<iC923:<6i#,(4/"$;)F(/,/&--8U1C!i.UB.LE!ZAB8N10C8AE!FSR_E

.37==67=VGNP&G&+m:&'7<A57A:&7<8&)6;&)34=:3:<676C2<i#,(4/"$;)F(/,/8)j#43#';)U%G1(&--8U1C!i.UB.LE!ZAB8N10C8AE!FSR^E

.37==67=Vh&"Qd:@6&7<8&0:;CA<_B%&#'(;)C15b1!@d>.BE!*.T!x10?E!FSS4E

._5:7V&G&"Qd:@6G"9C:<6:8&0:;CA<&cmC6&-5=6C3:8C7&(44=C@76C2<;i5?(1%,;)T%".H0.C68>.!]ABBE!*.T!r.0U.LE!233FE

._5:7V1&"4:<&!:9;2<7=&*23456C<A&7<8&-5=6C3:8C7i5?(1%,;)T%".8)j#3/;)I1&H0.C68>.!]ABBE!*.T!r.0U.LE!2332E

+:;6G09Ci:<&0:i:=243:<6&G&a^&$k734=:[/*.;)I/'-&-8UU1C!i.UB.LE!2332E

+m:&(96&7<8&.@C:<@:&2?&.37==67=VC/^13;)+1&#'H0.C68>."]ABBE!FSSe"FSSSE

+m:&0:;;CA<&!766:9<;&.37==67=V&*2347<C2<F,0/"-;)+B/"&%'8)["#^';)I2,/8)m##,@;)[#442&--8U1C!i.UB.LE!ZAB8N10C8AE!FSSRE

+m:&$79=^&UC;629^&2?&.37==67=VI%2;)F,%'!a66J7GG9A9C.Ea1<.-CUE109G�69A9C.G>1C608/G@A0BL]8U610LDbEa6<B

+m:&|2^&2?&.37==67=V9#&/.;)KG%'8!2333E

+m:&+7;6:&2?&.37==67=VI%/B,/";)9/(8)!%--/"3#';)U%G/ii!*1061C!�!Z1E!FSR4E

+22=;&p29&+m25Am61&+m:&UC;629^&7<8&p5659:&2?&-C<8G$k47<8C<A&+:@m<2=2A^jB/1'$#,(;)g#^%"(ba.!P)b!H0.UU!ZA</08-9.c!PAUUA>a5U.66UE!2333Ea66J7GGTTTE0a.8C91B-E>1<G6.d6UG6N6G

2FSG222

Page 220: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. [14,1#$"%@O%

Z<7&$k4=C@7@CY<&8:&=7&!92A9737@CY<&$k69:37&G&(@:4679&:=&@73QC2[/*.;)I/'-&-8UU1C"i.UB.L!)/.01A<.08>ACA!@UJAqAc!DE&E!PA-08-E!2332E

223G222

Page 221: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. g/""%&1/'-%3)53%(%3)/')/,),14"#

I&((1=$&"61;-7;1#1;-&"-&*-*$A(+

HA0A!<1U60A0!BA!N10<A!-.!60A/A[1!O5.!J.0<86.!.B!5U1!-.!5C!A</8.C6.!-.!1/[.61U!>1<1!D<ABB6AB?c!.C!.U6.!B8/01c!.B.9Q!-.UA001BBA0!AB95CAU!AJB8>A>81C.U!-.!.[.<JB1!JAU1!A!JAU1c!>1CN8AC-1!.C!O5.!.B!B.>610!J.0>8/A!BA!-8N.0.C>8A!-.!60A/A[A0!>1C!D<ABB6AB?!-.!5CA!.dJ.08.C>8A!-.!J08<.0A!<AC1E!@U6.!B8/01!J8.0-.!J10!>1<JB.61!U5!U.C68-1!U8!C1!B1901!O5.!B1U!B.>610.U!U.!AC8<.C!A!J01/A0c!.C!5C!A</8.C6.!-.!D<ABB6AB?c!>5AC61!U.!B..!L!61-1!B1!O5.!U.!`.C9A!.C!<.C6.E

HA0A!0.-5>80!AB!<QC8<1!.B!68.<J1!C.>.UA081!JA0A!.C60A0!.C!.B!A</8.C6.c!>0..!5CA!8<A9.C!-.!DO5.A?!J0.">1CN8950A-A!L!>1C!AB95C1U!JAO5.6.U!.d60AU!8CU6ABA-1UE

+A!8<A9.C!568B8=A-A!.U!5CA!^ER"N5BB!s1N8>8ABt!>1C!`A08AU!J0.N.0.C>8AU!>A</8A-AUc!L!>1C!B1U!U8958.C6.U!JAO5.6.U!8CU6ABA-1U7

#23Q9: ,:9;CY< 0:;@9C4@CY<

x&j$ 2E2 HA0U.0!-.!jP+E

jP+!D6A>?!HA0U.0 F HA0U.0!-.!jP+!/AUA-1!.C!5CA!J8BAE

Z1JL!AU!]bP+ F o68B8-A-!JA0A!>1J8A0!AB!J106AJAJ.B.U!5CA!`.0U8;C!]bP+!-.B!6.d61!DO5.A?E!)C>B5L.!.B!N10<A61!>1C!U5U!>1B10.Uc!.6>E!oUA-1!JA0A!.B!>;-891!<1U60A-1!.C!.U6.!B8/01E

D608C9@Ca F &B95C1U!.d60AU!JA0A!BA!>BAU.!'&.3,-E

Da156 _ HAO5.6.!O5.!aA>.!ULC6Ad"a89aB89a6!<8.C60AU!U.!.U>08/.E

Da156P1C68>.BB1 2 @d6.CU81C.U!Da156!JA0A!BAU!a.00A<8.C6AU!0.BA>81CA-AU!>1C!.B!P1C68>.BB1E

Da156i10?UJA>. 2 oC!i10?UJA>.!O5.c!`AB8XC-1U.!-.B!Da156c!aA>.!ULC6Ad"a89aB89a6!<8.C60AU!U.!.U>08/.E

%.NA>6108C9!#01TU.0!N10!^ER ^ERE_^ @d6.CU81C.U!JA0A!B1U!/01TU.0U!JA0A!aA>.0!0.NA>6108=A>81C.U!-.B!>;-891E

DoC86 ^EFE22 (0A<.T10?!JA0A!aA>.0!oC86b.U68C9!>1C!D<ABB6AB?E!'.08`A-1!-80.>61!-.B!J08<.0!N0A<.T10?!-.!oC86b.U68C9!.U>0861!J10!K.C6!#.>?E

'LCA<8>#8C-8C9U FE2 HAO5.6.!0.O5.08-1!J10!K1<]66JD.0`.0E

K1<D.0`8>.U FEFEF HAO5.6.!0.O5.08-1!J10!K1<]66JD.0`.0E

K1<]66JD.0`.0 ,E3E2 HAO5.6.!0.O5.08-1!J10!D.AU8-.E!D.0`8-10!T./!QC6.90A<.C6.!-.UA001BBA-1!.C!D<ABB6AB?E

D.AU8-. 2Ee (0A<.T10?!-.!-.UA001BB1!-.!AJB8>A>81C.U!T./!/AUA-1!.C!>1C68C5A681CUE!HA0A!<fU!8CN10<A>8;C!`.0!

22FG222

Page 222: Programando Con Smalltalk

!"#$"%&%'(#)*#')+&%,,-%,. g/""%&1/'-%3)53%(%3)/')/,),14"#

#23Q9: ,:9;CY< 0:;@9C4@CY<

.B!U8681!TTTEU.AU8-.EU6

+A!8<A9.C!1N8>8AB!U.!J5.-.!-.U>A09A0!-.U-.!.B!U8681!TTTEUO5.A?E109!.UJ.>QN8>A<.C6.7

!a66J7GGN6JEUO5.A?E109G>500.C6wU6A/B.GDO5.A?^ER"444e"N5BBE=8JE

HA0A!>1CU60580!5CA!8<A9.Cc!>1<1!BA!5UA-A!.C!.U6.!B8/01c!B1!<fU!Nf>8B!.U!8CU6ABA0!.B!JAO5.6.!sH0190A<A>81CZ1CD<ABB6AB?tc!5UAC-1!.B!DO5.A?PAJc!!L!.U6.!8CU6ABA0f!BAU!a.00A<8.C6AU!C.>.UA08AU!-.U>A09fC-1BAU!-.U-.!)C6.0C.6E

222G222


Top Related