Created
July 17, 2014 00:49
-
-
Save Fhernd/cea6210dc3e4636a9d26 to your computer and use it in GitHub Desktop.
Implementación de la clase EmpresaJuegos en C#.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ===++=== | |
// | |
// OrtizOL | |
// | |
// ===--=== | |
/*============================================================ | |
// | |
// Clase: EmpresaJuegos.cs | |
// | |
// Original en: http://goo.gl/JYQzkf | |
// | |
// Propósito: Representa una emprea de venta de videojuegos. | |
// | |
============================================================*/ | |
using System; | |
namespace JuegosCelulares.Modelo | |
{ | |
public class EmpresaJuegos | |
{ | |
#region Campos | |
/// <summary> | |
/// Arreglo que representa las cantidades vendidas de cada juego. | |
/// </summary> | |
private int[] cantidadesVendidas; | |
/// <summary> | |
/// Conjunto de juegos que vende la empresa de juegos. | |
/// </summary> | |
private Juego[] juegos; | |
#endregion | |
#region Constantes | |
/// <summary> | |
/// Constate que representa un juego que no existe. | |
/// </summary> | |
public const string NINGUNO = "Ninguno"; | |
/// <summary> | |
/// Constante que representa el nombre del juego `Car Racer 2`. | |
/// </summary> | |
public const string NOMBRE_JUEGO1 = "Car Racer 2"; | |
/// <summary> | |
/// Constante que representa el nombre del juego `Air Attack`. | |
/// </summary> | |
public const string NOMBRE_JUEGO2 = "Air Attack"; | |
/// <summary> | |
/// Constante que representa el nombre del juego `Mini Golf 2`. | |
/// </summary> | |
public const string NOMBRE_JUEGO3 = "Mini Golf 2"; | |
/// <summary> | |
/// Constante que representa el nombre del juego `Aztec Warrior`. | |
/// </summary> | |
public const string NOMBRE_JUEGO4 = "Aztec Warrior"; | |
#endregion | |
#region Constructores | |
/// <summary> | |
/// Crea una nueva empresa de venta de juegos. | |
/// </summary> | |
public EmpresaJuegos() | |
{ | |
// Crea el arrego de juegos: | |
juegos = new Juego[4]; | |
// Crea juego por juego con valores arbitrarios y haciendo uso de las | |
// constantes definidas arriba: | |
juegos[0] = new Juego(NOMBRE_JUEGO1, CategoriaJuego.Velocidad, 30000, 300, 50); | |
juegos[1] = new Juego(NOMBRE_JUEGO2, CategoriaJuego.Accion, 55000, 2500, 15); | |
juegos[2] = new Juego(NOMBRE_JUEGO3, CategoriaJuego.Deporte, 15000, 150, 22); | |
juegos[3] = new Juego(NOMBRE_JUEGO4, CategoriaJuego.Aventura, 20000, 1000, 36); | |
// Inicialia todas las cantidades en 0: | |
cantidadesVendidas = new int[4]; | |
cantidadesVendidas[0] = 0; | |
cantidadesVendidas[1] = 0; | |
cantidadesVendidas[2] = 0; | |
cantidadesVendidas[3] = 0; | |
} | |
#endregion | |
#region Métodos: | |
/// <summary> | |
/// Calcula el descuento por la venta de varios juegos en diferentes cantidades. | |
/// </summary> | |
/// <param name="cantidadJuego1">Cantidad del juego `Car Racer 2`.</param> | |
/// <param name="cantidadJuego2">Cantidad del juego `Air Attack`.</param> | |
/// <param name="cantidadJuego3">Cantidad del juego `Mini Golf 2`.</param> | |
/// <param name="cantidadJuego4">Cantidad del juego `Aztec Warrior`.</param> | |
/// <returns></returns> | |
public string CalcularDescuento (int cantidadJuego1, int cantidadJuego2, int cantidadJuego3, int cantidadJuego4) | |
{ | |
decimal totalVenta = 0.0M; | |
// Areglo de categorías: | |
CategoriaJuego[] categoriasJuegos = new CategoriaJuego[4]; | |
categoriasJuegos[0] = CategoriaJuego.Ninguna; | |
categoriasJuegos[1] = CategoriaJuego.Ninguna; | |
categoriasJuegos[2] = CategoriaJuego.Ninguna; | |
categoriasJuegos[3] = CategoriaJuego.Ninguna; | |
cantidadesVendidas[0] = cantidadJuego1; | |
cantidadesVendidas[1] = cantidadJuego2; | |
cantidadesVendidas[2] = cantidadJuego3; | |
cantidadesVendidas[3] = cantidadJuego4; | |
for (int i = 0; i < juegos.Length; ++i) | |
{ | |
if (juegos[i] != null) | |
{ | |
totalVenta += juegos[i].Precio * cantidadesVendidas[i]; | |
categoriasJuegos[i] = juegos[i].Categoria; | |
} | |
} | |
decimal descuento = 0.0M; | |
// Calcula el descuento para juegos de acción: | |
if ((cantidadesVendidas[0] >= 25 && categoriasJuegos[0] == CategoriaJuego.Accion) || (cantidadesVendidas[1] >= 25 && categoriasJuegos[1] == CategoriaJuego.Accion) || | |
(cantidadesVendidas[2] >= 25 && categoriasJuegos[2] == CategoriaJuego.Accion) || (cantidadesVendidas[3] >= 25 && categoriasJuegos[3] == CategoriaJuego.Accion)) | |
{ | |
descuento = totalVenta * 0.15M; | |
} | |
else if ( (cantidadesVendidas[3] >= 32) || | |
((( cantidadesVendidas[0] >= 12 && categoriasJuegos[0] == CategoriaJuego.Deporte) || (cantidadesVendidas[1] >= 12 && categoriasJuegos[1] == CategoriaJuego.Deporte) || | |
(cantidadesVendidas[2] >= 12 && categoriasJuegos[2] == CategoriaJuego.Deporte) || (cantidadesVendidas[3] >= 12 && categoriasJuegos[3] == CategoriaJuego.Deporte))) && | |
((cantidadesVendidas[0] >= 15 && categoriasJuegos[0] == CategoriaJuego.Velocidad) || (cantidadesVendidas[1] >= 15 && categoriasJuegos[1] == CategoriaJuego.Velocidad) || | |
(cantidadesVendidas[2] >= 55 && categoriasJuegos[2] == CategoriaJuego.Velocidad) || (cantidadesVendidas[3] >= 15 && categoriasJuegos[3] == CategoriaJuego.Velocidad))) | |
{ | |
descuento = totalVenta * 0.10M; | |
} | |
else | |
{ | |
descuento = 0.0M; | |
} | |
decimal totalConDescuento = totalVenta - descuento; | |
string mensaje = String.Format("El valor total de su venta es: {0}\nEl descuento por su compra es: {1}\nEl valor total de su compra es: {2}", | |
totalVenta.ToString("C"), descuento.ToString("C"), totalConDescuento.ToString("C")); | |
return mensaje; | |
} | |
/// <summary> | |
/// Compra un juego para la venta en la empresa. | |
/// </summary> | |
/// <param name="nombreJuego">Nombre del juego a comprar.</param> | |
/// <param name="cantidad">Cantidad del juego a comprar.</param> | |
public void ComprarJuego(string nombreJuego, int cantidad) | |
{ | |
if (nombreJuego.Equals (NOMBRE_JUEGO1)) | |
{ | |
if (juegos[0] == null) | |
{ | |
juegos[0] = new Juego(NOMBRE_JUEGO1, CategoriaJuego.Velocidad, 30000, 300, cantidad); | |
} | |
else | |
{ | |
juegos[0].ComprarJuego(cantidad); | |
} | |
} | |
else if (nombreJuego.Equals(NOMBRE_JUEGO2)) | |
{ | |
if (juegos[1] == null) | |
{ | |
juegos[1] = new Juego(NOMBRE_JUEGO2, CategoriaJuego.Accion, 55000, 2500, cantidad); | |
} | |
else | |
{ | |
juegos[1].ComprarJuego(cantidad); | |
} | |
} | |
else if (nombreJuego.Equals(NOMBRE_JUEGO3)) | |
{ | |
if (juegos[2] == null) | |
{ | |
juegos[2] = new Juego(NOMBRE_JUEGO3, CategoriaJuego.Deporte, 15000, 150, cantidad); | |
} | |
else | |
{ | |
juegos[2].ComprarJuego(cantidad); | |
} | |
} | |
else if (nombreJuego.Equals(NOMBRE_JUEGO4)) | |
{ | |
if (juegos[3] == null) | |
{ | |
juegos[3] = new Juego(NOMBRE_JUEGO4, CategoriaJuego.Aventura, 20000, 1000, cantidad); | |
} | |
else | |
{ | |
juegos[3].ComprarJuego(cantidad); | |
} | |
} | |
} | |
/// <summary> | |
/// Obtiene la cantidad disponible de un juego en la empresa. | |
/// </summary> | |
/// <param name="nombreJuego">Nombre del juego del que se desea conocer su cantidad.</param> | |
/// <returns>Cantidad actual vendida del juego.</returns> | |
public int ObtenerCantidadActual(string nombreJuego) | |
{ | |
Juego juego = ObtenerJuego(nombreJuego); | |
if (juego != null) | |
{ | |
return juego.CantidadActual; | |
} | |
else | |
{ | |
return 0; | |
} | |
} | |
/// <summary> | |
/// Busca un juego por su nombre. | |
/// </summary> | |
/// <param name="nombreJuego">Nombre del juego a buscar.</param> | |
/// <returns>Juego más vendido.</returns> | |
public Juego ObtenerJuego(string nombreJuego) | |
{ | |
if (nombreJuego.Equals(NOMBRE_JUEGO1)) | |
{ | |
return juegos[0]; | |
} | |
else if (nombreJuego.Equals(NOMBRE_JUEGO2)) | |
{ | |
return juegos[1]; | |
} | |
else if (nombreJuego.Equals(NOMBRE_JUEGO3)) | |
{ | |
return juegos[2]; | |
} | |
else if (nombreJuego.Equals(NOMBRE_JUEGO4)) | |
{ | |
return juegos[3]; | |
} | |
else | |
{ | |
return null; | |
} | |
} | |
/// <summary> | |
/// Obtiene el juego más vendido. | |
/// </summary> | |
/// <returns>Juego más vendido en la empresa.</returns> | |
public string ObtenerJuegoMasVendido() | |
{ | |
if (cantidadesVendidas[0] == 0 && cantidadesVendidas[1] == 0 && cantidadesVendidas[2] == 0 && cantidadesVendidas[3] == 0) | |
{ | |
return NINGUNO; | |
} | |
else if (cantidadesVendidas[0] >= cantidadesVendidas[1] && cantidadesVendidas[0] >= cantidadesVendidas[2] && cantidadesVendidas[0] >= cantidadesVendidas[3]) | |
{ | |
return NOMBRE_JUEGO1; | |
} | |
else if (cantidadesVendidas[1] >= cantidadesVendidas[0] && cantidadesVendidas[1] >= cantidadesVendidas[2] && cantidadesVendidas[1] >= cantidadesVendidas[3]) | |
{ | |
return NOMBRE_JUEGO2; | |
} | |
else if (cantidadesVendidas[2] >= cantidadesVendidas[0] && cantidadesVendidas[2] >= cantidadesVendidas[1] && cantidadesVendidas[2] >= cantidadesVendidas[3]) | |
{ | |
return NOMBRE_JUEGO3; | |
} | |
else if (cantidadesVendidas[3] >= cantidadesVendidas[0] && cantidadesVendidas[3] >= cantidadesVendidas[1] && cantidadesVendidas[3] >= cantidadesVendidas[2]) | |
{ | |
return NOMBRE_JUEGO4; | |
} | |
else | |
{ | |
return NINGUNO; | |
} | |
} | |
/// <summary> | |
/// Determina qué juegos puede comprar de acuerdo a su cantidad y su precio. | |
/// </summary> | |
/// <param name="capacidad">Capacidad de memoria del dispositivo. En KB.</param> | |
/// <param name="precio">Presupuesto.</param> | |
/// <returns>Resumen de los juegos que puede comprar.</returns> | |
public string SeleccionarJuego(int capacidad, decimal precio) | |
{ | |
string respuesta = "Los juegos apropiados para usted son: "; | |
if (juegos[0] != null && juegos[0].Precio <= precio && juegos[0].TamanioKB <= capacidad) | |
{ | |
respuesta += String.Format("\n{0}", juegos[0].Nombre); | |
} | |
if (juegos[1] != null && juegos[1].Precio <= precio && juegos[1].TamanioKB <= capacidad) | |
{ | |
respuesta += String.Format("\n{0}", juegos[1].Nombre); | |
} | |
if (juegos[2] != null && juegos[2].Precio <= precio && juegos[2].TamanioKB <= capacidad) | |
{ | |
respuesta += String.Format("\n{0}", juegos[2].Nombre); | |
} | |
if (juegos[3] != null && juegos[3].Precio <= precio && juegos[3].TamanioKB <= capacidad) | |
{ | |
respuesta += String.Format("\n{0}", juegos[3].Nombre); | |
} | |
if (respuesta.Equals("Los juegos apropiados para usted son: ")) | |
{ | |
respuesta = "Ninguno de los juegos es apropiado para usted."; | |
} | |
return respuesta; | |
} | |
/// <summary> | |
/// Vende un juego. | |
/// </summary> | |
/// <param name="nombreJuego">Nombre del juego a vender.</param> | |
/// <param name="cantidad">Cantidad del juego a vender.</param> | |
/// <returns></returns> | |
public bool VenderJuego(string nombreJuego, int cantidad) | |
{ | |
bool vendio = false; | |
if (juegos[0] != null && juegos[0].Nombre.Equals(nombreJuego) && juegos[0].CantidadActual >= cantidad) | |
{ | |
cantidadesVendidas[0] = cantidadesVendidas[0] + cantidad; | |
juegos[0].VenderJuego(cantidad); | |
if (juegos[0].CantidadActual == 0) | |
{ | |
juegos[0] = null; | |
} | |
vendio = true; | |
} | |
else if (juegos[1] != null && juegos[1].Nombre.Equals(nombreJuego) && juegos[1].CantidadActual >= cantidad) | |
{ | |
cantidadesVendidas[1] = cantidadesVendidas[1] + cantidad; | |
juegos[1].VenderJuego(cantidad); | |
if (juegos[1].CantidadActual == 0) | |
{ | |
juegos[1] = null; | |
} | |
vendio = true; | |
} | |
else if (juegos[2] != null && juegos[2].Nombre.Equals(nombreJuego) && juegos[2].CantidadActual >= cantidad) | |
{ | |
cantidadesVendidas[2] = cantidadesVendidas[2] + cantidad; | |
juegos[2].VenderJuego(cantidad); | |
if (juegos[2].CantidadActual == 0) | |
{ | |
juegos[2] = null; | |
} | |
vendio = true; | |
} | |
else if (juegos[3] != null && juegos[3].Nombre.Equals(nombreJuego) && juegos[3].CantidadActual >= cantidad) | |
{ | |
cantidadesVendidas[3] = cantidadesVendidas[3] + cantidad; | |
juegos[3].VenderJuego(cantidad); | |
if (juegos[3].CantidadActual == 0) | |
{ | |
juegos[3] = null; | |
} | |
vendio = true; | |
} | |
return vendio; | |
} | |
#endregion | |
#region Puntos de extensión | |
/// <summary> | |
/// Punto de extensión no. 1. | |
/// </summary> | |
/// <returns>Respuesta del punto de extensión.</returns> | |
public string PuntoExtension1() | |
{ | |
return "Respuesta"; | |
} | |
/// <summary> | |
/// Punto de extensión no. 2. | |
/// </summary> | |
/// <returns>Respuesta del punto de extensión.</returns> | |
public string PuntoExtension2() | |
{ | |
return "Respuesta"; | |
} | |
#endregion | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment