INF220-Fundamentos de Programación

1

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA PROGRAMACIÓN ORIENTADA A OBJETOS CON

SQUEAK
El objetivo prin ip!l "e e#t! $%&!' ( "el l!bor!torio en $ener!l' e# )o#tr!r l! *ilo#o*&! "e l! pro$r!)! i+n orient!"! ! objeto#, Al i$%!l -%e %!n"o #e e#t%"i! in$l.#' #e ! on#ej! ! no tr!"% ir' #ino ! pen#!r en in$l.#/ "el )i#)o )o"o pl!nte!)o# l! )i#)! re$l! p!r! !pren"er e#te p!r!"i$)!' no b%#-%e #% e-%iv!lente en el len$%!je i)per!tivo' pien#e orient!"o ! objeto#, Por e#te )otivo e)ple!re)o# )% 0o# eje)plo# "el p!r!"i$)! i)per!tivo p!r! )o#tr!r n%evo# on epto# "e l! pro$r!)! i+n orient!"! ! objeto#, A0or! bien 1por -%. Squeak2 Por-%e e#te len$%!je )!ntiene "e l! )!ner! )3# p%r! po#ible' lo# on epto# en lo# -%e e#t3 b!#!"o e#te p!r!"i$)!, T!)bi.n 0! interveni"o %n o)ponente 0i#t+ri o' pero e# #e %n"!rio, En %n len$%!je i)per!tivo e#t!)o# ! o#t%)br!"o# ! "!r or"ene# %n! tr!# otr! por )e"io "e #enten i!#' on l! !(%"! "e *%n ione# ( pro e"i)iento# p!r! -%e no# *! ilite el tr!b!jo' pero !l *in!l e# o)o #e$%ir %n! re et!, E#te e# %n )%n"o "i*erente' "on"e to"o lo -%e e4i#te #on !t!lo$!"o# o)o objeto# ( #i %#te" -%iere -%e e#to# re! ionen tiene -%e envi!rle# %n )en#!je, Si 0!( %n ).to"o on el )i#)o no)bre -%e el )en#!je' e#to# re#pon"er3n "e ! %er"o ! lo "e# rito en el ).to"o, C%!n"o %no "e*ine %n! e#tr% t%r! en %n len$%!je i)per!tivo' e#t! "e*ini i+n no i)pli ! -%e (! e4i#t! en l! )e)ori! !l$5n e#p! io "e*ini"o, Al )o)ento -%e #e "e l!r! %n! v!ri!ble "e %n tipo re$i#tro !nterior)ente e#pe i*i !"o' re i.n en e#e )o)ento #e re#erv! el e#p! io "e ! %er"o ! lo "e*ini"o, Di$!)o# -%e l! "e*ini i+n re i.n 6!"-%iere vi"!7 ! tr!v.# "e %n! v!ri!ble, Al$o #e)ej!nte #% e"e on lo# objeto#, Ne e#it!)o# "e*inirlo#' e#to i)pli ! "e# ribir l! "!t! 8v!ri!ble#9 ( #% o)port!)iento 8).to"o#9' ! e#t! "e*ini i+n le ll!)!)o# clase, Lo intere#!nte e# -%e el o)port!)iento e# heredado por to"o# #%# l!#e# 0ij!#, L! l!#e p!"re e# ll!)!"! superclase ( l!# l!#e# 0ij!# #on ll!)!"!# subclases, Co)o to"o objeto n! e "e %n! l!#e #e "i e -%e %n objeto e# %n! instancia "e %n! l!#e, E#to# on epto# b3#i o# #on #%*i iente# p!r! e)pe:!r ( ! )e"i"! -%e v!(!)o# !v!n:!n"o #e ir3n "e#!rroll!n"o otro# on epto#, En e#t! pri)er! p!rte )o#tr!re)o# el re#%lt!"o "e envi!r %n! v!rie"!" )en#!je# ! "i*erente# objeto#' #in lle$!r ! pro$r!)!r !l$orit)o !l$%no, L! i"e! b3#i ! e# *!)ili!ri:!rno# on el len$%!je, E)pel!re)o# el Workspace ( el Transcipt, El Workspace e# %n! e#pe ie "e shell "on"e po"e)o# ver el re#%lt!"o "e envi!r )en#!je# ! "i*erente# objeto#, El re#%lt!"o "el )en#!je #e )%e#tr! en el )i#)o ;or<#p! e !#i ! ontin%! i+n "el )en#je, P!r! )o#tr!r el re#%lt!"o le tene)o# -%e "e ir ! S-%e!< 6i)pri)elo7 8print it9, A "i*eren i! "e #i t%vier!)o# %n! ! i+n ten"r&!)o# -%e "e irle ! S-%e!< 60!:lo7 8"o it9, L! "i*eren i! re#i"e en lo -%e "e#ee!)o# -%e 0!$! S-%e!<, En e#to# pri)ero# eje)plo# -%ere)o# i)pri)ir lo# re#%lt!"o# -%e retorn!n lo# )en#!je# envi!"o# ! ierto# objeto# 8n5)ero#' v!l+re# l+$i o#, Et 9, El Transcript m% 0!# ve e# l!# #!li"!# no l!# -%ere)o# )e: l!r on l!# ev!l%! ione#' "e )o"o -%e po"e)o# tener %n! vent!n! "e"i !"! #olo p!r! n%e#tr!# #!li"!#, E#te e# el p!pel -%e %)ple el objeto Transcript' !l )o)ento "e ev!l%!r "ebe)o# in"i !rle -%e -%ere)o# el re#%lt!"o en el Transcript, P!r! !brir %n! vent!n! "el Transcript p%e"e 0! erlo e)ple!n"o el !t!jo= Ctrl+t' %i"e#e "e -%e el %r#or no e#t. ! tivo en el >or<#p! e,
Laboratorio 5

