Sei sulla pagina 1di 9

IIEInstitutodeIngenieraElctrica. DesaSoftDesarrollodeSoftwareparaIngenieraElctrica. Guasdeclase.ParteII:IngenieradeSoftware.

Asignacin de responsabilidades: Patrones de Diseo.


ndice de contenido
Asignacinderesponsabilidades: PatronesdeDiseo...........................................................................................................................1 Responsabilidad......................................................................................................................1 Asignacinderesponsabilidades.............................................................................................1 Patrones..................................................................................................................................2 PatrnExperto.........................................................................................................................2 PatrnCreador........................................................................................................................4 PatrnBajoAcoplamiento.......................................................................................................4 PatrnAltaCohesin...............................................................................................................6 PatrnControlador..................................................................................................................7 Realizacindeloscasosdeuso...............................................................................................8 Referenciasylecturasrecomendadas.......................................................................................9 Lecturasrecomendadas..................................................................................................9 Referencias.....................................................................................................................9

Responsabilidad.
Juntoconlaeleccindeclasesconceptualesporvadelaabstraccin,laasignacinde responsabilidadeseslahabilidadmscrticaenelanlisisydiseodelsoftware. EnUMLsedefineunaresponsabilidadcomouncontratouobligacinasumidasporunobjeto comopartedesucomportamiento.Lasresponsabilidadessondedostiposbsicos: responsabilidad"hacer"deunobjeto; haceralgoelobjetomismo,comorealizarunclculo,crearotroobjetooestableceruna asociacinconotroobjeto. iniciarunaaccinenotroobjeto. controlarocoordinaraccionesenotrosobjetos. responsabilidad"conocer"deunobjeto: conocersusdatosencapsulados(atributosprivados). conocerotrosobjetosrelacionadosconl. conocercosasquepuedederivarocalcular. Lasresponsabilidadesseimplementanatravsdemtodos.Losmtodospuedenactuarsoloso requerirlacolaboracindeotrosmtodosdelmismouotrosobjetos.Losdiagramasdeinteraccin muestranlasresponsabilidadesdelosobjetos;alcrearlosdiagramasdeinteraccinseest asignandoresponsabilidadesalosobjetosincluidoseneldiagrama.

Asignacin de responsabilidades.
Lasresponsabilidadesaasignarsurgendelosdiagramasdeinteraccin:losmensajesalos objetosimplicanasignacinderesponsabilidadaesosobjetos,quedeberncumplirconlopedido enelmensaje.SiyaexisteunDiagramadeClasesdeDiseo,sebuscaenlparadeterminarlao lasclasesquedeberntenerasignadasresponsabilidadesparacumplirconlatarea.Sinoaparece
1de9

allnadaapropiado,osirecincomienzaeldiseoysetieneundiagramadeclasesmnimo, recurriralModelodeDominio,creando,siesnecesario,nuevasclasesenelDiagramadeClasesde Diseo.Recordemosunavezmsqueelprocesodecreacindelosdiagramasesdevaivn,seva completandoalgodeuno,luegoalgodeotro,enlamedidaenquesevaarmandolasolucin, cuidandodemantenerlacoherenciaentrelosdiferentesdiagramas.

Patrones.
Losaosdeprcticaeneldesarrollodesoftwarehanmostradolaexistenciadeproblemas tpicosquesedanunayotravezendiferentessituaciones.Elensayodediversassolucionesaestos problemastpicoshallevadoaestablecersolucionesquesehanvueltotambintpicasporsu probadaconfiabilidad.Asimismoaparecenprincipiosgenerales,estilosoguasquehanprobadoser tileseneldesarrollo.Cuandoseescribendemaneraestructuradaysereneunconjuntodeestos principios,problemasysoluciones,selesllamapatronesdediseoosimplementepatrones. Unpatrnesunaparejaproblema/solucin,designadaporunnombre,escritaenforma estructurada,aplicableenunnuevocontextoenelcualsereconoceelmismoproblema;elpatrn incluyerecomendacionesparasuempleo,unadiscusinsobresualcance,limitacionesyuso;puede tambinincluirejemplos. Lospatronesrenenconocimientoexistente,nocreannadanuevo;estoconstituyesuprincipal virtud,registranunasolucinprobada,vlidayefectivaparaunproblemacorriente.Unpatrn recogelaexperienciademuchosdesarrolladoresalolargodeaosenlabsquedadesolucinaun problemadeaparicinreiterada. Ejemplosimplificadodeunpatrn: Nombre:ExpertoenInformacin. Problema:Culeselprincipiobsicoparaasignarresponsabilidadesalosobjetos? Solucin:Asignarunaresponsabilidadalaclasequetienelainformacinnecesariapara cumplirla. Lossiguientespatronesconstituyenprincipiosgeneralesparalaasignacinde responsabilidades: Expertoeninformacin. Creador. Altacohesin. Bajoacoplamiento. Controlador.

