Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESCUELA
Sistemas
Ingeniera Informtica y de
CURSO
Ingenieria de Sotware II
TEMA
Patrones de Diseo
DOCENTE
Victor
Albinagorta
INTEGRANTES
Kline
Lopez
Ordoez,
Campomanez
2015
HUARAZ ANCASH
PER
Felix
Kevin
NDICE
Introduccin................................................................................................... 6
1.
Qu es un patrn?............................................................................... 7
1.1.
Definiciones:...................................................................................... 7
2.
Desarrollo histrico............................................................................... 8
3.
Tipos de patrones................................................................................. 9
4.
5.
6.
7.
3.1.
Patrones de Creacin..........................................................................9
3.2.
Patrones Estructurales:.......................................................................9
3.3.
Patrones De Comportamiento...............................................................9
3.4.
3.5.
3.6.
3.7.
Abstract Factory........................................................................... 10
4.2.
Factory Method............................................................................. 11
4.3.
Prototype...................................................................................... 12
4.4.
Esquema Singleton.......................................................................13
Command..................................................................................... 15
5.2.
Iterator......................................................................................... 16
5.3.
Observer....................................................................................... 18
5.4.
Strategy........................................................................................... 19
Adapter......................................................................................... 21
6.2.
Composite.................................................................................... 23
6.3.
Decorator..................................................................................... 24
6.4.
Proxy............................................................................................. 25
Bibliografia.......................................................................................... 28
NDICE DE FIGURA
Imagen 1________________________________________________________________11
Imagen 2________________________________________________________________12
Imagen 3: Este sera el diagrama de clases general del patrn:___13
Imagen 4________________________________________________________________14
Imagen 5: Esquema del patrn Command____________________________16
Imagen 6: Esquema del patrn Iterator______________________________18
Imagen 7: Esquema del patrn Observer_____________________________19
Imagen 8: Esquema del patrn Strategy_____________________________21
Imagen 9: Esquema del patrn Adapter______________________________22
Imagen 10: Esquema del patrn Composite__________________________24
Imagen 11: Esquema del patrn Decorator__________________________25
Imagen 12: Esquema del patrn Proxy_______________________________26
Resumen
Este paradigma viene dado por deteccin de la repeticin constante de problemas en los
distintos diseos orientados a objetos, lo que conlleva que se defina una coleccin de
patrones que reflejen las soluciones ptimas para cada uno de esos problemas. No es un
concepto trivial de entender, requiere un proceso de estudio previo y asimilacin, pero
una vez que se supera dicho ciclo, los diseos creados en base a patrones presentan un
mayor grado de flexibilidad, modularidad y reutilizacin
abstract
Introduccin
Los casos de usos se han llegado a convertirse en la base de muchas metodologas de
desarrollo orientadas a objetos. Estos generalmente proporcionan el fundamento y el
punto de partida para el resto de los procesos de anlisis y desarrollo. Un caso de uso es
una secuencia de transacciones en un sistema cuya tarea es producir un valor medible de
un actor individual del sistema. Uno de los aspectos ms importantes de los casos de uso
especfico la funcionalidad completa de un sistema.
Por otra parte el uso de patrones para el desarrollo de software establece la diferencia
entre un buen y un mal diseo orientado a objetos. Un patrn es un fragmento
nombrado de informacin instructiva, que captura la estructura esencial y la visin
interna de una familia de soluciones con probado xito sobre un problema recurrente
que surge dentro de un cierto contexto y fuerzas de sistema. En otras palabras, rehusar
soluciones que funcionaron bien una vez.
1. Qu es un patrn?
En programacin orientada a objetos se entiende por patrn una solucin probada
que se puede aplicar con xito a un determinado tipo de problemas que aparecen
repetidamente en el desarrollo de sistemas software.
Los patrones no son una librera. Van ms bien en la lnea de un esqueleto bsico que
cada desarrollador luego adapta a sus necesidades y a las peculiares caractersticas de
su aplicacin. Se describen fundamentalmente en forma textual, acompaada de
diagramas y de seudo-cdigo. (patronesdediseno.net16, 2015)
1.1. Definiciones:
Segn (Christopher Alexander, The Timeless Way, & Buildig, 1979) los
patrones de diseo software son el esqueleto de las soluciones a problemas
comunes en el desarrollo de software. En otras palabras, brindan una solucin
ya probada y documentada a problemas de desarrollo de software que estn
sujetos a contextos similares.
Podramos clasificar los patrones en tres grandes grupos segn la escala o nivel
de abstraccin:
Patrones de arquitectura: Aqullos que expresan un esquema organizativo
estructural fundamental para sistemas de software.
Patrones de dialectos: Patrones de bajo nivel especficos para un lenguaje de
programacin o entorno concreto.
Patrones de interaccin: Son patrones que nos permiten el diseo de interfaces
web.
Patrones de diseo: Aqullos que expresan esquemas para definir estructuras de
diseo (o sus relaciones) con las que construir sistemas de software.
Segn (Gamma, 2008)un Patrn de Diseo es "una solucin simple y elegante
a un problema especfico y comn del Diseo Orientado a Objetos (DOO)".
As mismo, se apostilla que "son soluciones basadas en la experiencia y cuya
fiabilidad est demostrada".
estructuras y mecanismos
Tiene un componente humano significante: es esttico y de utilidad
1. Desarrollo histrico
El trmino patrn se utiliza inicialmente en el campo de la arquitectura, por
Christopher Alexander, a finales de los 70s. Este conocimiento es trasportado al
mbito del desarrollo de software orientado por objetos y se aplica al diseo. De all
es extrapolado al desarrollo en general y a las dems etapas. Algunos libros que
marcan el desarrollo del rea son:
Alexander, Christopher. A Pattern
Language:
Towns,
Buildings,
Construction. 1977.
Alexander, Christopher. The Timeless Way of Building. 1979
Gamma et al. Design Patterns: Elementos of Reusable Object-Oriented
Software. 1994
Bushmann et al. Pattern-Oriented Software Architecture: A System of
Patterns. 1996
Coplien y Schmidth. Pattern Languages of Program Design. 1995
Algunos eventos importantes en la historia del tema de patrones en Ingeniera de
software son:
1987. Ward Cunningham y Kent Beck escriben sus experiencias de
ensear Smalltalk por medio de las ideas de Alexander en Using Pattern
Languages for Object-Oriented Programs.
de
sistemas:
es
decir, para
la
Abstract Factory
Nos encontramos frente a un problema en el que debemos crear diferentes
objetos, todos pertenecientes a la misma familia, como puede ser el sistema de
libreras necesarias para crear interfaces grficas. Visto esto podramos decir
que lo que intenta solucionar el patrn de diseo software de creacin Abstract
Factory es crear diferentes familias de objetos
Segn esto, podemos decir que los componentes tpicos del patrn Abstract
Factory es la siguiente:
Cliente: Entidad que llamar a la fbrica adecuada que necesite para crear uno
de los objetos que provee dicha factora, es decir, intentar obtener una
instancia de alguno de los productos que entren en juego (ProductoA,
ProductoB).
AbstractFactory: Definicin de la interfaz que usarn las diferentes factoras.
Como mnimo, debe ofrecer un mtodo para la obtencin de cada objeto que se
pueda crear. ("crearProductoA()" y "crearProductoB()")
Concrete Factories: Aqu se representarn las diferentes familias de productos.
Provee la instancia concreta del objeto que se encarga de crear.
Abstract Product: Definir las interfaces para la familia de productos genricos.
En el diagrama son "ProductoA" y "ProductoB". El cliente trabajar
directamente sobre esta interfaz, que ser implementada por los diferentes
productos concretos.
Concrete Product: Se encargar de la implementacin especfica de los
diferentes productos.
Imagen 1
4.2.
Factory Method
Este patrn de diseo software de creacin consiste en utilizar una clase
constructora abstracta (similar al concepto del patrn Abstract Factory) con
unos mtodos definidos y otro(s) abstracto(s): el(los) dedicado(s) a la
construccin de objetos de un subtipo determinado.
El patrn de diseo software de creacin Factory Method puede ser usado
cuando:
La creacin de un objeto impide su reutilizacin sin una importante
duplicacin de cdigo.
La creacin de un objeto requiere acceso a la informacin o recursos que no
deberan estar contenidos en la clase de composicin.
Imagen 2
4.3.
Prototype
4.4.
Esquema Singleton
Prototipo: declara una interfaz, al a que accede el cliente, que sirve para la
clonacin de objetos.
El patrn de diseo de software de creacin Singleton (haciendo referencia
a una instancia nica) busca restringir la creacin de objetos pertenecientes
a una clase o el valor de un tipo a un nico objeto. Su intencin es
garantizar que una clase slo sea instanciada una vez y, adems,
proporcionar un nico punto de acceso global a la misma. Esto lo consigue
gracias a que es la propia clase la responsable de crear esa nica instancia,
(declarando el constructor de la clase como privado) y a que se permite el
acceso global a dicha instancia mediante un mtodo de clase.
Para implementar el patrn singleton hay que crear un mtodo que
instancie al objeto slo si todava no existe ninguna otra instancia. Para
asegurar que no vuelva a ser instanciado, se limita al constructor con
atributos protegidos o privados. Por esto, la implementacin del patrn
puede ser complicada en programas multihilo, ya que si dos o ms hilos de
ejecucin instanciaran la clase al mismo tiempo slo uno de ellos debera
lograr crear el objeto. La solucin clsica para este problema es utilizar
exclusin mutua en el mtodo de creacin de la clase que implementa el
patrn. Ejemplos de situaciones habituales en las que convendra aplicar
este ejemplo de patrn de diseo son aquellas en las que la clase principal
busca controlar el acceso a un recurso nico (como puede ser el ratn o un
archivo abierto en modo exclusivo) o cuando cierto tipo de datos debe
estar disponible para todos los dems objetos.
Este sera el diagrama de clases general del patrn de creacin Singleton:
Imagen 4
Command
El patrn de diseo software de comportamiento Command permite realizar
una operacin sobre un objeto sin conocer realmente las instrucciones de esta
operacin ni el receptor real de la misma. Esto se consigue encapsulando la
peticin como si fuera un objeto, con lo que adems se facilita la
parametrizacin de los mtodos.
Las principales aplicaciones del patrn de comportamiento Command seran:
5.2.
Iterator
El patrn de diseo de comportamiento Iterator es uno de los mayores
exponentes de los patrones de comportamient. Presenta la interfaz que declara
los mtodos necesarios para acceder, de forma secuencial, a los objetos de una
coleccin.
El iterator cubre la necesidad de acceder a los elementos de un contenedor de
objetos sin tener que trabajar con su estructura interna. Adems, es posible que
se necesite ms de una forma de recorrer la estructura siendo para ello
necesario crear modificaciones en la clase. Mediante el uso del patrn, se
aaden mtodos que permiten recorrerla sin referenciar su representacin, por
lo que la responsabilidad del recorrido se traslada a un objeto iterador.
La gran desventaja de que usar este objeto iterador, ms o menos encapsulado,
es que muchas veces e necista conocer la estructura del contenedor para elegir
del tipo de iterador ms adecuado. Esto se soluciona abstrayendo los tipos de
los distintos iteradores y dotando a las estructuras de un mtodo que cree un
iterador concreto.
Las entidades participantes en el esquema general de este patrn de diseo
software de comportamiento son:
5.3.
Observer
El patrn de comportamiento Observer define una interaccin entre objetos, de
manera que cuando uno de ellos cambia su estado, el Observer se encarga de
notificar
este
cambio
los
dems.
Por tanto, la razn de ser de este patrn es desacoplar las clases de los objetos,
aumentando la modularidad del lenguaje y evitando bucles de actualizacin.
La idea bsica del patrn es que el objeto de datos (o sujeto) contenga atributos
mediante los cuales cualquier objeto observador (o vista) se pueda suscribir a l
pasndole una referencia a s mismo. De este modo, el sujeto mantiene as una
lista de las referencias a sus observadores.
Dadas estas propiedades, el patrn Observer suele emplearse en el desarrollo
de frameworks de interfaces grficas orientados a objetos, enlazando 'listeners'
a los objetos que pueden disparar eventos.
Las clasese participantes en el esquema general de este patrn de
comportamiento son:
Observer: Define la interfaz para actualizar los objetos a los que se deben
notificar los cambios en el objeto Subject.
ConcreteSubject: Guarda
el
estado
de
inters
para
los
objetos
5.4. Strategy
Este es un patrn de diseo software de comportamiento que determina la
forma de implementar el intercambio de mensajes entre diferentes objetos que
realizan diferentes tareas, pero que comparten elementos comunes. El patrn de
comportamiento Strategy permite gestionar un conjunto de operaciones de
entre los cuales el cliente puede elegir el que le convenda ms en cada
situacin, e intercambiarlo, de forma dinmica, cuando lo necesite.
Para llevar a cabo esta funcionalidad, este patrn de comportamiento trabaja
con los algoritmos que implementan las diferentes estrategias de forma que los
encapsula en una jerarqua, consiguiendo que el cliente trabaje contra un objeto
intermediario o 'Context'. En este punto, el cliente puede elegir el algoritmo
que prefiera de entre los implementados en las estrategias del sistema, o dejar
al contexto la tarea de elejir al ms apropiado para cada situacin concreta.
Por lo tanto, cualquier sistema que presente un servicio o funcin determinada,
que pueda o deba ser realizada de varias maneras dependiendo del contexto,
ser indicado gestionarlo con el patrn Strategy.
Las clasese participantes en el esquema general de este patrn de
comportamiento son:
ConcreteStrategy: Clases
donde
se
implementan
los
algoritmos
Adapter
El patrn Adapter convierte la interfaz de una clase en la que otra necesita,
permitiendo que clases con interfaces incompatibles trabajen juntas.
Por lo tanto, el uso de este patrn estructural est indicado cuando se quiere
usar una clase ya implementada y su interfaz no es similar con la necesitada o
cuando se desea crear una clase reusable que coopere con clases no
relacionadas o que tengan interfaces compatibles.
Sin embargo, hay que hacer distincin entre si queremos adaptar un objeto o
una
clase
interfaz
completa.
6.2.
Composite
El patrn Composite sirve para construir objetos que estn formados por tros
objetos ms simples, pero siempre similares entre s, gracias a la composicin
recursiva. Por lo tanto, al tner todos estos objetos una misma interfaz, el
Composite simplifica el tratamiento de los mismos.
El patrn composite es ampliamente usado en el tratamiento de interfaces de
usuario en las que se necesita, por ejemplo, representar un conjunto de
elementos de una interfaz grfica. Algunos de estos elementos sern simples,
mientras que otros sern ms complejos y estarn formados por varios
elementos simples. Por tanto, el comportamiento y/o la informacin que
proporciona un elemento complejo est determinada por los elementos que lo
componen.
Generalizando, nos encontraramos frente a una situacin en la que
neceistaramos representar jerarquas de objetos de tipo parte y compuestos en
la que se quiere usar la misma interfaz en las partes y en los compuestos. El
patrn Composite, lo que nos ofrece es crear una interfaz o clase abstracta que
acte comosuperclase de las clases concretas que representan las partes y los
compuestos. Las clases que representan los compuestos pueden ser tratadas
como partes, porque soportan la interfaz.
De este modo, encontramos que los componentes del patrn seran los
siguientes:
6.3.
Decorator
El patrn de diseo estructural Decorator facilita la tarea de aadir
dinmicamente funcionalidades a un Objeto. De este modo, elimina de
necesidad de crear clases que fuesen heredando de la primera, incorporando no
slo la nueva funcionalidad, sino tambin otras nuevas y asociarlas a ella.
A veces se desea adicionar responsabilidades a un objeto pero no a toda la
clase. Las responsabilidades se pueden adicionar por medio de los mecanismos
de Herencia, pero este mecanismo no es flexible porque la responsabilidad es
adicionada estticamente. La solucin flexible es la de rodear el objeto con otro
objeto que es el que adiciona la nueva responsabilidad. Este nuevo objeto es el
Decorator.
Este ejemplo de patrones estructurales de diseo software es til cuando:
6.4.
Proxy
Esta patrn estructural tiene como propsito proporcionar un intermediario
para controlar el acceso a un objeto. Por ello tiene distintas aplicaciones:
6. Bibliografia
Christopher Alexander, The Timeless Way, & Buildig. (1979). Reglas de los
patrones de diswo.
Gamma, E. (2008). Design Patterns: Elements of Reusable Object-Oriented
Software.
patronesdediseno.net16. (Noviembre de 2015). Obtenido de
http://patronesdediseno.net16.net/