p!r! -%e S-%e!< )%e#tre el re#%lt!"o "e e#te )en#!je 0!$! click "ere 0o ( elij! l! op i+n print it "el )en5 onte4t%!l' t!l o)o #e )%e#tr! ! ontin%! i+n ?= El re#%lt!"o #e )o#tr!r3 en el .or<#p! e "e *or)! #o)bre!"! 8!l *in!l "e l! l&ne!9 on olor lil!. A ontin%! i+n %n! #e %en i! "e )en#!je# envi!"o# ! objeto# on #%# re#pe tiv!# #!li"!#.INF220-Fundamentos de Programación 2 De l! op i+n Tools "el )en5 prin ip!l elij!)o# Workspace' !0or! envie)o# el )en#!je factorial !l n5)ero 7.n p%e"e pre#ion!r Ctrl+p 8en Lin%49 Laboratorio 5 . ? T!)bi.

or<#p! e. A"e)3#' p!r! #ep!r!r %n )en#!je "e otro "ebe)o# olo !r %n p%nto 8. No on*%n"!' lo# )en#!je# bin!rio# no #on oper!"ore#. Lo# 5lti)o# #on intere#!nte#' -%i:3# no er!n lo# v!lore# -%e e#per!b!. E#to# )en#!je# tienen )3# "e %n !r$%)ento ( !"! !r$%)ento v! pre e"i"o por "o# p%nto# 8=9. Al )o)ento "e envi!r el )en#!je' l! re#p%e#t! )o#tr!"! e# #o)bre!"! on el olor lil!. El pen5lti)o pre$%nt! por l! l!#e ! l! -%e pertene e el objeto E8A F( D?. El re#%lt!"o e# )o#tr!"o !l *in!l "e !"! l&ne!.n #on *3 ile# "e enten"er.9. P!r! ter)in!r )en ion!re)o# -%e S-%e!< e# #en#ible ! l!# )!(5# %l!# ( )in5# %l!#. En el 5lti)o !#o el )en#!je envi!"o e# 6B C7 ( el objeto -%e lo re ibe e# 6D7. Laboratorio 5 .C"9 ( e#te re#pon"e "i ien"o -%e e# "e l! l!#e Array. A ontin%! i+n !l$%no# eje)plo# -%e %#te" po"r3 prob!r en el . Mensajes Lo# )en#!je# %n!rio#= #on !-%ello# )en#!je# -%e no tienen !r$%)ento#. S+lo e4i#ten "o# oper!"ore# en S-%e!<. A ontin%! i+n !l$%no# eje)plo# -%e %#te" po"r3 prob!r en el . El 5lti)o e# %n )en#!je -%e re#pon"e on %n! opi! "el objeto. De e#to #e p%e"e "e"% ir -%e 0!( "i#tinto# tipo# "e )en#!je#.or<#p! e. Gen#!je# bin!rio# #on !-%ello# -%e tienen #+lo %n !r$%)ento ( e)ple! %n !r3 ter "e #ele tor bin!rio 8lo# !r! tere# "e #ele tor bin!rio #on= H I J K L M N B O P Q @ R ' 2 S9. E# "e ir no e#t3n "e*ini"o# en l! #int!4i# "e S-%e!<.INF220-Fundamentos de Programación 3 El )en#!je 6@ A7 #e env&! !l objeto 6?7 ( e#te re#pon"e 6tr%e7. E# "e ir en el pen5lti)o eje)plo pri)ero #e env&! T B DT !l objeto U' el -%e re#pon"e on el objeto ?V' el )i#)o -%e le e# envi!"o el )en#!je M A' lo -%e re#%lt! en el objeto AV. L! e4pli ! i+n e# )%( #en ill!' lo# )en#!je# #on !#o i!tivo# por l! i:-%ier"!. C!#i to"o# lo# )en#!je# #e e4pli !n por #& #olo#' e4 epto lo# "o# 5lti)o#. A ontin%! i+n !l$%no# eje)plo# -%e %#te" po"r3 prob!r en el . E#to# eje)plo# t!)bi. Por 5lti)o e#t3n lo# )en#!je# on p!l!br!# re#erv!"!# 8<e(>or"# )e##!$e#9.or<#p! e.

n )en#!je#. IfTrue: ifTrue:ifFalse: Laboratorio 5 . En otro# p!r!"i$)!# o)o el *%n ion!l no 0!( #enten i!# "e repeti i+n p!r! no )o"i*i !r el e#t!"o ori$in!l. En l%$!r "e ele$ir print it' !0or! "ebe)o# ele$ir do it' o %n! ve: )!r !"o' pre#ion!r Ctrl+ d.' !"ivin+' !-%& 0!( )en#!je#. A-%& 0!( . . Ve!)o# !l$%no# eje)plo#= Ante# "ebe)o# "e !brir l! vent! "el Trnascript. En S-%e!< no 0!( #enten i!# "e *or)! o)o lo ve)o# en %n len$%!je i)per!tivo.INF220-Fundamentos de Programación 4 Estructuras e c!ntr!l En %n len$%!je i)per!tivo e4i#ten #enten i!# t!le# o)o if/then/else' while/repeat/for -%e per)iten e#tr% t%r!r pro$r!)!# "e *or)! or"en!"!. Por t!nto %n if/then/else ( l!# e#tr% t%r!# "e repeti i+n #on t!)bi. En el Workspace #i -%ere)o# -%e #e eje %te )3# "e %n! l&ne! "e )en#!je#' "ebe)o# )!r !rlo#' "e lo ontr!rio #olo tr!t!r3 "e envi!r el )en#!je "e l! l&ne! "on"e #e en %entr! el %r#or. .