Patrn Experto.
Nombre:ExpertoenInformacin(oExperto). Problema:Culeselprincipiobsicoparaasignarresponsabilidadesalosobjetos? Solucin:Asignarunaresponsabilidadalaclasequetienelainformacinnecesariapara cumplirla.Estaclaseesel"expertoeninformacin". Ejemplo.Supermercado.Aquclasedeberaasignarselaresponsabilidaddeconocereltotal deunaventa?SiguiendoelpatrnExpertodebebuscarseaquellaclasequetienelainformacin necesariaparacalcularestetotal,oquemsfcilmentepuedeaccederaella. laclaseVentanotieneconocimientodirectodeltotaldelaventa,perosdelasclases LineaDeVentaquelacomponen. laclaseLineaDeVentaconocelacantidad,aunquenoelprecio,peroconocela EspecificacionDeProductoasociadaaesalneadeventa,dondesestelprecio. laEspecificacionDeProductoconocetodoloreferentealartculoconsignadoenla LineaDeVenta. Enconsecuencia,laresponsabilidaddeobtenereltotaldeunaventaimplicalasiguiente
2de9

asignacinderesponsabilidades: laEspecificacionDeProductodebeconocerelpreciodelartculo. laLineaDeVentadebeconocerelmontodelalneadeventa(cantidad*precio). laVentadebeconocereltotaldelaventa(sumademontosdetodaslaslneasdeventa componentes). Elempleodelpatrnexpertohaasignadoresponsabilidadesalastresclases. Discusin:elcumplimientodeunaresponsabilidadrequieremuchasvecesinformacindispersa enotrasclasesdeobjetos;existenexpertoseninformacinparcialquedeberncolaborarenla tarea.Estacolaboracingeneraunintercambiodemensajesentrelosobjetosinvolucrados. Contraindicaciones:nosiemprelasolucindelpatrnExpertoeslamsconveniente;la aplicacindelpatrnExpertopuedeviolarotrospatronescomolosdeacoplamientoycohesin (vermsadelante),mezclandofuncionesdisparesoduplicandofunciones.Estosproblemasse atenanrespetandoelprincipiodediseoarquitectnicodemantenerseparadoslosaspectos bsicosdelsistema:lalgicadelaaplicacin,elmanejodelabasededatos,lainterfazgrficade usuario,lascomunicaciones...sonreasnaturalesconsuspropiasespecializacionesqueno convienemezclar. Beneficios: semantieneelencapsulamientodelainformacin:losobjetosusanantesquenadasupropia informacin. sedistribuyeelcomportamientosloentreclasesquecontienenalgodelainformacin requerida.

Clasesdelanlisis(conceptuales).

Clasesdeldiseo(clasesdesoftware).

Asignacinderesponsabilidadesymodificacindediagramas.

3de9

