Está en la página 1de 10

UTNFRBAParadigmasdeProgramacinProf.

LucasSpigariolObjetosResumenClase2

ParadigmadeObjetos ResumenClase2 Temas:


Repaso Responsibilidad Delegacin Referencias Pseudovariableself GarbageCollector

Notaimportante:Serecuerdaqueelpresenteapuntenoreemplazalaasistenciaaclase. Estpensadoparaquequienasistaalaclaseposeaunayudamemoriaparaqueelseguimiento delamateriaseamssencillo. Paraampliacinrefuerzodelostemasdelacursada,existenyserecomiendanlosapuntes delCEIT,elWIKI,ylosapuntespublicadosenlaspginasdelactedra. Fuentesdelpresenteresumen: Spigariol,Lucas"ParadigmadeObjetos"ApuntedelCEIT. Apuntedeobjetos1.4 http://archivospdep.googlegroups.com/web/apunteobjetos14.doc,seccin"Apuntes" dewww.pdep.com.ar.

Repasoclasepasada
Resumenclasepasada: https://docs.google.com/document/d/1nIOI6LDpjbKj0H6JNVeMyfceJpnv5nvt5xNAABsfpe c/edit?authkey=CLrptOcE&authkey=CLrptOcE Enelparadigmadeobjetoslosrequerimientosseresuelvenentrminosdeenvode mensajesaobjetos. Todoobjetoentiendeunconjuntoacotadodemensajes,queconstituyensuinterfaz(a vecesseutilizaeltrminoprotocolo,aquevitaremosllamarloas).Lanicaformade interactuarconelobjetoesatravsdeestosmensajes,sediceentoncesquelos objetosexhibencomportamiento,lacapacidaddehaceralgo. Alenviarunmensaje,siloentiende,elobjetoreceptorevalaunmtodoparaelselector correspondiente. Todoobjetoposeeceroomsatributosqueconstituyensuestadointerno.Estenoes interesanteparalosdemsobjetos,ypermanece"oculto",encambio,loquenos interesadelobjetoessucomportamiento.Estaesunadelaspropiedades fundamentalesdelparadigma,lacualesconocidacomoencapsulamiento(ladefinicin

UTNFRBAParadigmasdeProgramacinProf.LucasSpigariolObjetosResumenClase2

exactadeencapsulamientovaraentreautores). Elestadodelobjetonopuedecambiarmsqueatravsdelenvodemensajes,sedice queloscambiosestncontrolados.

ResponsabilidadyDelegacin
DelaclasepasadaquedunejerciciosobrelagolondrinaPepitaelornitlogonossolicitun requerimientoextra:pepitaseencuentraentodomomentoenalgunaciudad(comoporejemplo, Munich,BombayoBuenosAires),ysedeseapoderpedirleanuestragolondrinaquevuele hastaotra,conelcorrespondientegastodeenerga. Lasciudadesconocensuposicinenelmapa,sedijoademsquequedaacriteriodecadauno siutilizancoordenadaslineales,planasotridimensionales. AlWS(Workspace,readetrabajo,dentrodelentornoPharodondecreamosobjetosyles enviamosmensajes)alquequeremosllegares: (recuerdenqueannosabemoscomocrearanuestrosobjetos,porloqueasumimosqueya existen) p e p i t a c i u d a d : b u e n o s A i r e s . p e p i t a e n e r g a . " > 7 5 " p e p i t a v o l a r A : m e r l o . p e p i t a e n e r g a . " > 5 "

Aproximandonosalasolucin:
SabemosquePepita,paravolaraunaciudaddebehacerdoscosas:volartantocomo kilometroshayaentrelasdosciudadesycambiarsuciudad.Enestaprimeraaproximacin asumamosquetrabajamosenunespaciolineal(comoporejemplo,enlasrutasnacionales, quetienendemarcacionesdenmerodekilmetro(distancia)respectodelCongresodeCABA) Unasolucinerrneasera: p e p i t a > > v o l a r A : c i u d a d e n e r g a : = e n e r g a ( p o s i c i o n k i l o m e t r o s c i u d a d k i l o m e t r o s ) p o s i c i n : = c i d u d a d . Algunoscomentariossobreestasolucin: 1. Queconceptoshayocultos?