Por eje)plo #i #e "e#e! re!r %n !rre$lo p!r! l%e$o !l)! en!r %n entero 8?A9' %n! !"en! 8T0ol!T9 ( %n !r3 ter 8F!9' po"e)o# re!li:!rlo "e l! #i$%iente *or)!= Laboratorio 5 . Por t!nto lo# ). W!( -%e )en ion!r -%e lo# !rre$lo# en S-%e!< p%e"en ontener ele)ento# "e "i#tinto# tipo#.INF220-Fundamentos de Programación 5 Re"et#c#!nes whileTrue: timeRepeat: to:do: Arre$l!s % Ca enas& A)bo# tienen o)port!)iento# o)%ne# por-%e tienen l! )i#)! #%per l!#e= SequenceableCollection.to"o# -%e #e !pli !n en %no' #e p%e"en !pli !r !l otro.

El clickN!)!rillo e# el #i$%iente )3# e)ple!"o ( #irve p!r! obtener el )en5 onte4t%!l "epen"ien"o "e "+n"e e#t3 !p%nt!n"o el mouse. X el 5lti)o )en#!je select $ener! %n !rre$lo on lo# ele)ento# *iltr!"o# #e$5n otro )en#!je.# "el )en5 en l! p!rte #%perior "e Squeak' o 0! ien"o clickNrojo ( eli$ien"o !rowser . Y#te objeto 8System !rowser9 e# %#!"o p!r! e"it!r l! v!rie"!" "e pro$r!)!# -%e #on re!"o# en Smalltalk. Crean ! Clases' #nstanc#as % ()t! !s& El System Browser Ll!)!re)o# ! lo# tre# botone# "el mouse o)o rojo' !)!rillo ( !:%l re#pe tiv!)ente.INF220-Fundamentos de Programación 6 A ontin%! i+n !l$%no# )en#!je# -%e #e le p%e"en envi!r ! lo# !rre$lo# o !"en!#= Se p%e"e "e"% ir -%e el )en#!je at per)ite obtener %n ele)ento "el !rre$lo. P!r! obtener el browser pre#ione Alt+b' o p%e"e obtenerlo ! tr!v. De 0e 0o !l$%no# (! 0!n #i"o %#!"o#. El clickNrojo e# el )3# %#!"o ( #irve p!r! #ele ion!r !l$5n &te) "e %n! li#t!' #ele ion!r te4to' ( #ele ion!r op ione# "e %n )en5. En Lin%4 "e# %br! ! -%i. El clickN!:%l e# %#!"o p!r! obtener el 6 morphic halo7' %n !rre$lo "e )!nej!"ore# -%e per)iten llev!r ! !bo oper! ione# #obre lo# )i#)o# objeto#' en l! p!nt!ll!.n orre#pon"e !"! olor. El System !rowser )%e#tr! pie:!# "e +"i$o "e ! %er"o ! %n e#-%e)! "e l!#i*i ! i+n' ( e#te e# el prin ip!l l%$!r "on"e el +"i$o #e re! ( #e e"it!. En Squeak no #e ! o#t%)br! ! "e ir click i:-%ier"o' #ino -%e #e "e# riben lo# botone# "el mouse por olore#. El )en#!je do per)ite $ener!r %n b% le "on"e !"! v%elt! #e to)! %n ele)ento "el !rre$lo. C B Clases Categoría de m todos !o protocolos" D # todos A Categoría de clases E C$digo de Smalltal% para los m todos Laboratorio 5 . E#te 5lti)o eje)plo p%e"e 0! erle re or"!r ! l!# li#t!# on pre"i !"o# en W!#<ell. A"e)3# l! on*i$%r! i+n p%e"e v!ri!r entre #i#te)!# oper!tivo#.

