Patrones de Diseño Orientados a Objetos

download Patrones de Diseño Orientados a Objetos

of 13

Transcript of Patrones de Diseño Orientados a Objetos

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    1/13

    “AÑO DE LA INVERSIÓN PARA ELDESARROLLO RURAL Y LA SEGURIDAD

    ALIMENTARIA”

    FACULTAD DE INGENIERÍA,ARQUITECTURA Y URBANISMO

    “TENDENCIAS ORGANIZACIONALES” 

    CURSO:

    INGENIERIA DE SOFTWARE II

    ESCUELA:

    INGENIERÍA DE SISTEMAS

    INTEGRANTES:

    CHUNGA ZULUETA JORGE LUIS

     

    HUAMAN VILLANUEVA BRAYAN

     

    LOPEZ YOVERA ARMANDO

     

    ORTIZ MATUTE MEGAN ASHLEY

    CICLO:

    VI

    DOCENTE:

    DENY FUENTES

    2014

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    2/13

    Patrones de diseño orientados a objetos

    I. Fundamentos Básicos

      Conceptos:

    a) Patrón: “un patrón es una regla con tres partes que expresa la relaciónentre un determinado contexto, un problema y una solución”

    b) Patrón de diseño: Provee un esquema para refinar los subsistemas ocomponentes de un sistema de software!stos se abocan a un elemento espec"fico del diseño, como unagrupamiento de componentes, a fin de resolver alg#n problema de diseño,relaciones entre los elementos de una p$gina, o mecanismos para efectuar la comunicación entre componentes

    •Aplicaciones en el Desarrollo del Software:

     %dem$s de su aplicación directa en la construcción de software en general, y

    derivado precisamente del gran &xito que 'an tenido, los patrones de diseño

    'an sido aplicados a m#ltiples $mbitos concretos produci&ndose (lenguaes de

    patrones( y extensos (cat$logos( de la mano de diversos autores

    *n particular son notorios los esfuer+os en los siguientes $mbitos:

    a Patrones de interfaces de usuario, esto es, aquellos que intentan definir las

    meores formas de construir interfaces 'ombrem$quina -v&ase .nteracción

    personacomputador , .nterfa+ gr$fica de usuario)

    b Patrones para la construcción de sistemas empresariales, en donde se

    requieren especiales esfuer+os en infraestructuras de software y un nivel de

    abstracción importante para maximi+ar factores como la escalabilidad o el

    mantenimiento del sistema

    c Patrones para la integración de sistemas -v&ase .ntegración de aplicaciones

    empresariales), es decir, para la intercomunicación y coordinación de

    sistemas 'eterog&neos

    d Patrones de fluos de trabao, esto es para la definición, construcción e

    integración de sistemas abstractos de gestión de fluos de trabao y procesos

    con sistemas empresariales /&ase tambi&n 0P1

    II. bjeti!os de los Patrones de Diseño

    2os patrones de diseño pretenden:

    a) Proporcionar cat$logos de elementos reusables en el diseño desistemas software

    b) *vitar la reiteración en la b#squeda de soluciones a problemas yaconocidos y solucionados anteriormente

    c) 3ormali+ar un vocabulario com#n entre diseñadoresd) *standari+ar el modo en que se reali+a el diseño

    http://es.wikipedia.org/wiki/Interfaz_de_usuariohttp://es.wikipedia.org/wiki/Interacci%C3%B3n_persona-computadorhttp://es.wikipedia.org/wiki/Interacci%C3%B3n_persona-computadorhttp://es.wikipedia.org/wiki/Interacci%C3%B3n_persona-computadorhttp://es.wikipedia.org/wiki/Interacci%C3%B3n_persona-computadorhttp://es.wikipedia.org/wiki/Interfaz_gr%C3%A1fica_de_usuariohttp://es.wikipedia.org/wiki/Integraci%C3%B3n_de_aplicaciones_empresarialeshttp://es.wikipedia.org/wiki/Integraci%C3%B3n_de_aplicaciones_empresarialeshttp://es.wikipedia.org/wiki/Flujo_de_trabajohttp://es.wikipedia.org/wiki/Business_Process_Managementhttp://es.wikipedia.org/wiki/Interacci%C3%B3n_persona-computadorhttp://es.wikipedia.org/wiki/Interacci%C3%B3n_persona-computadorhttp://es.wikipedia.org/wiki/Interfaz_gr%C3%A1fica_de_usuariohttp://es.wikipedia.org/wiki/Integraci%C3%B3n_de_aplicaciones_empresarialeshttp://es.wikipedia.org/wiki/Integraci%C3%B3n_de_aplicaciones_empresarialeshttp://es.wikipedia.org/wiki/Flujo_de_trabajohttp://es.wikipedia.org/wiki/Business_Process_Managementhttp://es.wikipedia.org/wiki/Interfaz_de_usuario

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    3/13

    e) 3acilitar el aprendi+ae de las nuevas generaciones de diseñadorescondensando conocimiento ya existente

     %simismo, no pretenden:

    a) .mponer ciertas alternativas de diseño frente a otras

    b) *liminar la creatividad in'erente al proceso de diseño

    c) 4o es obligatorio utili+ar los patrones, solo es aconseable en el caso de

    tener el mismo problema o similar que soluciona el patrón, siempre

    teniendo en cuenta que en un caso particular puede no ser aplicable

    (%busar o for+ar el uso de los patrones puede ser un error(

    III. "structuras de Patrones de Diseño

    5 #ombre del patr$n: sirve para ser reconocido entre diseñadores *stos 'ace

    que sea m$s f$cil pensar en diseños y comunicarlas, sus ventaas ydesventaas6 Problema: describe cuando aplicar el patrón *n &l se explica el problema y su

    contextoPodr"a describir los problemas espec"ficos de diseño, como la forma pararepresentar algoritmos como obetos 7e podr"a describir la clase o laestructura del obeto que son sintom$ticos de un diseño inflexible % veces el problema incluye una lista de condiciones que deben cumplirseantes de que se aplique el patrón de diseño

    8 Soluci$n: 9escribe los elementos que componen el diseño, sus relaciones,responsabilidades, y colaboraciones

    2a solución no describe un diseño particular y concreto o implementación,debido a que un patrón es una plantilla que puede ser aplicado en muc'assituaciones diferentes *n lugar de ello el patrón proporciona una descripciónabstracta de un problema de diseño y como una disposición general deelementos -clases y obetos) resuelve ella

    Consecuencias: son los resultados y compromisos de aplicar el patrón %unque las consecuencias son a menudo desapercibidas cuando escribimoslas decisiones de diseño, que son fundamentales para la evaluación dealternativa de diseño y para la comprensión de costos y los beneficios y aplicar el patrón 2as consecuencias en el software suelen ser referidos a menudos,tiempo y espacio

    Pueden referirse tambi&n al lenguae y a la cuestión de la aplicación, dado quela reutili+ación es a menudo un factor orientado a obetos de diseño, lasconsecuencias de un patrón incluyen su impacto en la flexibilidad,extensibilidad o la portabilidad de un sistema *l tener un estado deconsecuencias ayuda a entender la forma expl"cita de los patrones yevaluarlos

    I%. Cate&or'as de Patrones de Diseño

    *n la siguiente imagen podremos ver las categor"as de patrones de diseño y laclasificación de estas considerando si estas est$n enfocadas a clases uobetos

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    4/13

    (.). Patrones de diseño de creaci$n:2os patrones de diseño de creación permiten que el sistema sea independientede cómo se crean, componen o representan sus obetos Para si poder crear sistemas m$s dependientes de la composición de obetos que de la 'erenciade clases, se trata de que el comportamiento se defina m$s por la composición

    de un conunto pequeño de comportamientos fundamentales que por ladefinición mediante 'erencia de todos los comportamientos posibles Por tanto,la creación de obetos es algo m$s que instanciar una clase

    (.).*. Abstract Factor+ ,fabrica Abstracta-

    *s un patrón creacional que intenta solucionar problemas como: la creación dediferentes familias de obetos relacionados o que dependen entre s", sinespecificar sus clases concretas Permite trabaar con obetos de distintasfamilias de manera que las familias no se me+clen entre s" y 'aciendotransparente el tipo de familia concreta que se est$ usando

    7e aplica principalmente a obetos ;ratan con las relaciones entre obetos, quepueden cambiarse en tiempo de eecución y son muy din$micos

    Clases ue participan

    a   FabricaAbstracta:  9eclara una interfa+ para operaciones que creanobetos productos abstractos

    b   FabricaConcreta:  .mplementa las operaciones para crear obetosproducto concretos

    c Producto%bstracto: 9eclara una interfa+ para un tipo de obetoproducto

    d Producto

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    5/13

    C$di&o ejemplo:

    public abstract classAbstractFactory {public abstract DiscocomprarDisco();

    public abstract MemoriacomprarMemoria();}

    public class AmdFactoryete!ds AbstractFactory{public DiscocomprarDisco(){retur! !e" DiscoAmd();}public MemoriacomprarMemoria(){

    retur! !e" MemoriaAmd();}

    }public class #!telFactoryete!ds AbstractFactory {

    public DiscocomprarDisco() {$$ %&D& Auto'e!erated

    metod stubretur! !e" Disco#!tel();}

    public MemoriacomprarMemoria() {$$ %&D& Auto'e!eratedmetod stubretur! !e" Memoria#!tel();}

    }public abstract class Disco{public abstract *tri!etDisco();

    }

    public abstract classMemoria {public abstract *tri!

    etMemoria();

    }

    public class DiscoAmdete!ds Disco{

    public *tri! etDisco() {

    retur! +,a comprado u!Disco AMD+;}

    }

    public class Disco#!telete!ds Disco{

    public *tri! etDisco() {$$ %&D& Auto'e!eratedmetod stubretur! +,a comprado u!disco i!tel+;}

    }public class MemoriaAmdete!ds Memoria{

    public *tri! etMemoria(){$$ %&D& Auto'e!eratedmetod stubretur! +,a comprado u!amemoria Amd+;}

    }

    public class Memoria#!telete!ds Memoria{

    public *tri! etMemoria(){$$ %&D& Auto'e!eratedmetod stubretur! +,a comprado u!amemoria i!tel+;}

    }

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    6/13

    %entajas + des!entajas del patr$n de diseño de creaci$n Fabricaci$n

    Abstracta/entaas 9esventaas

    • >ace f$cil el intercambio de familias deproductos, dado que en el momento de querequiera lo #nico que se debe 'acer, es

    cambiar o meorar una l"nea de códigofomenta la consistencia entre productos

    • *ncapsula la responsabilidad de creación

    porque a"sla las clases concretas y ayuda amantener un control sobre las clases dedatos

    Puede ser dif"cil incorporar nuevos tiposde datos Pero esto se puede solucionar,pasando un par$metro a los m&todos de

    creación de productos, pero con estosacrificar"a seguridad

    (.)./. Builder *l obetivo es conseguir que la construcción de un obeto compuesto seaindependiente de su representación, de manera que la construcción no se veaafectada por el 'ec'o de que cambie su forma de representación.ntención

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    7/13

    { pi..asetMasa(+cocida+);}public /oid build*alsa(){ pi..aset*alsa(+pica!te+);}public /oid buildelle!o() {

    pi..asetelle!o(+pimie!ta5salcic7!+); }}

    class 8oci!a {pri/ate -i..a3uilderpi..a3uilder;

    public /oidset-i..a3uilder(-i..a3uilder pb) { pi..a3uilder pb; }public -i..a et-i..a(){ retur!pi..a3uilderet-i..a(); }

    public /oid co!struir-i..a(){pi..a3uildercrearue/a-i..a();pi..a3uilderbuildMasa();pi..a3uilderbuild*alsa();pi..a3uilderbuildelle!o();}

    }

    class 3uilder9ample {public static /oidmai!(*tri!: ars) {8oci!a coci!a !e"8oci!a();-i..a3uildera"ai

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    8/13

    (.).0. Factor+ 1et2od*s un patrón que se ocupa en la creación de obetos, sin especificar laclase de obeto que se crear 3actory met'od se ocupa del problemamediante la definición de un m&todo para crear los obetos 9efiniendo

    una interfa+ para crear obetos de tipo gen&rico permitiendo a lassubclases decidir qu& tipo de obetos concreto crear

    Casos de aplicaci$n:

    • =na clase no puede anticipar el tipo concreto de obetos quedebe crear

    • =na clase quiere que sus subclases especifiquen el tipo deobetos a crear

    "structura:

    • Product: define la interfa+

    de los obetos que elm&todo factory va a crear

    • ConcreteProduct: imple

    menta la interfa+ Product• Creator: 9eclara el

    3actory1et'od-), el cualretorna un obeto del tipoProduct-)

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    9/13

    variados, por eemplo, puede ser que la aplicación deba basarse enalguna configuración o par$metro en tiempo de eecución para decidir eltipo de obetos que se debe crear"structura

    Cliente: 2a clase

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    10/13

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    11/13

    (.).3. Sin&leton

    *s un patrón que garanti+a que una clase solo tenga una #nicainstancia, y provee un punto de acceso global a esta, 'aciendo as" quetodos los obetos utilicen una instancia de la clase, utilicen la mismainstancia

    Casos de aplicaci$n:

    =sar cuando:

    • 9eba a ver exactamente una instancia de una clase y &stadeba ser accesible a los clientes desde un punto de accesoconocido

    • 2a #nica instancia deber"a ser extensible mediante 'erencia ylos clientes deber"an ser capaces de utili+ar una instanciaextendida sin modificar su código

    "structura:

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    12/13

    *l constructor de la clase debeser privado o protegido 4opuede ser p#blico Paraalmacenar nuestra instanciadebemos crear un atributo que

    sea est$tico y privado 4opuede ser protegido, nip#blico>acemos un m&todo est$tico de clase para crear el punto global deacceso a nuestra #nica instancia *ste m&todo debe retornar lainstancia #nica 

    "jemplo:

    public class 7ingleton

    B

    private static 7ingleton instance C nullD

    private 7ingleton-) BE

    public static 7ingleton Fet.nstance-)

    B

    if -instance CC null)

    instance C new 7ingleton-)D

    return instanceD

    E

  • 8/17/2019 Patrones de Diseño Orientados a Objetos

    13/13

    2.4AGF?%3H%

    'ttp:IIeswi@ipediaorgIwi@iIPatrJ