Created
June 23, 2014 01:09
-
-
Save Fhernd/d1797de07d0022d1841e to your computer and use it in GitHub Desktop.
Representa la entidad Alcancia.
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: 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