Patrn Creador.
Nombre:Creador. Problema:Quindebeserresponsabledelacreacindeunanuevainstanciadeunaclase(un nuevoobjeto)? Solucin:asignaralaclaseBlaresponsabilidaddecrearunainstanciadelaclaseAsise cumpleunaomsdelascondicionessiguientes: BagregaobjetosdeclaseA(esunaagregacindeobjetosdeclaseA). BcontieneobjetosdeclaseA. BregistraobjetosdeclaseA. BusaestrechamenteobjetosdeclaseA. BtienelosdatosdeinicializacinnecesariosparaconstruirunobjetodeclaseA. SisecumpleunaomsdeestascondicionesBesunCreadordeA.Lascondicionesdemayor relevanciasonladeagregacin(BagregaobjetosdeclaseA)yladecontenido(Bcontieneobjetos declaseA). Ejemplo.Supermercado.QuclasedeberacrearobjetosdelaclaseLineaDeVenta?Laclase VentaagregaobjetosLineaDeVenta,porpatrnCreadorlasLineaDeVentadebensercreadaspor Venta.Anlogamente,porpatrnCreador,losobjetosEspecificacionDeProductodebensercreados porCatalogo. Discusin:elpatrnCreadorsugierequeunaclasecontenedora,ounaclasederegistro,son buenascandidatasparaasignarlaresponsabilidaddecreacindelosobjetosquecontieneo registra. Contraindicaciones:cuandolacreacindeunobjetoesmuycomplicadaconvienedelegarla creacinaunaclaseauxiliardenominadaFactoraenlugardeusardirectamentelosugeridoporel patrnCreador.FactoraesunpatrnpropuestoenellibroDesignPatterns[Gamma1995],que popularizelusodepatrones. Beneficios:tiendeamantenerunbajoacoplamiento,unamnimadependenciadeotrasclases clases.

AplicacindelpatrnCreadorparaasignacinderesponsabilidadenlacreacindeunaLineaDeVenta.

Patrn Bajo Acoplamiento.


Problema:Cmodisearparaobtenerbajadependenciaentreclases,poderrealizarcambios conmnimoimpacto,eincrementarlareutilizacin?Enotraspalabras,cmodisearconbajo
4de9

acoplamiento? Elacoplamientoesunamedidadeladependenciaquetieneunelementorespectoaotros.Siun elementodependefuertementedeotrostienealtoacoplamiento,sidependepocoonada,el acoplamientoesbajo.Esdeseableunacoplamientobajo,porquelimitalacantidaddeotros elementosquehayquetocaralhaceruncambio,favorecelareutilizacindelelementoenotras situaciones,facilitalacomprensinymantienetodoeldiseomejorseparado,conundiseoms modular. Elbajoacoplamientoesunprincipiodediseo;nopuedeconsiderarseindependientementede otrosprincipioscomoeldeAltaCohesinopatronescomoelExperto.Comoprincipio,debe tenersepresentealencarareldiseo. Solucin:asignarunaresponsabilidadintentandomantenerunacoplamientobajo. Ejemplo.Supermercado.ConsideremoslasclasesSesin,VentayPago.Lasventasserealizan duranteunasesindelacaja,lasventasquedanregistradasenlasesin,hayunaasociacin1 0..ndeSesionaVenta.QuindebecrearPago?ComoSesionregistratodalasventas,elpatrn CreadorpodrasugerirquelacreacindePagofuerahechaporSesion,yluegodebeasociarsePago aVenta.EstasolucinacoplalaclaseSesionconlaclasePago,SesiondebeconocerPago.Una solucinalternativaesconfiarlacreacindePagoaVenta.Enestecaso,Sesionmantiene acoplamientosloconVenta,yVentaconPago.LacreacindePagonoincrementael acoplamientodeSesion,quepodrareusarseparamanejarotrostiposdesesinquenorequieran pagos;encambio,todaventarequiereunpago! Discusin:elbajoacoplamientoesunprincipioevaluativo,nosugieredirectamenteuna asignacinderesponsabilidad,sinoqueofreceunaguaparaevaluardiferentesalternativasenla asignacinderesponsabilidades.Debetenerseencuentaentodoeldiseo. Unasubclasetieneunfuerteacoplamientoconsusuperclase.Laconsideracindeherenciadebe estarbienjustificadaporlaabstraccindecaractersticasocomportamientocomunesparala creacindeunasuperclase. Laexageracindelbajoacoplamientollevaaundiseoprcticamenteinconexoconobjetos sobresaturados,dondecadaunodebehacermuchascosasparanodependerdelosotros,cosasque puedennoserrelevantesparasufuncin;haceaparecertambinotrosobjetosmuypasivos,como serrepositoriosdedatosquenohacenprcticamentenada.Elacoplamientoensnoesun problema,elproblemaeselaltoacoplamiento;unciertogradodeacoplamientoesnecesariopara obtenerundiseoequilibrado. Contraindicaciones:nodaproblemaselaltoacoplamientoentreelementosestablesy generalizados,comolasbibliotecas;noesproblema,enunprogramaJava,dependerdelasclases contenidasenlasbibliotecasdeJava. Beneficios: puedecambiarseuncomponentesininvolucrarotros. elcomponenteesentendiblepors. elcomponentepuedereutilizarseporssoloenotrosdiseos.

