Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ===++===
- //
- // OrtizOL
- //
- // ===--===
- /*============================================================
- //
- // Clase: Tienda.cs
- //
- // Original en: http://goo.gl/18NpRF
- //
- // Propósito: Representar a la entidad Tienda en una clase.
- //
- ============================================================*/
- using System;
- namespace LaTienda.Modelo
- {
- /// <summary>
- /// Representa a la entidad Tienda del modelo del mundo del problema.
- /// </summary>
- public class Tienda
- {
- #region Campos
- /// <summary>
- /// Cantidad de dinero en la caja.
- /// </summary>
- private decimal dineroEnCaja;
- /// <summary>
- /// Los productos que venden en la tienda.
- /// </summary>
- private Producto[] productos;
- #endregion
- #region Propiedades
- /// <summary>
- /// Obtiene los productos que se venden en la tienda.
- /// </summary>
- public Producto[] Productos
- {
- get
- {
- return productos;
- }
- }
- #endregion
- #region Constructores
- /// <summary>
- /// Crea una instancia de Tienda con un conjunto productos.
- /// </summary>
- /// <param name="productos">Conjunto de productos a vender.</param>
- public Tienda(Producto[] productos)
- {
- this.productos = productos;
- }
- /// <summary>
- /// Crea una instancia de Tienda con 4 productos.
- /// </summary>
- /// <param name="producto1">Producto no. 1 a vender.</param>
- /// <param name="producto2">Producto no. 2 a vender.</param>
- /// <param name="producto3">Producto no. 3 a vender.</param>
- /// <param name="producto4">Producto no. 4 a vender.</param>
- public Tienda(Producto producto1, Producto producto2, Producto producto3, Producto producto4)
- {
- productos = new Producto[4];
- productos[0] = producto1;
- productos[1] = producto2;
- productos[2] = producto3;
- productos[3] = producto4;
- }
- #endregion
- #region Métodos
- /// <summary>
- /// Calcula las ganancias totales por ventas de productos.
- /// </summary>
- /// <returns>Cantidad de dinero obtenido por ventas.</returns>
- public decimal CalcularGananciasTotales()
- {
- return dineroEnCaja;
- }
- /// <summary>
- /// Determina el producto más vendido en la tienda.
- /// </summary>
- /// <returns>Producto más vendido.</returns>
- public Producto CalcularProductoMasVendido()
- {
- Producto masVendido = productos[0];
- foreach (Producto producto in productos)
- {
- if (producto.CantidadVendida > masVendido.CantidadVendida)
- {
- masVendido = producto;
- }
- }
- return masVendido;
- }
- /// <summary>
- /// Determian el producto menos vendido en la tienda.
- /// </summary>
- /// <returns>Producto menos vendido.</returns>
- public Producto CalcularProductoMenosVendido()
- {
- Producto menosVendido = productos[0];
- foreach (Producto producto in productos)
- {
- if (producto.CantidadVendida < menosVendido.CantidadVendida)
- {
- menosVendido = producto;
- }
- }
- return menosVendido;
- }
- /// <summary>
- /// Calcula el promedio de ventas de los productos.
- /// </summary>
- /// <returns>Promedio de ventas de los productos.</returns>
- public decimal CalcularPromedioVentas()
- {
- int totalUnidadesVendidas = 0;
- foreach (Producto producto in productos)
- {
- totalUnidadesVendidas += producto.CantidadVendida;
- }
- if (totalUnidadesVendidas == 0)
- {
- return 0.0M;
- }
- else
- {
- return dineroEnCaja / totalUnidadesVendidas;
- }
- }
- /// <summary>
- /// Obtiene un producto por su código (1-4).
- /// </summary>
- /// <param name="id">Código (1-4) del producto.</param>
- /// <returns>Producto obtenido.</returns>
- public Producto ObtenerProducto(int id)
- {
- return productos[id - 1];
- }
- /// <summary>
- /// Obtiene un producto por su nombre.
- /// </summary>
- /// <param name="nombre">Nombre del producto a obtener.</param>
- /// <returns>Producto obtenido.</returns>
- public Producto ObtenerProducto(string nombre)
- {
- Producto producto = null;
- foreach (Producto prod in productos)
- {
- if (prod.Nombre.Equals(nombre))
- {
- producto = prod;
- }
- }
- return producto;
- }
- /// <summary>
- /// Realiza un pedido de un determinado producto.
- /// </summary>
- /// <param name="nombre">Nombre del producto a pedir.</param>
- /// <param name="cantidad">Cantidad del producto a pedir.</param>
- /// <returns>true si es necesario realizar el pedido; false en caso contrario.</returns>
- public bool RealizarPedido(string nombre, int cantidad)
- {
- Producto producto = ObtenerProducto(nombre);
- if (producto != null)
- {
- if (producto.EsNecesarioHacerPedido())
- {
- producto.HacerPedido(cantidad);
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- /// <summary>
- /// Vende un producto.
- /// </summary>
- /// <param name="nombre">Nombre del producto a vender.</param>
- /// <param name="cantidad">Cantidad del producto a vender.</param>
- /// <returns>Cantidad de producto vendida.</returns>
- public int VenderProducto(string nombre, int cantidad)
- {
- Producto producto = ObtenerProducto(nombre);
- int cantidadVendida = 0;
- if (producto != null)
- {
- cantidadVendida = producto.Vender(cantidad);
- dineroEnCaja += cantidadVendida * producto.CalcularPrecionalFinal();
- return cantidadVendida;
- }
- else
- {
- return cantidadVendida;
- }
- }
- #endregion
- #region Métodos de extensión
- /// <summary>
- /// Método de extensión no. 1.
- /// </summary>
- /// <returns>Cadena de caracteres.</returns>
- public string Metodo1()
- {
- return "Respuesta 1";
- }
- /// <summary>
- /// Método de extensión no. 2.
- /// </summary>
- /// <returns>Cadena de caracteres.</returns>
- public string Metodo2()
- {
- return "Respuesta 2";
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement