Advertisement
Fhernd

Tienda.cs

Jul 6th, 2014
2,180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.34 KB | None | 0 0
  1. // ===++===
  2. //
  3. //  OrtizOL
  4. //
  5. // ===--===
  6. /*============================================================
  7. //
  8. // Clase: Tienda.cs
  9. //
  10. // Original en: http://goo.gl/18NpRF
  11. //
  12. // Propósito: Representar a la entidad Tienda en una clase.
  13. //
  14. ============================================================*/
  15.  
  16. using System;
  17.  
  18. namespace LaTienda.Modelo
  19. {
  20.     /// <summary>
  21.     /// Representa a la entidad Tienda del modelo del mundo del problema.
  22.     /// </summary>
  23.     public class Tienda
  24.     {
  25.         #region Campos
  26.         /// <summary>
  27.         /// Cantidad de dinero en la caja.
  28.         /// </summary>
  29.         private decimal dineroEnCaja;
  30.         /// <summary>
  31.         /// Los productos que venden en la tienda.
  32.         /// </summary>
  33.         private Producto[] productos;
  34.         #endregion
  35.  
  36.         #region Propiedades
  37.         /// <summary>
  38.         /// Obtiene los productos que se venden en la tienda.
  39.         /// </summary>
  40.         public Producto[] Productos
  41.         {
  42.             get
  43.             {
  44.                 return productos;
  45.             }
  46.         }
  47.         #endregion
  48.  
  49.         #region Constructores
  50.         /// <summary>
  51.         /// Crea una instancia de Tienda con un conjunto productos.
  52.         /// </summary>
  53.         /// <param name="productos">Conjunto de productos a vender.</param>
  54.         public Tienda(Producto[] productos)
  55.         {
  56.             this.productos = productos;
  57.         }
  58.         /// <summary>
  59.         /// Crea una instancia de Tienda con 4 productos.
  60.         /// </summary>
  61.         /// <param name="producto1">Producto no. 1 a vender.</param>
  62.         /// <param name="producto2">Producto no. 2 a vender.</param>
  63.         /// <param name="producto3">Producto no. 3 a vender.</param>
  64.         /// <param name="producto4">Producto no. 4 a vender.</param>
  65.         public Tienda(Producto producto1, Producto producto2, Producto producto3, Producto producto4)
  66.         {
  67.             productos = new Producto[4];
  68.  
  69.             productos[0] = producto1;
  70.             productos[1] = producto2;
  71.             productos[2] = producto3;
  72.             productos[3] = producto4;
  73.         }
  74.         #endregion
  75.  
  76.         #region Métodos
  77.         /// <summary>
  78.         /// Calcula las ganancias totales por ventas de productos.
  79.         /// </summary>
  80.         /// <returns>Cantidad de dinero obtenido por ventas.</returns>
  81.         public decimal CalcularGananciasTotales()
  82.         {
  83.             return dineroEnCaja;
  84.         }
  85.         /// <summary>
  86.         /// Determina el producto más vendido en la tienda.
  87.         /// </summary>
  88.         /// <returns>Producto más vendido.</returns>
  89.         public Producto CalcularProductoMasVendido()
  90.         {
  91.             Producto masVendido = productos[0];
  92.  
  93.             foreach (Producto producto in productos)
  94.             {
  95.                 if (producto.CantidadVendida > masVendido.CantidadVendida)
  96.                 {
  97.                     masVendido = producto;
  98.                 }
  99.             }
  100.  
  101.             return masVendido;
  102.         }
  103.         /// <summary>
  104.         /// Determian el producto menos vendido en la tienda.
  105.         /// </summary>
  106.         /// <returns>Producto menos vendido.</returns>
  107.         public Producto CalcularProductoMenosVendido()
  108.         {
  109.             Producto menosVendido = productos[0];
  110.  
  111.             foreach (Producto producto in productos)
  112.             {
  113.                 if (producto.CantidadVendida < menosVendido.CantidadVendida)
  114.                 {
  115.                     menosVendido = producto;
  116.                 }
  117.             }
  118.  
  119.             return menosVendido;
  120.         }
  121.         /// <summary>
  122.         /// Calcula el promedio de ventas de los productos.
  123.         /// </summary>
  124.         /// <returns>Promedio de ventas de los productos.</returns>
  125.         public decimal CalcularPromedioVentas()
  126.         {
  127.             int totalUnidadesVendidas = 0;
  128.  
  129.             foreach (Producto producto in productos)
  130.             {
  131.                 totalUnidadesVendidas += producto.CantidadVendida;
  132.             }
  133.  
  134.             if (totalUnidadesVendidas == 0)
  135.             {
  136.                 return 0.0M;
  137.             }
  138.             else
  139.             {
  140.                 return dineroEnCaja / totalUnidadesVendidas;
  141.             }
  142.         }
  143.         /// <summary>
  144.         /// Obtiene un producto por su código (1-4).
  145.         /// </summary>
  146.         /// <param name="id">Código (1-4) del producto.</param>
  147.         /// <returns>Producto obtenido.</returns>
  148.         public Producto ObtenerProducto(int id)
  149.         {
  150.             return productos[id - 1];
  151.         }
  152.         /// <summary>
  153.         /// Obtiene un producto por su nombre.
  154.         /// </summary>
  155.         /// <param name="nombre">Nombre del producto a obtener.</param>
  156.         /// <returns>Producto obtenido.</returns>
  157.         public Producto ObtenerProducto(string nombre)
  158.         {
  159.             Producto producto = null;
  160.  
  161.             foreach (Producto prod in productos)
  162.             {
  163.                 if (prod.Nombre.Equals(nombre))
  164.                 {
  165.                     producto = prod;
  166.                 }
  167.             }
  168.  
  169.             return producto;
  170.         }
  171.         /// <summary>
  172.         /// Realiza un pedido de un determinado producto.
  173.         /// </summary>
  174.         /// <param name="nombre">Nombre del producto a pedir.</param>
  175.         /// <param name="cantidad">Cantidad del producto a pedir.</param>
  176.         /// <returns>true si es necesario realizar el pedido; false en caso contrario.</returns>
  177.         public bool RealizarPedido(string nombre, int cantidad)
  178.         {
  179.             Producto producto = ObtenerProducto(nombre);
  180.  
  181.             if (producto != null)
  182.             {
  183.                 if (producto.EsNecesarioHacerPedido())
  184.                 {
  185.                     producto.HacerPedido(cantidad);
  186.                     return true;
  187.                 }
  188.                 else
  189.                 {
  190.                     return false;
  191.                 }
  192.             }
  193.             else
  194.             {
  195.                 return false;
  196.             }
  197.         }
  198.         /// <summary>
  199.         /// Vende un producto.
  200.         /// </summary>
  201.         /// <param name="nombre">Nombre del producto a vender.</param>
  202.         /// <param name="cantidad">Cantidad del producto a vender.</param>
  203.         /// <returns>Cantidad de producto vendida.</returns>
  204.         public int VenderProducto(string nombre, int cantidad)
  205.         {
  206.             Producto producto = ObtenerProducto(nombre);
  207.             int cantidadVendida = 0;
  208.  
  209.             if (producto != null)
  210.             {
  211.                 cantidadVendida = producto.Vender(cantidad);
  212.                 dineroEnCaja += cantidadVendida * producto.CalcularPrecionalFinal();
  213.  
  214.                 return cantidadVendida;
  215.             }
  216.             else
  217.             {
  218.                 return cantidadVendida;
  219.             }
  220.         }
  221.         #endregion
  222.  
  223.         #region Métodos de extensión
  224.         /// <summary>
  225.         /// Método de extensión no. 1.
  226.         /// </summary>
  227.         /// <returns>Cadena de caracteres.</returns>
  228.         public string Metodo1()
  229.         {
  230.             return "Respuesta 1";
  231.         }
  232.         /// <summary>
  233.         /// Método de extensión no. 2.
  234.         /// </summary>
  235.         /// <returns>Cadena de caracteres.</returns>
  236.         public string Metodo2()
  237.         {
  238.             return "Respuesta 2";
  239.         }
  240.         #endregion
  241.     }
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement