Вы находитесь на странице: 1из 28

AO DE LA PROMOCIN DE LA INDUSTRIA RESPONSABLE Y

DEL COMPROMISO CLIMTICO

UNIVERSIDAD NACIONAL DE TRUJILLO


ESCUELA DE INGENIERA DE SISTEMAS

CURSO:
TECNOLOGA DE LA PROGRAMACIN

DOCENTE:
MG.

ING.

ZORAIDA

MELGAREJO.

INTEGRANTES (GRUPO N 08):

YANET

VIDAL

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

AMARANTO TANDAYPAN, JONATHAN


RODRIGUEZ CARBAJAL, ALICIA
ROJAS LPEZ, JOS YERSON
ZARE GONZALES, KELVIN

TEMA:
PATRN ADAPTER

TRUJILLO PER
2014

Grupo N 01

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

NDICE

INTRODUCCIN ...............................................................................................................4
PATRN DE DISEO .......................................................................................................6
1.

PATRN DE DISEO ADAPTER ..........................................................................6


1.1. DEFINICIN. ......................................................................................................6
1.2.

CARACTERSTICAS DEL PATRN ADAPTER ............................................ 11

1.3.

ESTRUCTURA DEL PATRN DE DISEO ADAPTER ................................ 12

1.4.

PARTICIPACIONES ....................................................................................... 14

1.5.

CONSECUENCIAS......................................................................................... 15

1.6.

IMPLEMENTACIN Y EJEMPLO DE USO .................................................. 17

BIBLIOGRAFA ................................................................................................................ 27

Grupo N 01

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

INTRODUCCIN
La utilizacin de patrones de diseo en el flujo de diseo puede
ayudar a:
Comprender y utilizar mejor las arquitecturas basadas en
capas.
Crear un diseo reescalable y reutilizable.
Trabajar mejor en equipo.
Comprender mucho mejor el diseo una vez terminado, ya que
utiliza tcnicas estndar que estn bien documentadas.
Los patrones de diseo estructurales estn enfocados en la
gestin de la forma en la que las clases y los objetos se
combinan para dar lugar a estructuras ms complejas. Al igual
que en las otros tipos de patrones, podemos hablar de patrones
estructurales asociados a clases (Adapter) y asociados a objetos
(Bridge, Composite, Decorator, Facade, Flyweight, Proxy). Los
Grupo N 01

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

primeros utilizan la herencia mientras que los segundos se basan


en la composicin. Los patrones estructurales asociados a objetos
describen formas de componer los objetos para conseguir nuevas
funcionalidades. La flexibilidad de la composicin de estos
objetos surge de la posibilidad de cambiar dicha composicin en
tiempo de ejecucin, lo que es imposible con la composicin
esttica tradicional de clases. Busca ayudar a la comunidad de
desarrolladores de software a resolver problemas comunes,
creando un cuerpo literario de base.
Crea un lenguaje comn para comunicar ideas y experiencia
acerca de los problemas y sus soluciones.
El uso de patrones ayuda a obtener un software de calidad
(reutilizacin y extensibilidad).
En nuestro informe que presentaremos a continuacin nos
enfocamos en el patrn de diseo adapter.

Grupo N 01

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

PATRN DE DISEO
Los patrones de diseo son la base para la bsqueda de
soluciones a problemas comunes en el desarrollo de software y
otros mbitos referentes al diseo de interaccin o interfaces.
Un patrn de diseo resulta ser una solucin a un problema de
diseo. Para que una solucin sea considerada un patrn debe
poseer ciertas caractersticas. Una de ellas es que debe haber
comprobado su efectividad resolviendo problemas similares en
ocasiones anteriores. Otra es que debe ser reutilizable, lo que
significa que es aplicable a diferentes problemas de diseo en
distintas circunstancias.

1. PATRN DE DISEO ADAPTER


1.1. DEFINICIN.
Este patrn permite la cooperacin entre clases para extender sus
funcionalidades a clases de diferentes tipos, que no pueden
usarlas por mecanismos comunes como la herencia.
Muchas veces tenemos que integrar clases o libreras necesarias
para nuestra aplicacin, pero en ocasiones no podemos utilizar
directamente sus funcionalidades usando la Herencia (por
ejemplo) ya que por X o Y motivo no hay compatibilidad entre
Grupo N 01

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