UTNFRBAParadigmasdeProgramacinProf.LucasSpigariolObjetosResumenClase2

2. Apepitaleinteresalaformadecalcularladistancia? 3. Nohemoscodificadoestoyaantes? 4. Yasabamosquevolarimplicabagastartantaenergacomolacantidaddekilmetros, pero,nointeresa?. Problemas: Estoyrepitiendolgica.Lalgicadelconsumodeenergayaexista,yestabaenel mtodovola:. EstoyrompiendoelencapsulamientodebuenosAiresylaPlata,alpedirlescosas referentesasuestadointerno(loskilmetrosenruta). Estoyhaciendocosasquenosonresponsabilidaddepepita.Ellanotieneporqusaber culeselalgoritmoquecalculadistancias(pormsqueseaunaresta). Elprimerconceptoocultoeselclculodeladistanciaentrelasciudades.Paravolarentredos ciudades,aPepitanadaleimportaquelasmismasmodelensuubicacindeformalineal,sino tansolocualeslacantidaddekilmetrosquedebevolar.EnPOOdecimosalrespectoque Pepitanoesresponsabledehacerdichotrabajo,porloquedebe"delegar"esafacultad,otro conceptofundamentaldePOO. Delegar:enviarleaunobjetounmensajeparaqueresuelvaeltrabajoqueelobjeto receptordelmensajequeestsiendoevaluadonopuederesolver. Dichocoloquialmente:"pasarlelapelota"o"lavarselasmanos". EnPOO,todoeltiempolosobjetosnoresolvernlosrequerimientosdeformacompletadentro deunmtodo,sinoqueresolvernunapequeapartedelmismo,ydelgarnaotrosobjetosla responsabilidadderesolverelresto,envindolesmensajes.Lascadenasdedelegacinentre nuestrosobjetosnormalmentesernextensas,yesonoesunproblema,sinotodolocontrario: nospermitirquelosmtodosquedebamoscodificarseanbrevesysimples. Evidentemente,estacadenadedelegacinenalgnmomentofinalizarenalgnobjetoprovisto porelentorno,talvez,enoperacionesatmicasymnimas,perononosinteresan. Entonces,siemprequeunobjetonoseparesolverunproblema,deberordenarleaotro hacerlo. Enestecaso,hemosdecididoquelaciudadeslamejorcandidataaresolverelproblemadela distancia,yaqueesquienconoceelkilmetroenelqueseencuentra,porloquenuestra segundasolucinser: p e p i t a > > v o l a r A : c i u d a d e n e r g a : = e n e r g a ( p o s i c i o n d i s t a n c i a A : c i u d a d ) . p o s i c i n : = c i u d a d . Respectodelascuestiones3y4,efecitvamenteyacodificamosestoantes:setratadela

UTNFRBAParadigmasdeProgramacinProf.LucasSpigariolObjetosResumenClase2