Altoacoplamiento,bajacohesin:peor.

Bajoacoplamiento,altacohesin:mejor.

5de9

Patrn Alta Cohesin.


Problema:Cmodisearparamantenerlasclaseslimitadasarealizartareasfuncionalmente relacionadasentres,entornoauninterscomn,paralograrunbuenmanejodelacomplejidad delproblematotal?Enotraspalabras,cmodisearconaltacohesin? Lacohesinesunamedidadelrelacionamientointernodelasresponsabilidadesdeunelemento, desupertenenciaaunamismareadeinters.Unelementoconpocasresponsabilidades,todas relacionadasentres,tienealtacohesin.Unaclaseconbajacohesinrealizamuchastareasmuy diversas,unagrancantidaddecosas,tareasquetienenpocoqueverentres.Lasclasesconbaja cohesinsonpropensasapadecerdiversosproblemas: sondifcilesdeentenderydifcilesdemantener,tiendenasergrandes. sondifcilesdereutilizarenotrosdiseos. estnafectadasconstantementeporloscambios,porquehacendemasiado. Lasclasesconbajacohesinhanrecibidoexcesivasresponsabilidades,responsabilidadesque deberanhaberrecadosobreotroselementos;resultantambindeunaabstraccinpobre,donde nosehandiferenciadosuficientesreasonivelesdeabstraccin. Laaltacohesinesunprincipiodediseo;nopuedeconsiderarseindependientementedeotros principioscomoeldebajoacoplamientoopatronescomoelExperto.Comoprincipio,debetenerse presentealencarareldiseo. Obsrvesequelacohesinesunapropiedadinternadeunelemento,nomirafueradelpropio elemento,entantoelacoplamientoesunapropiedadexternaaunelemento,sefijaensu relacionamientoconotroselementosynoensuinterior. Solucin:asignarresponsabilidadesaunelementointentandomantenersucohesinalta. Ejemplo.Supermercado.ElmismoejemplodeSesion,VentayPagoilustralacohesin.Asignar aSesionlacreacindePagobajasucohesin,loobligaahacerunatareapocorelacionadaconsu objetivoespecficodemantenerregistrodelasventas;seleagregaunatareadeunreaquenole esfuncionalmenteafn.LasolucinalternativadeconfiarlacreacindePagoaVentamantienela cohesindeSesionalta,ytambinmantienealtalacohesindeVenta;esfuncionalmenteafnala ventamanejarelpago. Discusin:laaltacohesin,aligualqueelbajoacoplamiento,esunprincipioevaluativo,no sugieredirectamenteunaasignacinderesponsabilidad,sinoqueofreceunaguaparaevaluar diferentesalternativasenlaasignacinderesponsabilidades.Debetenerseencuentaentodoel diseo. Criterioprctico:unaclaseconaltacohesincontieneunnmerolimitadodemtodos,todos realizandooperacionesrelativasaunamismareadeintersotareageneral;norealiza demasiadascosas,msbiencolaboraconotrasclasesparalarealizacindetareascomplejas. Contraindicaciones: Algunastareasdeexcesivaespecializacincomoelaccesoabasededatospuederequerirla creacindeunaclaseconmultiplicidaddetareasrelativasalabasededatos,cosaquepuede involucrarunnmeroconsiderabledemtodos.Enestecaso,unaclaseespecializadaen accesoabasededatospuedeestarjustificada;serapocoprcticorepartirelmanejodela basededatosportodaslasclasesquedebeninsertar,modificaroconsultarlabasededatos. Concentrandolasfuncionesdebasededatosenunaclaseespecialpermitealos administradoresdebasesdedatostenertodassusherramientasconcentradasenestaclase "interfaz";lasotrasclasesinvocanlosmtodosdelaclaseinterfaz,quienasuvezsecomunica conlabasededatos. Otroejemplosonlossistemasdistribuidos,enlosqueparaminimizarlacomunicacinun elementorealizamsdeloquedebiera;enestoscasoslaviolacin(mesurada)delprincipio dealtacohesinpuedeaparecerjustificada. Beneficios: eldiseoesmsclaroyfcildeentender. loscambiosserealizanmsfcilmente.
6de9