A0or! #i %#te" 0! #i"o %i"!"o#o #e 0! per !t!"!o -%e le 0e)o# "!"o l! *or)! "e re!r %n! l!#e n%ev! ( "e re!r %n ). Sin e)b!r$o #i #e 0i ier! e#to 0!br&! %n "e#or"en ( !%n-%e #e en %entren or"en!"!# "e *or)! !l*!b.to"o#' lo# )i#)o# -%e #e l!#i*i !n en proto olo#. Si el %r#or #e en %entr! en l! !te$or&! [ernel N%)ber#' l! #e$%n"! ol%)n! )%e#tr! to"!# l!# l!#e# -%e pertene en ! e#t! !te$or&!.to"o# #e$5n !"! proto olo. L! %!rt! ol%)n! 8D en el "ib%jo "e !rrib!9 #e )%e#tr!n lo# ). Por e#te )otivo #e 0!n in l%i"o "o# ol%)n!# !"i ion!le# -%e no# per)iten l!#i*i !r l!# l!e# ( lo# ).to"o p!r! el proto olo !l -%e e#t3 !p%nt!nto el %r#or.to"o# p!r! )o#tr!r "!to#' otro# p!r! )o"i*i !rlo#. C!"! l!#e tiene %n! #erie "e ). L! pri)er! ol%)n! 8A en el "ib%jo "e !rrib!9 #e en %entr!n l!# !te$ori!# "e l!# l!#e#. ten"r&!)o# -%e 0! er2 En el pri)er !#o b!#t! on olo !r el %r#or en l! ol%)n! A ( 0! er click "ere 0o' ( "el )en5 onte4t%!l ele$ir add item. Por !0or! no #e preo %pe #obre l! i)port!n i! o #i$ni*i !"o "e lo# %!tro )en5# en el !rowser.to"o#. Por eje)plo #i el %r#o# "e e %entr! en l! ol%)n! A' pen#!r3 -%e -%ere)o# re!r %n! !te$or&! n%ev! ( en el 3re! E #e )o#tr!r3 %n pl!ntill! "e %n! l!#e p!r! -%e l! llene)o# in"i !n"o ! -%e !te$or&! pertene e. E#t!# 3re!# l!# po"e)o# eti-%et!r o)o A' B' C ( D' p!r! l! p!rte #%perior ( E en l! p!rte in*erior. En Squeak' #e tiene -%e re!r %n! l!#e' in"i !n"o "e -%.to"o n%evo. Depen"ien"o "e "on"e #e en %entr! el %r#or' el 3re! "e !b!jo 8E en el "ib%jo "e !rrib!9 )o#tr!r3 #% onteni"o.ti ! 0!br&! )% 0! "i*i %lt!" p!r! 0!ll!rl!#. l!#e "eriv! 8superclase9 ( l%e$o #e on#tr%(en lo# ). Otr! *or)! "e el!bor!r %n +"i$o po"r&! #er !Z!"ir n%evo# ). De *or)! -%e l! ter er! ol%)n! 8C en el "ib%jo "e !rrib!9 #e )%e#tr!n lo# proto olo# en -%e #e l!#i*i !n lo# ).to"o# p!r! #% in#t!n i! ( lo# ).to"o# por !"! l!#e. De"e e#te p%nto "e vi#t! p!re ier! -%e #olo ne e#it!r!)o# "o# ol%)n!#' %n! p!r! "e*inir l!# l!#e# ( otr! p!r! lo# ). Con #i#te)!# tr!"i ion!le# "e pro$r!)! i+n %no re! %n n%evo pro$r!)! -%e e#t3 "e !l$%n! *or)! enl!:!"o ! otro# pro$r!)!# v&! el #i#te)! oper!tivo. Si el %r#or #e en %entr! en el !\e! C enton e# en el 3re! E #e )%e#tr! %n! pl!ntill! "e %n ). Por eje)plo #i "e#e!)o# re!r %n! l!#e p!r! $r3*i o# b%# !re)o# -%e #e! "e# en"iente "e l! l!#e "orphs 8$r3*i o#9 ( no tene)o# -%e b%# !r en otro l%$!r. Enton e# po"r&!)o# re!r "o# proto olo#= )%e#tr! ( )o"i*i !.to"o#. Laboratorio 5 . Si por el ontr!rio el %r#or #e en %entr! en l! ol%)n! B e#t!r3 !p%nt!n"o ! %n! l!#e ( e4i#tente ( en el 3re! E #e )o#tr!r3 lo orre#pon"iente ! e#t! l!#e. El 3re! E e# l! #e i+n "e 6te4to7 "on"e %#te" e"it!r3 #%# pro$r!)!#. U#te" tr!b!j!r3 "e i:-%ier"! ! "ere 0! ! tr!v. En l! #e$%n"! ol%)n! 8B en el "ib%jo "e !rrib!9 #e en %entr! l!# l!#e# -%e orre#pon"en ! !"! !te$ori!. De e#t! *or)! #i "e#e!)o# en ontr!r %n! l!#e o re!r %n! l!#e n%ev!' #er3 #en ill! %bi !r #% l%$!r "e ! %er"o ! #%# !r! ter&#ti !#.to"o# p!r! l! l!#e #i e# -%e l!# ne e#it!.INF220-Fundamentos de Programación 7 Ob#erve el !rowser' %#te" p%e"e %bi !r en l! p!rte #%perior %!tro 3re!#. L! li#t! "e !te$or&!# e#t3n en el )en5 "e l! i:-%ier"!/ "e#p%.to"o# ! l!#e# (! e4i#tente#.# -%e %#te" 0! ele$i"o %n! "e e#t!# !te$or&!#' %n )en5 )3# e#pe &*i o !p!re e ! #% "ere 0!. Por eje)plo %n! l!#e p%e"e tener ). En el !#o "e %n! !te$or&! n%ev!' #e repite lo )i#)o' pero !0or! on el p%ntero "el )o%#e #obre l! ol%)n! C ( #e elije "el )en5 onte4t%!l new cate#ory. Pero #i "e!#e re!r %n! !te$or&! n%ev! ( %n proto olo n%evo 1-%.# "e lo# %!tro )en5#' ( l%e$o ver3 o re!r3 %n! pie:! "e pro$r!)! en el p!nel "e !b!jo.

