Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Evaluación II
Versión: 01
Construcción e Integración de Software – 372801-A
OBJETIVO
Evaluar la capacidad de identificar e implementar patrones de diseño creacional
CONTENIDO
Ejercicio 1 (__/25)
Para acceder a un recurso que requiere bastante poder de cómputo en un sistema donde hay cientos de usuarios
interactuando con la información almacenada. Se requiere diseñar un proyecto de consola que permita usar una
única conexión a la base de datos que nos permita mantener en memoria dicha conexión y por ende ahorrar
espacio de memoria RAM. Una conexión de base de datos puede tener muchos métodos interesantes para
realizar operaciones de lectura, de creación de recursos, de entidades, también de actualización y eventualmente
su eliminación. Suponga que se tiene un método que retorna un entero que representa el conteo de los registros
que tiene una entidad en particular, por ejemplo el método ObtenerNumeroPersonas. Para efectos de simulación
asuma que este método retorna el número 1000 registros (1000 personas). Aquí iría realmente una instrucción
SQL que retornarían dicha información.
1
UNIVERSIDAD DE SANTANDER – UDES Página 2 de 5
Evaluación II
Versión: 01
Construcción e Integración de Software – 372801-A
Ejercicio 2 (__/25)
1) La clase Celular, que tiene dos tipos: Basico y iPhone (teléfono funcional).
2) La clase Color, que tiene dos clases: Negro y Gris (los mejores colores, sin duda! ).
Más allá de todos los atributos/métodos que puedan tener la clase Color y Celular, lo importante aquí es destacar
que Color define un método abstracto:
Este método es la relación que une las dos familias de celulares. Dado que es un método abstracto, Gris debe
redefinirlo:
Nuestra empresa de celulares se dedica a darle un formato estético específico a los celulares Basico y IPhone.
Se ha decidido que todos los IPhone que saldrán al mercado serán Plateados y los Basicos serán Dorados.
2
UNIVERSIDAD DE SANTANDER – UDES Página 3 de 5
Evaluación II
Versión: 01
Construcción e Integración de Software – 372801-A
Ahora bien, una solución simple sería en la clase Gris colocar el iPhone y en la clase Negro colocar el Basico y
todo funcionaría de maravillas. ¿Cuál sería el problema? Que está todo hard-codeado. Esto quiere decir que el
hecho de que los celulares IPhone sean grises y los celulares Básicos sean negros es una decisión del negocio y,
como tal, puede variar colores (y de hecho el negocio varía constantemente ).
Por ejemplo, que pasa si mañana Se agrega otro color o me cambian el color del iPhone o mucho peor, ¿qué
pasa si se crea otros dos tipos de celulares p.e. un SmartPhone (teléfono inteligente) Phablet (Combinación
Teléfono Tableta) y también se lo quiere pintar de Gris? Para evitar un dolor de cabeza conviene separar estas
familias (fábricas) que faciliten la creación de cada tipo de celular con un color especifico (p.e.
FabricaCelularBasicoNegro) y para ello deberás elegir el patrón de diseño de software adecuado.
3
UNIVERSIDAD DE SANTANDER – UDES Página 4 de 5
Evaluación II
Versión: 01
Construcción e Integración de Software – 372801-A
La clase celular debe tener como mínimo las siguientes características: Marca, Modelo, Pulgadas, Color,
Descripción, Precio, Camara de Alta definición, Bateria Larga duración, Protección al agua y polvo, lector de
huellas, Force Touch, Procesador de varios núcleos, Memoria Interna .
Al momento de crear instancias a partir de las clases derivadas, defina (aparte del constructor por defecto)
constructores sobrecargados que permitan pasar una lista mínima de características ( que usted decida)
básicas como parámetros a partir de las características anteriormente mencionadas para la clase celular.
En las clases que fabrican los celulares adopte métodos como CrearCelular(), CrearColor().
Para el programa principal puede tomar como base el siguiente prototipo para complementar el análisis del
problema.
Donde…
4
UNIVERSIDAD DE SANTANDER – UDES Página 5 de 5
Evaluación II
Versión: 01
Construcción e Integración de Software – 372801-A
/// Para ordenar un poco las cosas, esta clase se encarga de gestionar las fabricas
public class EnsambladoraCelular {
public EnsambladoraCelular(CelularAbstractFactory fabrica) {
Color color = fabrica.CrearColor();
Celular celular = fabrica.CrearCelular();
color.Colorea(celular);
}
}
Wikipedia
Hard-code, término del mundo de la informática hace referencia a una mala práctica en el desarrollo de software
que consiste en incrustar datos directamente (a saco) en el código fuente del programa.
10 características de los actuales ‘súper celulares’
https://www.enter.co/smartphones/10-caracteristicas-de-los-actuales-super-celulares/