nuestras clases y las que provee la librera...... gracias a


problemticas como esta nace el patrn Adapter que en pocas
palabras permite establecer un puente entre la clase incompatible
con el resto de las clases que quieren usar su funcionalidad,
adaptando dichas funcionalidades con el sistema.

Los patrones de diseo son el esqueleto de las soluciones a


problemas comunes en el desarrollo de software.
En

otras

palabras,

brindan

una

solucin

ya

probada

documentada a problemas de desarrollo de software que estn


sujetos a contextos similares. Debemos tener presente los
siguientes elementos de un patrn: su nombre, el problema
Grupo N 01

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

(cuando aplicar un patrn), la solucin (descripcin abstracta del


problema) y las consecuencias (costos y beneficios).
Grande fue mi sorpresa al averiguar que existen varios patrones
de diseo popularmente conocidos, los cuales se clasifican como
se muestra a continuacin:
Patrones Creacionales: Inicializacin y configuracin de
objetos.
Patrones

Estructurales:

Separan

la

interfaz

de

la

implementacin. Se ocupan de cmo las clases y objetos se


agrupan, para formar estructuras ms grandes.
Patrones de Comportamiento: Ms que describir objetos o
clases, describen la comunicacin entre ellos.
Supongamos que tenemos un sistema que trabaja con diferentes
tipos

de

motores

(Comn,

Econmico)

que

comparten

caractersticas comunes as como su funcionamiento, se desea


vincular al sistema una clase de tipo motor Elctrico con un
funcionamiento diferente al de los dems, se debe adaptar la
nueva clase sin que esto afecte la lgica inicial de la aplicacin.
Ya que nos plantean vincular un nuevo motor totalmente
diferente al resto de motores definido en el sistema, entonces
deducimos que si bien es un motor no puede tener un
tratamiento igual al de los dems, ya que el modo de encenderlo,
ponerlo en funcionamiento y hasta apagarlo podra ser muy
distinto y podra afectar la lgica establecida, como no podemos
Grupo N 01

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

modificar bruscamente nuestro cdigo entonces utilizaremos el


patrn Adapter para dar solucin a nuestra problemtica.

Grupo N 01

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

Como vemos nuestro sistema gira en torno a los motores,


utilizamos la herencia para compartir funcionalidades comunes
para los diferentes tipos de motores con los que trabajaremos,
sin embargo evidenciamos que no todos ellos se comportan de la
misma manera como es el caso del Motor Elctrico, por tal razn
no podemos ponerlo a heredar directamente de la clase Motor,
ya que los mtodos que esta nos provee no seran tiles para
esta clase.
En este punto es donde hacemos uso de una clase Adapter que
servira de puente entre la clase Padre y La Clase que debe ser
adaptada, as este adaptador sera el encargado de establecer
comunicacin con el motor Elctrico y ejecutar las solicitudes que
el cliente realice.
El patrn Adapter sirve para hacer que dos interfaces, en principio
diferentes, puedan comunicarse.
Para esto se aade un adaptador intermedio, que se encargar de
realizar la conversin de una interface a otra.
Este patrn se utiliza generalmente cundo ya existe una
interface, pero no podemos (o no queremos) usarla. Por ejemplo
cuando tenemos que utilizar libreras externas.

Grupo N 01

10

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

1.2. CARACTERSTICAS DEL PATRN ADAPTER


Se utiliza para adaptar una interfaz en otra, es decir permite
trabajar juntas a dos clases con interfaces incompatibles.
Ofrece una gran reutilizacin de cdigo.
Una clase Adapter implementa una interfaz que conoce a
sus clientes y proporciona acceso a una instancia de una
clase que no conoce a sus clientes. es decir convierte la
interfaz de una clase en una interfaz que el cliente espera.
Aadir funcionalidad a la clase reutilizada que esta no
proporciona.
Un objeto adapter proporciona la funcionalidad prometida
por una interfaz si tener que conocer la clase utilizada para
implementar ese interfaz.

Grupo N 01

11

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

1.3. ESTRUCTURA DEL PATRN DE DISEO