abstraccinv o l a r : . p e p i t a > > v o l a r : d i s t a n c i a E n K i l o m e t r o s e n e r g a : = e n e r g a d i s t a n c i a E n K i l m e t r o s Sianalizanladefinicinanteriordedelegacin,nadaimpidequeelobjetoalqueseledelegauna responsabilidadseaseaelmismoqueelreceptordelmensajequeseestsiendoevaluado.Es decir,tantoelemisorcomoelrecepetordeunmensajepuedenserelmismo. Nosoloestoesposible,sinoqueesextremadamentefrecuente,cuandolaresponsabilidadde resolverunsubproblemarecaeenotromtododelmismoobjeto.Pararealizardicha delegacin,serecurrealavariableself,quesiemprereferenciaalobjetoreceptordelmensaje queseestevaluando: p e p i t a > > v o l a r A : c i u d a d s e l f v o l a r : ( p o s i c i o n d i s t a n c i a A : c i u d a d ) . s e l f c i u d a d : c i u d a d . Parapensar:Podrahaberutilizadolavariablepepitaenlugardeselfparaenviarestos mensajes?Larespuesta,masluego. Solucinfinal: p e p i t a > > v o l a r A : c i u d a d s e l f v o l a r : ( p o s i c i o n d i s t a n c i a A : c i u d a d ) . s e l f c i u d a d : c i u d a d . m u n i c h > > d i s t a n c i a A : o t r a C i u d a d ^ s e l f k i l o m e n t r o o t r a C i u d a d k i l o m e t r o osiutilizaroncoordenadasbidimensionales(conlaayudadelosobjetospuntodePharo,que entiendenelmensajed i s t ysecreanenviandoelmensaje@ aunnmero,porejemplo5 @ 2 ) : m u n i c h > > d i s t a n c i a A : o t r a C i u d a d ^ s e l f c o o r d e n a d a s d i s t : o t r a C i u d a d c o o r d e n a d a s

Parapensar:Queventajasvenenladelegacin?

Parapensar:Comoidentificaranalresponsablederesolverunproblema?

UTNFRBAParadigmasdeProgramacinProf.LucasSpigariolObjetosResumenClase2

Referencias
Losobjetossolopuedenseraccedidosatravsdesusreferencias Referencia:unidentificadorquepermiteacceder(conocer)alobjeto. Hastaahora,sinmencionarlas,hemosvistovariosformasdetenerreferencias: variablesdelworskpace parmetros atributos self literales:hola,10,$5,true,nil referenciastemporales Detodasellas,sololosatributosyvariablesdelworkspacesonasignables(esvlido colocarlarlasalaizquierdadel:=),estoes,pasaraapuntaraotroobjetos,perdiendola referenciaoriginal. Lasreferenciastienenasociadasunmbito(tambinllamadoalcanceoscope),queesla porcindecdigodndeesvlidoreferenciarlas,yportanto,enelcualelobjetoencuestin puedeseraccedido. Elmbitodelasvariablesdelworkspacenotienemisterios:dichasreferenciasson vlidasmientrasseestdentrodelWS,yenningnotrolugar. Losparmetrossolosonreferenciablesdentrodelcontextodelmtodo Losatributossonreferenciablesdentrodelobjetoquelosposee Elmbitodeselfesencualquiermtododelobjeto.Encadaobjeto,selfapuntaraun objetodistinto(elreceptordelmtodo). Losliteralespuedenserreferidosencualquierparte.Nadanosgarantizaquelosobjetos alosquerefiereyaexistandesdeantes,oqueseancreadosenesemomento,perono nosinteresa. Lasreferenciastemporalessonaquellasqueobtenemosapartirdelretornodeun mensaje,peroalasqueannohemosasignadoaunavariable.Sonannimasysolo sonvlidasenelcontextodelenvodelmensaje.

Parapensar:Entiendenahoraporqunopuedoutilizarlareferenciapepitadentrodelobjeto pepita,perosidentrodelWS? Aunobjetopuedeexistirmltiplesreferencias,yenviarleunmensajeutilizandoalgunadeellas

UTNFRBAParadigmasdeProgramacinProf.LucasSpigariolObjetosResumenClase2

eslomismoquehacerlodesdeotra,ysielestadodelobjetocambia,esecambioesvisible paratodos. Porejemplo,unaabueladeunalumno/atieneunatributoquereferenciaasunieto/a,ytambin sunovio/atendrunatributoquereferenciaasupareja.Silaabuelaledadecomer,supareja verqueengorda. Osirealizaalgndeporteyseesguinza,suempleadorperderdineroporquenopuede trabajar.

Parapensar:Cuantasycualesreferenciaspuedencontaralobjetototo?

