0% encontró este documento útil (0 votos)
250 vistas10 páginas

Control Semana 3 POO II

Este documento presenta un caso sobre programación orientada a objetos y pide responder 7 preguntas relacionadas con patrones de diseño como factory method, abstract factory, singleton, builder, prototype y object pool. Se pide identificar la aplicabilidad de estos patrones y describir sus características.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
250 vistas10 páginas

Control Semana 3 POO II

Este documento presenta un caso sobre programación orientada a objetos y pide responder 7 preguntas relacionadas con patrones de diseño como factory method, abstract factory, singleton, builder, prototype y object pool. Se pide identificar la aplicabilidad de estos patrones y describir sus características.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

Control Semana 3

PROGRAMACIÓN ORIENTADA A OBJETOS II

02/07/2021
Desarrollo

DESARROLLO DEL CONTROL:

Lea atentamente el siguiente caso:

De acuerdo al caso anterior y los contenidos revisados en la semana, elabore un informe


donde:

1. Señale la aplicabilidad del patrón creacional factory method (2 puntos).

R:

 Productos: define la interfaz de los objetos que puede crear la fábrica.

 ConcretaProductos - ConcreteProductN: clases que implementan productos. Si


comparten lógica productos podría pasar a ser una clase abstracta.

 Factory: declara el método fábrica que devuelve un objeto de tipo Producto. Puede
que lo utilice desde algunas de sus propias operaciones, en tal caso será una clase
abstracta.

 ConcreteFactory: redefine el método fábrica para devolver un objeto de tipo


ConcreteProductos.

public abstract class Productos


{
private String nombre;
private String marca;
private Sting clase

public String getNombre()


{
return nombre;
}

public void setNombre(String nombre)


{
this.nombre = nombre;
}

public String getMarca ()


{
return marca;
}

public void setMarca(String marca)


{
this.marca = marca;
}
public String getClase ()
{
return clase;
}

public void setClase(String clase)


{
This.clase =clase;
}
}

2. Mencione las características que tiene el sistema de aplicabilidad de patrón de diseño


abstract factory (2 puntos).

R:

• Cliente: utiliza solamente las interfaces declaradas en la factoría y en los productos


abstractos.

• Factoría Abstracto: declara una interfaz para la creación de objetos de productos


abstractos.
• Factoría Concreta: implementa las operaciones para la creación de objetos de
productos concretos.

• Producto Abstracto: declara una interfaz para los objetos de un tipo de productos.

• Producto Concreta: define un objeto de producto que la correspondiente factoría


concreta se encargaría de crear, a la vez que implementa la interfaz de producto
abstracto.

Implementación Cliente.
public class FactoryProductos
{
public void main(String[] args)
{
FactoryClase grupo1 = new FactoryClase();
Grupo1. ProductosLacteos();

FactoryClase grupo2 = new FactoryClase ();


grupo.ProductosPerecible();
}
}

Implementación Factoría Abstracta

public interface FactoryProducto2


{
public clase NuevoClaseLacteos();
public clase NuevosClasePerecible();
}

Implementación Producto concreto

public class FactoryProductos implements FactoryProductos2


{

public ClaseLacteo NuevoClaseLacteos ()


{
return new ClaseLacteo ();

}
public ClasePerecible NuevoClasePerecible ()
{
return new ClasePerecible ();
}
}

3. Explique la utilidad del patrón de diseño creacional singleton (1 punto).

R: Mediante este patrón podemos hacer que únicamente haya una sola instancia de una clase
en nuestra aplicación de forma similar a una variable global, pero de una forma más elegante.

