Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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.
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 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
Lecturas recomendadas.
Referencias.
9de9