to"o9 p!r! !ll& e# ribir n%e#tro# ). and a number of disks of different si$es which can slide onto any rod% The pu$$le starts with the disks in a neat stack in ascendin# order of si$e on one rod. Ap!re er3 %n )en5 pop-up en l! p!nt!ll!.to"o9 en l! -%e olo !re)o# n%e#tro ). G%.anoi !nte# -%e po"!)o# e# ribir el pro$r!)!.to"o#. `. C. ^.v!#e !l 3re! C on el p%ntero "el mouse ( pre#ione l! te l! ESC.v!#e !l 3re! B ( #ele ione *b+ect. G%. In$re#e ! l! vent!n! "el !rowser.to"o#. L%e$o' #e )o#tr!r3 otro )en5 pop-up on t&t%lo Add Category elij! l! op i+n . is a mathematical #ame or pu$$le% &t consists of three rods. Laboratorio 5 . on top of the other disks that may already be present on that rod% • +o disk may be placed on top of a smaller disk%7 8Wikipedia9 Pro$r!)!r en S-%e!< #i$ni*i ! -%e no#otro# "ebe)o# en ontr!r %n l%$!r p!r! l!# Torres de . #ele ion!"!. the smallest at the top. A ontin%! i+n !p!re er3 %n! pe-%eZ! vent!n!' pi"ien"o -%e in$re#e %n no)bre p!r! e#t! !te$or&!. Si no lo e#t3 0!$! click en ell!. En l! p!rte in*erior "el 3re! B !#e$5re#e -%e l! p!l!br! i(sta(ce e#t. E#to #i$ni*i ! -%e tene)o# -%e eli$ir %n l!#e "e %n! !l$%n! !te$or&!. E# rib! el no)bre games ( pre#ione l! te l! return. El no)bre "e n%e#tr! n%evo proto olo' games' !p!re er3 ( e#t!r3 #ele ion!"! en el 3re! C. Por !0or! no %#!re)o# l! op i+n class' p!r! ello !#e$5re#e -%e i(sta(ce per)!ne: ! #ele ion!"!. A0or! !$re$!re)o# %n proto olo 8o !te$or&! "e ).ew. U. _.INF220-Fundamentos de Programación 8 &as Torres de 'a(oi 6Also called the Tower of Brahma or Towers of Brahma. ni !#' e#te tipo "e )en5 e# ono i"o o)o )en5 6 pop-up7. Si$! lo# #i$%iente# p!#o#= ?.n ll!)!"o !te$or&! "e ). No re!re)o# %n! !te$ori! "e l!#e n%ev!' #ino -%e !$re$re)o# %n proto olo 8! ve e# t!)bi. G%ev! el %r#or !l 3re! A. ]%#-%e l! !te$or&! )er(el *b+ects' ( #ele ione e#te &te). obeyin# the followin# rules • )nly one disk may be mo(ed at a time% • *ach mo(e consists of takin# the upper disk from one of the rods and slidin# it onto another rod. G!r-%e el te4to ( borre e#te . Por o# %r!# r!:one# t. thus makin# a conical shape% The ob'ecti(e of the pu$$le is to mo(e the entire stack to another rod. A. G%ev! el %r#or en el 3re! E en l! p!rte b!j! "el !rowser. De e#te )en5 elij! l! op i+n (ew category. D.

