Código Fuente de Ejemplo
Contador.cs
public class Contador
{
//Campos Privados
//Valor del Contador
private int Valor = 0;
//Valor a decrementar
private int Paso = 1;
//Valor Máximo del Contador
private int Max = 99;
//Valor Mínimo del Contador
private int Min = 0;
//Desfase Superior e Inferior al Valor Máximo
private int DesfaseSuperior = 0;
private int DesfaseInferior = 0;
//Método Constructor por Omisión
public Contador()
{
Valor = 0;
}
//Método Constructor Sobrecargado (Overloaded)
public Contador(int Valor)
{
setValor(Valor);
}
//Método Asigna o Inicializa el Valor del Contador
public void setValor(int Valor)
{
if (Valor > Min)
{
this.Valor = Valor;
if (this.Valor > Max)
{
DesfaseSuperior = (this.Valor - Max) / 2;
if (DesfaseSuperior < Min) DesfaseSuperior = Min;
DesfaseInferior = this.Valor - Max - DesfaseSuperior;
DesfaseInferior = (DesfaseInferior < Min) ? Min : DesfaseInferior;
this.Valor = this.Valor - DesfaseSuperior - DesfaseInferior;
}
}
else
this.Valor = Min;
}
//Tag para agregar comentarios generados por el compilador
/// <summary>
/// Retorna Valores entre Max y Min
/// Repite Max y Min varias veces para
/// representar el valor completo
/// </summary>
/// <returns>int</returns>
public int decrementar()
{
int ValorRetorno = Min;
if ( (Valor + DesfaseSuperior) > Max)
{
ValorRetorno = Max;
//Si el DesfaseSuperior es Mayor que Paso solo resta
if (DesfaseSuperior > Paso)
DesfaseSuperior -= Paso;
else
{ //Sino la diferencia la aplica a Valor
//Variable Diferencai declarada dentro de un bloque
int Diferencia = DesfaseSuperior - Paso;
DesfaseSuperior = 0;
//Operador Terciario
Valor = (Valor > Diferencia) ? Valor - Diferencia
: Min;
}
}
else if (Valor + DesfaseInferior > Paso)
{
if (Valor > Paso)
{
Valor = Valor - Paso;
ValorRetorno = Valor;
}
else
{
int Diferencia = Valor - Paso;
// TODO : Validar si es 0 o Min
Valor = 0;
if (DesfaseInferior > Diferencia)
{
// TODO : Validar si esta es la mejor forma
ValorRetorno = Min + 1;
DesfaseInferior = DesfaseInferior + Diferencia;
}
else
{
// TODO : Validar si es 0 o Min
Valor = 0;
DesfaseInferior = 0;
ValorRetorno = Min;
}
}
}
return ValorRetorno;
}
}
Program.cs
class Program
{
static void Main(string[] args)
{
int Segundos = 120, Despliegue = 0, i = Segundos;
//Declaración de un Objeto e Instancia
Contador xCont = new Contador(Segundos);
//Invoca al Método del Objeto y Presenta Resultados
do
{
//Invoca el método de la Clase
Despliegue = xCont.decrementar();
//Muestra Datos, la ventana de la consola
//Debe tener 120 columnas.
Console.Write("{0,3}) {1:d2} ",
i, Despliegue);
//Decrementa i
i--;
} while (Despliegue > 0);
//Espera por una tecla presionada
Console.ReadKey();
}
}
No hay comentarios.:
Publicar un comentario