public class Database {

private static Database DB;


private static Conexion con ;
private static Estado est;

public static Database getInstance(){


if(DB==null){
DB= new Database();
}
return DB;
}
public Conexion getConexion(){
if(con==null){
try {
String Host = "jdbc:sistema://localhost/sistema";
String user = "luis";
String password = "123456";
con = DriverManager.getConexion( Host, user, password );
} catch (SQLException ex) {
Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
}
}

return con;
}
Conexion con = Database.getInstance().getConexion();

4. Describa los diferentes usos de un patrón de diseño builder (1 punto).


R: El patrón Builder puede convertirse en una solución muy válida para aquellas clases que
tienen un número importante de parámetros.

Cabe mencionar que este patrón implica la creación de un objeto extra, con lo cual incrementa
también el gasto de memoria;

public class usuario {

private String nombre;


private String apellido;
private String direccion;
private String correo;

public usuario() {
}

public String getNombre() {


return nombrer; }

public void setNobre(String nombre) {


this.nombre = nombre; }

public String getApellido() {


return apellido; }

public void setApellido(String apellido) {


this.apellido = apellido; }

Public String getDireccion() {


return direccion; }

public void setDireccion(String direccion) {


this.direccion = direccion; }

public String getCorreo() {


return correo; }

public void setCorreo(String Correo) {


this.correo = correo; }

public interface IBuilder {


usuario build();
}

5. Determine las aplicaciones relacionadas con el patrón creacional propotype (1 punto).


R: Este patrón debe ser utilizado cuando un sistema posea objetos con datos repetitivos, en
cuanto a sus atributos. Hay que pensar en este patrón como si fuese una fábrica que tiene
ciertas plantillas de ejemplos de sus productos y, a partir de estos prototipos, puede crear una
gran cantidad de productos con esas características.

public abstract class Productos implements Clonable


{
private String nombre;
private String categoria;
private String marca;
private doble precio;

public Productos(String nombre, String categoría, String marca, double precio) {


setNombre(nombre);
setCategoria (categoria);
setMarca (marca);
setPrecio (precio);
}
public Productos clone () throws CloneNotSupportedException
{
return super.clone(); }
}
public abstract String DetalleProducto();
public String getnombre()
{
return nombre; }
public void setnombre(String nombre)
{
this.nombre = nombre; }
public String getCategoria()
{
return categoria; }
public void setCategoria(String categoria)
{
this.categoria = categoria; }
public String getMarca()
{
return marca }
public void setMarca(String marca)
{
this.marca = marca; }
}

public class MostrarProducto extends Productos


{
public String itemProductos()
{
return this.getnombre ()+this.getcategoria()+this.getmarca;
}
}

6. Explique las características del patrón de diseño object pool (0,8 puntos). En su respuesta
incluya las aplicaciones de este patrón de diseño (0,2 puntos).

R: Cuando el cliente necesita un objeto, lo pide al pool, de modo que si existe se lo devuelve y
si no se crea uno nuevo. Con este patrón ahorramos memoria, ya que no creamos objetos
innecesarios. Tampoco se destruyen innecesariamente, ya que al utilizarlos los devolvemos al
pool. Este patrón se puede implementar cuando nuestra aplicación trabaja con bases de datos,
lo que se realiza básicamente es obtener una conexión, realizar consultas u operaciones SQL y
por último cerrar la conexión.

public class ConBD


{
public static void main (String args[]) throws SQLException
{
try
{
//Crea la instancia con el pool.

PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();

pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL("jdbc:oracle:thin:@//localhost:1521/XE");
pds.setUser("<user>");
pds.setPassword("<password>");

//Obtener la conexión con la base de datos.


Connection conn = pds.getConnection();

//se ejecutan las operaciones con las bases de datos


Statement stmt = conn.createStatement ();
stmt.execute("select * from usuarios");

//Se cierra la conexion.


conn.close();
conn=null;
System.out.println("Connection returned to the " +
"UniversalConnectionPool\n");

}
catch(SQLException e)
{
System.out.println("ConBD - " +
"main()-SQLException occurred : "
+ e.getMessage());
}
}
}

7. Mencione donde se pueden utilizar los patrones de diseño creacional (1 punto).

R: Los patrones creacionales sirven para solucionar problemas derivados de la creación de


nuevos objetos

Este patrón lo utilizados para instanciar objetos, y así separar la implementación del cliente y
de los objetos que se utilizan. Con ellos intentamos separar la lógica de creación de objetos y
encapsularla.

Bibliografía
[Haga triple clic en cualquier parte de este párrafo para escribir la primera referencia

bibliográfica.]

Instrucciones para la sección de las citas bibliográficas:


Escriba la bibliografía aquí en orden alfabético (empezando por el apellido del primer autor o, de
no haber autor, por la primera palabra del título). Esta página ya está formateada con sangrías
francesas. Incluya sólo las citas bibliográficas a las que haya hecho referencia en su trabajo y
asegúrese de incluir todas las citas bibliográficas a las que se haya referido en el mismo.

Ejemplos de un artículo:

Apellido, A. A., Apellido, B. B., y Apellido, C. C. (año). Título del artículo específico. Título
de la Revista, número de la revista, número de página.
https://doi.org/xx.xxxxxxxxxx

Lee, H. W. (2005). Los factores que influyen en los expatriados. Journal of American Academy of
Business, 6(2), 273-279.

Osorio-Delgado, M. A., Henao-Tamayo, L. J., Velásquez-Cock, J. A., Cañas-Gutiérrez, A. I.,


Restrepo-Múnera, L. M., Gañán-Rojo, P. F., Zuluaga-Gallego, R. O., Ortiz-Trujillo, I C. y
Castro-Herazo, C. I. (2017). Aplicaciones biomédicas de biomateriales poliméricos.
DYNA, 84(201), 241-252. https://doi.org/10.15446/dyna.v84n201.60466

Nota: Si el artículo de la revista no tiene un DOI y proviene de una base de datos de investigación académica,
finalice la referencia después del rango de páginas. No incluya información de la base de datos en la
referencia. La referencia en este caso es la misma que para un artículo de revista impresa. Si el artículo de la
revista no tiene un DOI, pero tiene una URL que resolverá para los lectores (por ejemplo, es de una revista en
línea que no forma parte de una base de datos), incluya la URL del artículo al final de la referencia, en vez del
DOI.

Ejemplos de un texto:

Apellido, N. N. (año). Título del texto. Editorial. http://www.dirección.com

McShane, S. L., y Von Glinow, M. (2004). Organizational behavior: Emerging realities for the
workplace. The McGraw-Hill Companies.

Panza, M. (2019). Números: elementos de matemáticas para filósofos.  Universidad Del Valle.


https://www.reddebibliotecas.org.co/

También podría gustarte