?D.n"ole l! p!l!br! re#erv!"! FOR. In$re#e #%# ini i!le# ( 0!$! click en accept.to"o. Ob#erve' -%e on #e$%ri"!" en el 3re! D el no)bre "el ). Lo pri)ero -%e tene)o# -%e 0! er e# "eN#ele ion!rlo 0! ien"o click en el no)bre. ??. E#te pro e"er lo po"e)o# o)p!r!r' por eje)plo' %!n"o el o)pil!"or "e P!# !l en ontr!b! l! invo ! i+n "e !l$5n pro e"i)iento -%e e#t3 "e*ini"o "e#p%. ?V. Ubi-%e el %r#or en l! p!rte in*erior "el !owser 8"on"e e# ribi+ el +"i$o9 ( pre#ione ESC' !p!re er3 %n )en5 pop-up' elij! l! op i+n accept. No#otro# on*ir)!re)o# 0! ien"o click en el no)bre "el ). Repit! el pro e"i)iento "el p!#o 8`9' on l! "i*eren i! -%e en e#te !#o Smalltalk (! no le pe"ir3 #%# ini i!le# ( no 0!( ). ?A.to"o# !%#ente# en el %erpo "e n%e#tro pro$r!)! -%e ori$inen %n )en#!je "e error.to"o -%e no e#t3 i)ple)ent!"o. El en%n i!"o "el )en5 8tr!"% i"o9 e# 6Sele tor "e# ono i"o' por *!vor on*ir)e' orrij! o !n ele7.to"o= a.# ( no#otro# p!r! !"vertirle "e e#te 0e 0o !l o)pil!"or' "e l!r3b!)o# el pro e"i)iento !nte poni.is%:to:. A ontin%! i+n en el 3re! E 8p!rte in*erior "el !rowser9 e# ribire)o# el #i$%iente +"i$o= ?C. L%e$o #e )o#tr!r3 otro )en5 pop-up -%e no# !"vierte -%e #e e#t3 invo !n"o ! %n ). Laboratorio 5 . No#otro# le 0e)o# on*ir)!"o por -%e l! ! i+n #i$%iente #er3 e# ribir e#te ). Smalltalk re#pon"er3 l! pri)er! ve: on %n! !j! "e "i!lo$o "on"e #oli it! -%e in$re#e #%# ini i!le#.ARD.to"o -%e !5n no 0! #i"o e# rito. En n%e#tro !#o Smalltalk #e 0! per !t!"o -%e #e e#t3 invo !n"o ! %n ).to"o mo-e.INF220-Fundamentos de Programación 9 A ontin%! i+n e# rib! el #i$%iente ).to"o -%e ! !b!)o# "e e# ribir #e en %entr! #ele ion!"o. Co)p!re el +"i$o on el -%e 0! e# rito' veri*i !n"o -%e no 0!(! o)iti"o nin$5n !r3 ter.