ADAPTER
Objetivo de la estructuracin
Una clase Adapter implementa un interfaz que conoce a sus
clientes y proporciona acceso a una instancia de una clase que no
conoce a sus clientes, es decir convierte la interfaz de una clase
en una interfaz que el cliente espera. Un objeto Adapter
proporciona la funcionalidad prometida por un interfaz sin tener
que conocer que clase es utilizada para implementar ese interfaz.
Permite trabajar juntas a dos clases con interfaces incompatibles.

Aplicabilidad
Quieres utilizar una clase que llame a un mtodo a travs
de una interface, pero quieres utilizarlo con una clase que
no implementa ese interface. Modificar esa clase que
implementa el interface no es una opcin por un par de
razones:
Grupo N 01

12

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

1. No tienes el cdigo fuente de la clase.


2. La clase es una clase de propsito general, y es
inapropiado para ella implementar un interface par un
propsito especfico.
Quieres determinar dinmicamente que mtodos de otros
objetos llama un objeto. Quieres realizarlo sin que el objeto
llamado tenga conocimientos de la otra clase de objetos.

Solucin

Supn que tienes una clase que llama a un mtodo a travs de


un interface. Quieres que una instancia de esa clase llame a un
mtodo de un objeto que no implementa el interface. Puedes
planificar que la instancia realice la llamada a travs de un objeto
adapter que implementa el interface con un mtodo que llama a
un mtodo del objeto que no implementa el interface. El
diagrama de clases que demuestra esta organizacin es el
siguiente:

Grupo N 01

13

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

1.4. PARTICIPACIONES
A continuacin estn las descripciones de los papeles que juegan
las clases e interfaces en la organizacin citada anteriormente:

CLIENTE.- Esta es una clase que llama a un mtodo de otra


clase a travs de un interface en regla que necesita no
asumir que los objetos que lo llaman al mtodo pertenecen
a una clase especfica. Colabora con la conformacin de
objetos para la interfaz Target.
IFTARGET.- Este interface declara el mtodo que la clase
Cliente llama. define la interfaz especfica del dominio que
Client usa.
ADAPTER.- Esta clase implementa el interface IFTarget.
Implementa el mtodo que el cliente llama para llamar a un
mtodo de la clase Adaptee, la cual no implementa el
interface IFTarget. Adapta la interfaz de Adaptee a la
interfaz Target.

Grupo N 01

14

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

ADAPTEE.- Esta clase no implementa el mtodo del


interface IFTarget pero tiene un mtodo que quiere llamar
la clase Cliente. Define una interfaz existente que necesita
adaptarse.

Colaboraciones.
El cliente llama a las operaciones en la instancia del Adapter.
Luego, el Adapter llama al Adaptee (el adaptado) y lleva a cabo
las operaciones pedidas.

1.5. CONSECUENCIAS
El cliente y las clases Adaptee permanecen independientes
unas de las otras.
El patrn Adapter introduce una in direccin adicional en un
programa. Como cualquier otra in direccin, contribuye a la
dificultad implicada en la compresin del programa.
Puedes utilizar una clase Adapter para determinar cules de
los mtodos de un objeto llama otro objeto.
Las consecuencias entre adaptadores de clase y de objetos son
diferentes.
Un adaptador de clase:
-Adapta a una clase Adaptada (adaptee) a una interfaz Objetivo
(target) reutilizando los mtodos de la clase Adaptada. Por tanto,
no funcionara cuando se quieran adaptar a la clase adaptada y
todas sus subclases.
Grupo N 01

15

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

-Solo se introduce un objeto, y no hace falta delegar en otro


adaptado.
-Un adaptador de clase puede sobrescribir los mtodos de la
clase adaptada (Adaptee) ya que esta es su clase padre.

Un adaptador de Objeto:
-Un adaptador de objeto permite a un solo adaptador trabajar
con mltiples objetos adaptados, es decir la clase adaptada y
todos su objetos.
-Se puede aadir funcionalidad a todos los adaptados de una
vez.
-Es ms difcil si se necesita redefinir el comportamiento del
adaptado.
Cunta adaptacin hace un adaptador?
-Desde cambiar el nombre de los mtodos hasta aadir nuevas
operaciones.
En sntesis podemos decir que el trabajo de un adaptador va
desde una simple conversin de interfaces, como por ejemplo
cambiar el nombre de los mtodos hasta soportar un conjunto
completamente diferente de operaciones o mtodos. El grado del
trabajo que el adaptador realice depender de que tan similares
sean las interfaces de la clase objetivo (target) y la clase adaptada
(adaptee).
Grupo N 01

