Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created June 23, 2014 01:09
Show Gist options
  • Save Fhernd/d1797de07d0022d1841e to your computer and use it in GitHub Desktop.
Save Fhernd/d1797de07d0022d1841e to your computer and use it in GitHub Desktop.
Representa la entidad Alcancia.
// ===++===
//
// OrtizOL
//
// ===--===
/*============================================================
//
// Clase: Alcancia.
//
// Original en: http://goo.gl/uztrer
//
// Propósito: Implementar la clase Alcancia del modelo.
//
============================================================*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Alcancia.Modelo
{
/// <summary>
/// Entidad Alcancia del modelo del mundo del problema.
/// </summary>
public class Alcancia
{
#region Campos
/// <summary>
/// Los contadores de las denominaciones.
/// </summary>
private int[] contadoresDenominacion;
/// <summary>
/// Representa el estado de la alcancia (rota o nueva).
/// </summary>
private bool estadoAlcancia;
#endregion
#region Propiedades
/// <summary>
/// Recupera el estado de la alcancía.
/// </summary>
public bool EstadoAlcancia
{
get
{
return estadoAlcancia;
}
}
#endregion
#region Constructores
/// <summary>
/// Crea una instancia de la alcancía.
/// </summary>
public Alcancia()
{
contadoresDenominacion = new int[5];
// Inicializa todos los contadores en 0:
for (int i = 0; i < contadoresDenominacion.Length; ++i)
{
contadoresDenominacion[i] = 0;
}
// La alcancía no está rota a la hora de su creación:
estadoAlcancia = false;
}
#endregion
#region Métodos
/// <summary>
/// Agrega una moneda de una determinada denominación.
/// </summary>
/// <param name="denominacion">Denominación (20, 50, 100, 200, 500) de la moneda.</param>
public void AgregarMoneda(Moneda denominacion)
{
switch (denominacion)
{
case Moneda.Veinte:
++contadoresDenominacion[0];
return;
case Moneda.Cincuenta:
++contadoresDenominacion[1];
return;
case Moneda.Cien:
++contadoresDenominacion[2];
return;
case Moneda.Doscientos:
++contadoresDenominacion[3];
return;
case Moneda.Quinientos:
++contadoresDenominacion[4];
return;
}
}
/// <summary>
/// Calcula la cantidad de dinero que haya en la alcancía.
/// </summary>
/// <returns>Total dinero en la alcancía.</returns>
public decimal CalcularTotalDinero()
{
decimal totalDinero = 0.0M;
totalDinero = 20 * contadoresDenominacion[0] + 50 * contadoresDenominacion[1] + 100 * contadoresDenominacion[2] +
200 * contadoresDenominacion[3] + 500 * contadoresDenominacion[4];
return totalDinero;
}
/// <summary>
/// Cuenta la cantidad de monedas de una determinada denominación.
/// </summary>
/// <param name="denominacion">Denominación (20, 50, 100, 200, 500) de la moneda.</param>
/// <returns>Cantidad de monedas de la denominación dada.</returns>
public int ContarMonedas(Moneda denominacion)
{
switch (denominacion)
{
case Moneda.Veinte:
return contadoresDenominacion[0];
case Moneda.Cincuenta:
return contadoresDenominacion[1];
case Moneda.Cien:
return contadoresDenominacion[2];
case Moneda.Doscientos:
return contadoresDenominacion[3];
default:
return contadoresDenominacion[4];
}
}
/// <summary>
/// Rompe la alcancía y cambia su estado a rota.
/// </summary>
public void RomperAlcancia()
{
estadoAlcancia = true;
}
#endregion
#region Métodos de extensión
/// <summary>
/// Método de extensión no. 1.
/// </summary>
/// <returns>Mensaje de demostración.</returns>
public string MetodoExtension1()
{
return "Respuesta 1";
}
/// <summary>
/// Método de extensión no. 2.
/// </summary>
/// <returns>Mensaje de demostración.</returns>
public string MetodoExtension2()
{
return "Respuesta 2;";
}
#endregion
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment