Código Fuente de Ejemplo
Contador.cs
Se agrega el método getValor() a la clase Contador.
//Método que Retorna el Valor actual
del Contador
//Incluyendo el
Desfase Superior e Inferior.
public int
getValor()
{
return (Valor + DesfaseInferior + DesfaseSuperior);
}
Semaforo.cs
Clase que representa los 3 colores del Semáforo y un contador
en segundos para cada color.
/// <summary>
/// Representa los 3 colores del Semáforo
/// </summary>
public class Semaforo
{
/// <summary>
/// Enumeración de los Colores
/// </summary>
public enum Color : int { Verde, Amarillo, Rojo }
//Arreglo de
los 3 Contadores
Contador[] ContxColor;
/// <summary>
/// Constructor por omisión (sin argumentos)
/// </summary>
public Semaforo()
{
//Instancia el
Arreglo
ContxColor = new Contador[3];
//Instancia
cada Contador del Arreglo
ContxColor[(int)Color.Verde] = new Contador(15);
ContxColor[(int)Color.Amarillo] = new Contador(15);
ContxColor[(int)Color.Rojo] = new Contador(15);
}
/// <summary>
/// Constructor con Segundos para cada color especificados
/// en los argumentos
/// </summary>
/// <param name="Verde">Cantidad de Segundos Verde</param>
/// <param name="Amarillo">Cantidad de Segundos Amarillo</param>
/// <param name="Rojo">Cantidad de Segundos Rojo</param>
public Semaforo(int Verde, int Amarillo, int Rojo)
{
//Instancia el
Arreglo
ContxColor = new Contador[3];
//Instancia
cada Contador del Arreglo
ContxColor[(int)Color.Verde] = new Contador(Verde);
ContxColor[(int)Color.Amarillo] = new Contador(Amarillo);
ContxColor[(int)Color.Rojo] = new Contador(Rojo);
}
/// <summary>
/// Invoca al método decrementar de la clase Contador
/// </summary>
/// <param name="ColorSemaforo">El argumento específica que
/// color del Semáforo va a decrementar
/// </param>
/// <returns></returns>
private int decrementarColor(Color ColorSemaforo)
{
return ContxColor[(int)ColorSemaforo].decrementar();
}
/// <summary>
/// Decrementa el contador del Color
Verde
/// </summary>
/// <returns></returns>
public int
decrementarVerde()
{
return decrementarColor(Color.Verde);
}
/// <summary>
/// Decrementa el contador del Color
Amarillo
/// </summary>
/// <returns></returns>
public int decrementarAmarillo()
{
return decrementarColor(Color.Amarillo);
}
/// <summary>
/// Decrementa el Contador del Color
Rojo
/// </summary>
/// <returns></returns>
public int decrementarRojo()
{
return decrementarColor(Color.Rojo);
}
//Propiedades
que Devuelven el Valor en Segundos
//de Cada Color
public int Verde
{
get { return ContxColor[(int)Color.Verde].getValor(); }
}
public int Amarillo
{
get { return ContxColor[(int)Color.Amarillo].getValor(); }
}
public int Rojo
{
get { return ContxColor[(int)Color.Rojo].getValor(); }
}
}
Program.cs
Se agrega el método para Probar la Clase Semaforo.
/// <summary>
/// Prueba un Semáforo específico
/// a decrementar los contadores de los 3 colores
/// </summary>
/// <param name="mSemaforo"></param>
static void TestSemaforo(Semaforo mSemaforo)
{
int i = 0, Despliegue = 0;
//Verde
Console.WriteLine("Verde");
do
{
Despliegue =
mSemaforo.decrementarVerde();
i++;
//Muestra
Datos.
Console.Write("{0,3}) {1:d2} ",
i, Despliegue);
} while (Despliegue>0);
Console.WriteLine();
//Amarillo
Console.WriteLine("Amarillo");
do
{
Despliegue =
mSemaforo.decrementarAmarillo();
i++;
//Muestra
Datos.
Console.Write("{0,3}) {1:d2} ",
i, Despliegue);
} while (Despliegue > 0);
Console.WriteLine();
//Rojo
Console.WriteLine("Rojo");
do
{
Despliegue =
mSemaforo.decrementarRojo();
i++;
//Muestra
Datos.
Console.Write("{0,3}) {1:d2} ",
i, Despliegue);
} while (Despliegue > 0);
Console.WriteLine();
}
/// <summary>
/// Crea dos objetos en base a la Clase Semaforo
/// y prueba funcionamiento.
/// </summary>
static void
TestSemaforos()
{
//Dos Objetos
Tipo Semaforo
Semaforo S1, S2;
//Semáforo con
constructor por omisión
S1 = new Semaforo();
//Semáforo con
constructor
S2 = new Semaforo(45, 5, 50);
Console.WriteLine();
Console.WriteLine("Prueba Semáforo 1");
TestSemaforo(S1);
Console.WriteLine();
Console.WriteLine("Prueba Semáforo 2");
TestSemaforo(S2);
}
static void Main(string[] args)
{
//TestContador();
TestSemaforos();
//TestSerializarJSON();
//Espera por
una tecla presionada
Console.ReadKey();
}
No hay comentarios.:
Publicar un comentario