frecuentementellevaaunmenoracoplamiento. aumentalaposibilidaddereutilizacindelelemento,porelaltorelacionamientofuncionalde lastareasrealizadas.

Patrn Controlador.
Nombre:Controlador. Problema:Cmoasignarresponsabilidadesparamanejareficientementeloseventosde entradaalsistema? Uneventodeentradaalsistemaoeventodelsistemaesunaaccindesatadaporunactorexterno. Eleventodelsistemaestratadoorespondidoporunaoperacindelsistema.Larelacinesla mismaqueentremensajeymtodo:elmensajedesencadenalaaccindelmtodo;dichodeotro modo,elmensajeinvocaalmtodo. Solucin:asignarlaresponsabilidadderecibiromanejarunmensajeeventodeentradadel sistemaaunaclasequerepresentaalgunadeestasopciones: controladordefachada:representaalsistemaglobal,dispositivoosubsistema. controladordesesinodecasodeuso:representaunescenariodecasodeusoenelquetiene lugareleventodeentradadelsistema.Sesuelellamaraestasclasesconelnombredelcaso deusoadjuntoaunadelaspalabrasManejador,Gestor,Coordinador,Sesion. Unasesinesunainstanciadeintercambiodemensajesconunactor.Lassesionespuedentener duracinvariable,perofrecuentementeestnvinculadasauncasodeuso.Otracaractersticade lassesionesesquesuelenteneruninicioyunfinal,conoperacionespropiasdelinicioy operacionespropiasdelfinal. SellamaControladoraunobjetoresponsablederecibiromanejareventosdelsistema.El Controladordisponedeunoovariosmtodosparaatenderunoovarioseventosdelsistema.El Controladornopertenecealainterfazdeusuario;esalgoascomounintermediarioentrela interfazdeusuarioyelncleodeclasesdonderesidelalgicadelaaplicacin. Lasclasesdemanejogrficodelaventanaenlainterfazdeusuarionodeberantratarningn eventodelsistema,slorecibirlos;sunicafuncinesmostrarorecibirlasaccionesdelusuarioe inmediatamentetransferirlaactuacinrelativaaleventohaciaunaclasecontroladorpropiadela aplicacin.Estodiferenciaclaramentedoscapasdesoftware:lainterfazdeusuarioylacapade dominiodelaaplicacin. Ejemplo.Supermercado.UnabuenaclasecandidataaControladoreslaclaseSesin.Estaclase puederesponderaeventosdelsistemamediantemtodostalescomocrearNuevaVenta(), ingresarArticulo(),recibirPago(),enloscualesnorealizalastareasporsmismasinoquecreao invocamtodosdeotrasclases,quesonlasquerealizanefectivamenteeltrabajo. Discusin.ElControladornorealizamuchotrabajoporsmismo;msbiencoordinala actividaddeotrosobjetos.Recibeloseventosdelsistema,peronolostrata,losderivahaciaotros objetos. Uncontroladordefachadarepresentaalsistemacompleto,posiblementeconelnombredel sistema,dispositivoosubsistemaqueseestconstruyendo.Sontilescuandonohaymuchos eventosdelsistema,ocomoinicioparainvocarcontroladoresdecasosdeuso. Cuandoseempleauncontroladordecasodeuso,existeuncontroladorparacadacasodeuso,o paracadaescenariodecasodeuso.Uncontroladordecasodeusonoesunobjetodeldominio, sinounaconstruccinartificialparaatenderloseventosdelsistemapropiosdeunciertocasode usoounainstanciadecasodeuso. Beneficios: aumentalaposibilidaddereusodelalgicadelaaplicacin,quepermaneceindependiente delainterfazdeusuario. aumentalaposibilidaddeemplearinterfacesdeusuarioenchufables("plugins"),cambiando lainterfazdeusuariosintocarlalgicadelaaplicacin. aseguralasecuenciacorrectadeoperacionescuandoesnecesario.Enmuchasoportunidades noesposiblecontinuarsinosevancumpliendodiferentescondiciones,oesprecisocambiar elcursodeoperacinsegnelresultadodeoperacionesprevias.Estatrazadeoperaciones
7de9