Unavezquetodaslasreferenciasaunobjetosehanperdido,elobjetosevuelveinaccesibley yanoesposibleenviarlemensajes. PharoSmalltalkestconstruidosobreunamquinavirtual,ycuandoestasituacindeperdida detodareferenciaseda,uncomponentedelaVMconocidocomoGarbageCollectorse encargadedestruirelobjeto,liberandomemoria(s,despusdetodo,loobjetosvivenenla memoria,perononosinteresaenPDP).

Tarea
Detareaquedaelsiguienteejercicioparaencarar: ElmdiconutricionistadeTotohanotadoqueasupacienteeselnietopredilectodesuabuela, queloalimentaconcomidasgrasosas(leaportangrasa).Porotrolado,tambinhanotadoque sunovia,preocupadoporsusalud,loalimentaconcomidasvitamnicas(leaportanvitaminas). SabemosquecadavezqueTotoingierevitaminas,suniveldevitaminasensangreaumentaen 1unidadporcadavitaminaingerida,ycadavezqueingieregrasas,supesoaumentatanto comoel10%delacantidaddegrasas. Adems,tambinsumdiconotqueTotohaceejercicio,yque,porejemplo,cuandocorreen bicicleta,supesodisminuyeun2%,yquecuandocorreencinta,susvitaminasensangre disminuyenen10unidades. Entonces,queremossabersitotoestsaludable(sitienealmenos20unidadesdevitaminas

UTNFRBAParadigmasdeProgramacinProf.LucasSpigariolObjetosResumenClase2

ensangre),ysiestgordo,(sipesamsde80kg) WSdereferenca(astoesaloquequeremosllegar)(estincompleto) a b u e l a D e T o t o a l i m e n t a r N i e t o P r e d i l e c t o . n o v i a D e T o t o a l i m e n t a r N o v i o . t o t o e s t a G o r d o . t o t o e s t a S a l u d a b l e . t o t o h a c e r E j e r c i c i o : b i c i c l e t a . t o t o h a c e r E j e r c i c i o : c i n t a . t o t o e s t a G o r d o . > p o r e j e m p l o , t r u e t o t o e s t a S a l u d a b l e . > p o r e j e m p l o , f a l s e

Notas: Identifiquenlosobjetosysusresponsabilidades. PiensencomohacerqueabuelaDeTotoynoviaDeTotoconozcanatoto. Deleguen. Tienentodosloselementosnecesariospararesolverelproblema. Hayvariasformasderesolverelproblema.Laprximaclaseveremosunadeellas. Inventenotrostiposdeejerciciosquetotopuedehacer(ademsdebicicletaycinta). Elmdiconofuemuyclaroalespecificarcomoescomidavitamnicaycomouna grasosa.Quedaasucriteriodefiniresto.Piensencomomodelareseaspectodel problemaenlossiguienteposiblesdoscasos: Comerunacomidavitamnicaaporta10vitaminas,ycomerunagrasosaaporta 40unidadesdegrasa Idemanterior,perolaabuelasabecuantagrasaaportalacomidaqueledaasu nietopreferido.

Solucin

WS
a b u e l a D e T o t o n i e t o P r e d i l e c t o : t o t o . n o v i a D e T o t o n o v i o : t o t o .

UTNFRBAParadigmasdeProgramacinProf.LucasSpigariolObjetosResumenClase2

a b u e l a D e T o t o a l i m e n t a r N i e t o P r e d i l e c t o . n o v i a D e T o t o a l i m e n t a r N o v i o . t o t o e s t a G o r d o . t o t o e s t a S a l u d a b l e . t o t o h a c e r E j e r c i c i o : b i c i c l e t a . t o t o h a c e r E j e r c i c i o : c i n t a . t o t o e s t a G o r d o . > p o r e j e m p l o , t r u e t o t o e s t a S a l u d a b l e . > p o r e j e m p l o , f a l s e

