Sei sulla pagina 1di 8

Patrón Prototype

Espacio académico:
Modelos de programación

Docente a cargo:
Jorge Hernando Malaver Parra

Kevin Duvan Bernal Ortiz 20181020066


Jonathan Steven Cruz Monroy 20181020064

Universidad Distrital Francisco José de Caldas


Facultad de ingeniería
Ingeniería de Sistemas
Bogotá D.C
2019
Patrón Prototype

En algunos casos, el coste de crear un objeto nuevo desde 0 es muy elevado, y más aún si
luego hay que establecer una gran colección de atributos. En por esto que en ocasiones es
más conveniente clonar un objeto predeterminado que actúe de prototipo y modificar los
valores necesarios para que se ajuste a su nuevo propósito. El patrón se aplica cuando:

 La creación de nuevos objetos acarrea un coste computacional elevado.


 Los objetos a crear tienen o suelen tener atributos que repiten su valor.

La solución consistirá en definir una interfaz que expone el método necesario para realizar la
clonación del objeto. Las clases que pueden ser clonadas implementarán esta interfaz,
mientras que las clases que deseen clonar deberán utilizar el método definido en la interfaz.

Además, existen 2 tipos de clonación: la clonación profunda y la clonación superficial. En la


clonación superficial modificar las referencias a terceros objetos hace que los originales
cambien, ya que los terceros objetos son en realidad punteros. En la clonación profunda se
clonan los terceros objetos dando lugar a nuevas referencias independientes.

La estructura o representación mediante diagrama UML es la siguiente:


Como parte del desarrollo del curso de modelos de programación, se plante un ejercicio
para entender y aplicar el patrón prototype:

 A partir de la definición y teoría del patrón prototype, crear un programa que me


permita clonar perros.

Para iniciar el planteamiento de la solución, partimos del hecho que se hace necesario definir
la interfaz que nos propone el propio método para aplicar el método necesario para la
posterior clonación de los objetos o en su defecto los “perros” (en nuestro caso), para ello,
creamos la clase interfaz (no confundir con la vista del programa) que llamamos
Perros_Prototype y a partir de esta la creación del método clonar.

Partiendo de la interfaz creada implementamos dicha interfaz en cada una de las clases
específicas que representaran la creación de los perros o específicamente, de las razas de
perros (Husky, Pastor Alemán, Cocker Spaniel) a las cuales tomaremos de ejemplo para
realizar la implementación para la clonación de dichos perros.
Para ello creamos clases separadas que representen de manera individual a la raza en
específico con la debida implementación de la interfaz (Perros_Prototype), además se
generan los atributos propios de cada raza para su diferenciación.
Implementación interfaz

Se usan los arreglos


para indicar
posibles
características de la
raza

Esta misma acción se lleva a cabo con las clases particulares de las dos razas de perros
restantes.
Una vez definidas las características de cada clase (raza de perro) se procede entonces a hacer
uso del método clonar generado en la interfaz, que en nuestro caso utilizamos el predefinido
por el IDE JAVA Netbeans, para hacer del mismo un método propio de la clase, de la
siguiente manera:

 Al ser un método implementado desde la interfaz, tan solo realizamos una sobre
escritura del mismo para su aplicación específica en la clase de cada raza de perro:

En donde la intención principal es general la referencia e instanciación del objeto que se


desea clonar, esta acción se realiza para cada una de las clases independientes, para cada una
de las razas que se desean clonar.
Para hacer entonces evidente la clonación, como parte y requisito de la solución del ejercicio
planteado, se desarrolló una interna grafica para mostrar el resultado de la clonación, siendo
entonces que para realizar dicho proceso se tuvo que:

o En la clase controlador o aquella que se encarga de gestionar los oyentes de los


botones, se crean los objetos base (los perros originales) a los cuales se aplicara la
clonación, a estos se le agregan los atributos iniciales:

o Una vez creados, se procede a realizar la referencia del perro original para clonarlo
en una nueva instancia de la misma raza del perro.

o Con estos nuevos objetos clonados ya obtenemos el clon del objeto original (perro
original), sus atributos o características ahora pueden ser modificables en la
clonación, de ahí que sea un patrón de diseño usado para reducir la caracterización de
objetos y más cuando se comparten atributos dentro del mismo.

o Como se mencionó anteriormente se especificó con la ayuda de arreglos atributos


propios de cada raza, además de esto implementamos métodos random para
ayudarnos a que la selección de nuevas características para los clones, y que esta se
realizara de forma aleatoria para diferenciar la clonación, de esta manera:

v Se genera el numero aleatorio

Se hace uso del numero aleatorio para


v
la selección del atributo

Se muestra los nuevos


atributos seleccionados
Para finalizar, la implementación completa con interfaz gráfica queda de la siguiente manera:

Panel de selección para las razas seleccionadas de prueba.

Seleccionando Husky:

Características iniciales
(originales) del perro
Al aplicar clonación, ya podemos evidenciar que toma los atributos y como parte del
intercambio de los mismos, el nuevo perro Husky cuenta con nuevas características.

Nuevas características
generadas para el clon

De esta manera se realiza entonces la clonación para cada raza, en donde por cada
clonación puede variar algún aspecto o algún atributo respecto al original.

Potrebbero piacerti anche