realizadasycondicionescumplidasdebeconocerlaymanejarlaalguien;elControladoresel candidatopreferido. Contraindicaciones:nocrearunControladorporques,debendarsecondicionesquelo requieran. Uncontroladormaldiseadotendrbajacohesin,asumedemasiadasresponsabilidadesoest muydiversificado,esuncontroladorsaturado.Noesimprescindiblequehayaunnico Controlador,puedencrearselosnecesariosparacontemplarlosprincipiosdebuendiseo.

UsodeuncontroladorGestorSistemaparainiciarunasesinenunsistema:muestraunapantalla debienvenida(IFPortada),validaalusuario,determinasiesadministradorydespliegaelmen correspondiente(IFMenuUsuariooIFMenuAdmin).GestorUsuariosesotrocontroladorpara funcionalidadesrelativasalosusuarios.

Realizacin de los casos de uso.


Larealizacindeuncasodeusodescribecmoseconstruyeelcasodeusoenelmodelode diseo,entrminosdelosobjetosintervinientesysusrelaciones.Recordemoslasecuenciade trabajoconlosartefactosUML: elestudiodelcasodeusopermitedescubrirloseventosdelsistema;estossemuestran explcitamenteeneldiagramadesecuenciadelsistema. siseconsideranecesario,puededescribirseeltratamientodeloseventosdelsistema medianteelcontratodeoperacin,dondesedetallanloscambiosdeestadoproducidosporel eventoencuestin(precondicionesypostcondiciones). loseventosdelsistemarepresentanlosmensajesqueinicianlosdiagramasdeinteraccin;se construyeundiagramadeinteraccinporcadaeventodelsistema,enelcualsedetallatodo elintercambiodemensajesentreobjetosnecesarioparacumplirlatarearequerida;estos
8de9

diagramasdeinteraccinsonlarealizacindeloscasosdeuso,muestranlaformacomoseda cumplimientoalosrequerimientosimplcitosenelcasodeuso. losobjetosdescritosenlosdiagramasdeinteraccinseinspiranenlosnombresdelasclases conceptualeshalladasenelmodelodeldominio,peroduranteeltrabajodediseoespreciso incorporarnuevasclasesconceptuales(clasesdeanlisis)ytambinclasesdediseo(clases desoftware)ajenasporcompletoalmodelodedominio,necesariasparaeldiseo. lospatronesdediseoconstituyenguasparalaasignacinderesponsabilidadesalasclases existentes,ytambinparadecidirlacreacindenuevasclases,tantoconceptualescomode diseo.

Referencias y lecturas recomendadas.


Elcontenidodeestedocumentoestbasadoenlasfuentescitadasacontinuacin,cuyalecturao consultanopretendensustituir.

Lecturas recomendadas.

[Larman2003]Larman,Craig.UMLypatrones.Unaintroduccinalanlisisydiseo orientadoaobjetosyalProcesoUnificado,2a.edicin.Madrid,2003. ISBN8420534382. [Fowler1997]Fowler,MartinyScott,Kendall.UMLdistilled.ApplyingtheStandardObject ModellingLanguage.AddisonWesleyLongman,Inc.,1997.ISBN0201325632. [Pfleeger2002]PFLEEGER,SHARILAWRENCE.Ingenieradesoftware,teorayprctica, 1a.edicin.BuenosAires,Pearsoneducacin,2002.ISBN:9879460715.

Referencias.

[Jacobson2000]Jacobson,Ivar;Booch,Grady;Rumbaugh,James.Elprocesounificadode desarrollodesoftware.PearsonEducacin,Madrid,2000.ISBN:8478290362. [Booch1999]Booch,Grady;Jacobson,Ivar;Rumbaugh,James.Ellenguajeunificadode modelado.PearsonEducacin,Madrid,2000.ISBN:8478290281.

Errores,omisiones,comentarios:VctorGonzlezBarbone,vagonbarenfing.edu.uy DesarrollodeSoftwareparaIngenieraElctricaRev.20090512 InstitutodeIngenieraElctrica FacultaddeIngeniera UniversidaddelaRepblica,Uruguay.

9de9

Potrebbero piacerti anche