Codificacin
a b u e l a D e T o t o > > a l i m e n t a r N i e t o P r e d i l e c t o n i e t o P r e d i l e c t o a l i m e n t a r C o n G r a s a s : 4 0 a b u e l a D e T o t o > > n i e t o P r e d i l e c t o : u n N i e t o P r e d i l e c t o n i e t o P r e d i l e c t o : = u n N i e t o P r e d i l e c t o n o v i a D e T o t o > > a l i m e n t a r N o v i o n o v i o a l i m e n t a r C o n V i t a m i n a s : 1 0 n o v i a D e T o t o > > n o v i o : u n N o v i o n o v i o : = u n N o v i o t o t o > > a l i m e n t a r C o n G r a s a s : u n a C a n t i d a d G r a s a s p e s o : = p e s o + ( 0 . 1 * u n a C a n t i d a d G r a s a s ) t o t o > > a l i m e n t a r C o n V i t a m i n a s : u n a C a n t i d a d V i t a m i n a s v i t a m i n a s E n S a n g r e : = v i t a m i n a s E n S a n g r e + u n a C a n t i d a d V i t a m i n a s t o t o > > h a c e r E j e r c i c i o : u n E j e r c i c i o u n E j e r c i c i o d e s g a s t a r F i s i c a m e n t e A : s e l f b i c i c l e t a > > d e s g a s t a r F i s i c a m e n t e A : u n D e p o r t i s t a u n D e p o r t i s t a d i s m i n u i r P e s o P o r c e n t u a l : 0 . 2 c i n t a > > d e s g a s t a r F i s i c a m e n t e A : u n D e p o r t i s t a u n D e p o r t i s t a d i s m i n u i r V i t a m i n a s E n S a n g r e : 1 0 t o t o > > d i s m i n u i r V i t a m i n a s E n S a n g r e : u n a C a n t i d a d D e V i t a m i n a s

UTNFRBAParadigmasdeProgramacinProf.LucasSpigariolObjetosResumenClase2

v i t a m i n a s E n S a n g r e : = v i t a m i n a s E n S a n g r e u n a C a n t i d a d D e V i t a m i n a s t o t o > > d i s m i n u i r P e s o P o r c e n t u a l : u n P o r c e n t a j e p e s o : = p e s o * ( 1 0 . 0 2 ) t o t o > > e s t a G o r d o ^ p e s o > 8 0 t o t o > > e s t a S a l u d a b l e ^ v i t a m i n a s E n S a n g r e > 2 0

Variantes: lacantidaddegrasaqueaportalacomidadelaabuelaesunatributo. Existeunobjetocomidaconatributosquerepresentancuantagrasayvitaminasaporta, totoseencargasealimentarseconsusgrasasyvitaminas Existenobjetosquerepresentanalascomidasgrasosasyalasvitaminicas,que implementanelmensajealimentarA:enelcualcadaunadeellasaportaciertacantidad degrasasy/ovitaminasy/oloquesea. Sedestacadelasolucinlosiguiente: Enelworkspace,aparecaquetotopodahacerdosejerciciosdistintos: t o t o h a c e r E j e r c i c i o : b i c i c l e t a . t o t o h a c e r E j e r c i c i o : c i n t a . Sinembargo,totousaesosejerciciosdeunanicamanera: t o t o > > h a c e r E j e r c i c i o : u n E j e r c i c i o u n E j e r c i c i o d e s g a s t a r F i s i c a m e n t e A : s e l f Esimportantedestacarquelosejerciciospuedenserdistintos,peroatotonoleimportaque seandistintos,mientraspuedanresponderalmensajedesgastarFisicamenteA:. Sediceentoncesquebicicletaycintasonpolimrficosparatoto,conrespectoalmensaje desgastarFsicamenteA:. Ymsgeneralmente,decimosque: Dosomsobjetospotencialmentedistintossonpolimrficoscuandopuedenserusados porunterceroindistintamente. Yseaclaraqueatotoenstecaso,leinteresaquelosejerciciosentiendanunmensaje,pero puedepasarqueleintereseuncomportamientomsextenso(podranecesitarqueentiendan

UTNFRBAParadigmasdeProgramacinProf.LucasSpigariolObjetosResumenClase2

msmensajes).