16

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

1.6. IMPLEMENTACIN Y EJEMPLO DE USO


Aplicacin y ejemplo
Llega un momento en el que queremos hacer uso de cierta clase,
pero observamos que esta clase no es totalmente compatible con
nuestra aplicacin. Hemos desarrollado un programa que permite
el funcionamiento de una empreza automotriz, dando rdenes
para que determinados motores se activen. Sin embargo, se ha
adquirido un nuevo motor y su programa para funcionamiento es
distinto al que manejamos hasta entonces. Sucede que no
podemos modificar el cdigo fuente de tal clase, slo hacer uso
de ella, pero no es compatible con nuestra interfaz Motor que
define a los mtodos de modo general, y queson implementados
por los distintos tipos de motores. Qu hacer? Crear una clase
adaptadora, que sirva como puente entre la clase Adaptee (clase
a adaptar) y el Target (interface o clase abstracta que define los
mtodos que queremos adecuar).

Grupo N 01

17

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

Estructura

Solucin
El desarrollo se compone de clases e interfaces, a fin de cumplir
todos los requisitos expuestos. En este caso, se ha ordenado el
Grupo N 01

18

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

programa en 2 paquetes: backend y frontend. El primero incluye


toda la lgica interna del programa y el segundo slo lo referente
a la lectura de datos y acerca de cmo se presentan las opciones
y respuestas al usuario.

PACKAGE BACKEND

Clase motorComun

Grupo N 01

19

Universidad Nacional de Trujillo

Grupo N 01

20

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

Universidad Nacional de Trujillo

Clase motorEcononomico

Grupo N 01

21

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

Universidad Nacional de Trujillo

Clase MotorElectrico

Grupo N 01

22

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

Universidad Nacional de Trujillo

Grupo N 01

23

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

Universidad Nacional de Trujillo

Clase MotorElectricoAdapter

Grupo N 01

24

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

Universidad Nacional de Trujillo

PACKAGE FRONTED
Clase Aplicacin

Grupo N 01

25

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

Universidad Nacional de Trujillo

Grupo N 01

26

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

BIBLIOGRAFA

Aprenda Java como si estuviera en primero de Javier


Garca de Jaln, Jos Ignacio Rodrguez, Iigo Mingo, Aitor
Imaz, Alfonso Brazlez, Alberto Larzabal, Jess Calleja y Jon
Garca (1999). Universidad de Navarra.
Java 1.2 al descubierto de Jaime Jaworski (1999), Prentice
Hall.
http://es.wikipedia.org/wiki/Adapter_(patr%C3%B3n_de_dise
%C3%B1o)
http://msdn.microsoft.com/es-es/library/bb972240.aspx
http://codejavu.blogspot.com/2013/08/ejemplo-patronadapter.html
http://www.eltavo.net/2014/06/patrones-implementandopatron-adaptador.html
http://programacion-innata.blogspot.com/2014/02/patronde-diseno-adapter-incluye.html
http://www.youtube.com/watch?v=lpsNlnbPmKw
http://prezi.com/hw06czquzze0/patron-de-diseno-adapter/
http://software.guisho.com/patron-adaptador-patternadapter-patrones-de-diseno

Grupo N 01

27

Universidad Nacional de Trujillo

Tecnologa de la Programacin
Ing. Zoraida Vidal Melgarejo

de Patrones de Diseo De Software en el Diseo de una


Aplicacin de Base de Datos Orientada a Objetos, autor:
Luis Fernando Alonzo Jernimo, Universidad de San Carlos
De Guatemala. pg. 71-79.
http://programacion-innata.blogspot.com/2014/02/patronde-diseno-adapter-incluye.html
http://www.youtube.com/watch?v=lpsNlnbPmKw
http://prezi.com/hw06czquzze0/patron-de-diseno-adapter/
http://software.guisho.com/patron-adaptador-patternadapter-patrones-de-diseno

Grupo N 01

28

Вам также может понравиться