V!(! !l 3re! C en el !rowser ( 0!$! click !)!rillo #obre games 8el proto olo -%e re!)o#9. Ele$i)o# No. En el #i$%iente )en5 elij! Workspace' ( "entro "e ell! e# rib! lo #i$%iente= Laboratorio 5 .to"o# -%e 0e)o# "e*ini"o 0!#t! !0or!. Abr! el Workspace ( e# rib! en ell! l! #i$%iente l&ne!. Debi"o ! -%e 0e)o# $r!b!"o n%e#tro pro$r!)! en %n !r 0ivo #ep!r!"o= Object-games. (Object new) moveTower: 3 from: 1 to: 3 using:2 G3r-%el! ( pre#ione ESC' "el )en5 -%e !p!re e elij! l! op i+n do it ( por *in obten"re)o# l! #!li"! ! n%e#tro pro$r!)!.# en el )o)ento en -%e %#te" "e i"e retorn!r ! Smalltalk' le $%#t!r&! re %per!r el pro$r!)! -%e e# ribi+. Del )en5 onte4t%!l elij! fileOut. Si %#te" "e#e! ini i!r l! #i$%iente #e#i+n e4! t!)ente o)o #e en %entr! en e#te )o)ento' p%e"e 0! er %n snapshot ( #!lv!r el #i#te)! o)pleto en el "i# o. De#p%. Si no tiene en )ente re$re#!r !l )o)ento en -%e #e en %entr!' enton e# p%e"e# #!lir #in $r!b!r o#! !l$%n!. Del )en5 prin ip!l elij! ope(.st ( lo e# ribir3 en el "i# o' en el "ire torio "on"e 0! #i"o invo !"o Squeak' p!r! el !#o p!rti %l!r "e lo# l!bor!torio# #e $%!r"!r3 en /home/alulab/%squeak Si %#te" e#t3 !n#!"o' e#te e# %n b%en )o)ento p!r! 0! er %n break. P!r! #!lir "e Smalltalk' )%ev! el %r#o ! %n 3re! libre' 0!$! clickNrojo ( elij! quit "el )en5. C%!n"o %#te" "eje el #i#te)! Smalltalk' tiene "o# op ione# p!r! #!lv!r #% e#t!"o ! t%!l. Ojo el Transcript tiene -%e e#t!r !bierto. A no#otro# no# $%#t!r&! e# ribir %n !r 0ivo ontenien"o lo# "o# ). El #i#te)! no)br!r3 el !r 0ivo o)o Object-games. Otro pe-%eZo )en5 !p!re er3 on l! pre$%nt!= Save changes before quitting?.INF220-Fundamentos de Programación 10 A0or! e#t!)o# li#to# p!r! eje %t!r n%e#tro pro$r!)!. C*(! sal+ar nuestr! "r!$ra(a& Co)o on %!l-%ier pro$r!)!' e# i)port!nte #!lv!r #% tr!b!jo.st' ( "e#e!)o# obtener e4perien i! en tr!er "e re$re#o el !r 0ivo !l #i#te)!' e# -%e #!l"re)o# #in #!lv!r. S!l"r3 "e Smalltalk e in$re#!re)o# !l #i#te)! oper!tivo "e l! )3-%in!.

st' file!n. Laboratorio 5 . P%e"e veri*i !rlo !brien"o l! vent!n! !rowser ( on*ir)!r -%e #%# ). ]%#-%e el "ire torio ( !r 0ivo orre#pon"iente' Squeak re!i:!r3 lo orre#pon"iente.to"o# -%e e# ribi+ !nte#. L%e$o #ele ion! l! l&ne! o)plet!)ente ( elij! do it "el )en5 pop-up 8!nte# re %er"e pre#ion!r ESC9.n p%e"e ele$ir "el )en5 pri ip!l l! op i+n Tools ( "e e#te )en5 l! op i+n File &ist.to"o# #e en %entr!n !ll& % T!)bi. Si to"o v! bien Smalltalk "eber&! !r$!r lo# ).INF220-Fundamentos de Programación 11 (FileStream oldFileNamed: 'Object-game.