Está en la página 1de 5

UNIVERSIDAD DE SANTANDER – UDES Página 1 de 5

Evaluación II
Versión: 01
Construcción e Integración de Software – 372801-A

PROGRAMA INGENIERÍA DE SOFTWARE Semestre A-2021

UNIVERSIDAD DE SANTANDER – UDES


Docente: Jorge Uriel Liévano C.
Tema: Evaluación II – Patrones de diseño de software
Fecha: 14Oct2021

DATOS DEL ESTUDIANTE


Código:18371008 Nombre: Jesús Albeiro Rincón Barbosa

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.

 ¿Qué patrón de diseño de software debemos usar? Singleton


 Genere el correspondiente diagrama de clases

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

PROGRAMA INGENIERÍA DE SOFTWARE Semestre A-2021

Ejercicio 2 (__/25)

Hagamos de cuenta que tenemos dos familias de objetos:

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:

public abstract void Colorea(Celular celular

Este método es la relación que une las dos familias de celulares. Dado que es un método abstracto, Gris debe
redefinirlo:

public void colorea(Celular celular) {


Console.WriteLine("Pintando de gris el "+ celular.getDescripcion());
}

Lo mismo ocurre con el Negro:

public void colorea(Celular celular) {


Console.WriteLine("Pintando de negro el "+ celular.getDescripcion());
}

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

PROGRAMA INGENIERÍA DE SOFTWARE Semestre A-2021

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.

 ¿Qué patrón de diseño utilizarías? Abstrac Factory


 Genere el correspondiente diagrama de clases

Para generar el diagrama de clases, tenga en cuenta los siguientes aspectos:

 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 .

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

PROGRAMA INGENIERÍA DE SOFTWARE Semestre A-2021

 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.

public static void main(string[] args) {


// Fabrica de celulares Básico Negro
CelularFabrica f1 = new FabricaCelularBasicoNegro();
EnsambladoraCelular e1 = new EnsambladoraCelular(f1);

// Fabrica de celulares iPhone Gris


CelularFabrica f2 = new FabricaCelularBasicoGris();
EnsambladoraCelular e2 = new EnsambladoraCelular(f2);
}

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

PROGRAMA INGENIERÍA DE SOFTWARE Semestre A-2021

/// 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/

También podría gustarte