Implementación de Conversor de Divisas en C#: Clase Consola
Implementación de la Clase `Consola` para Conversión de Divisas
El siguiente código corresponde a la clase Consola dentro del namespace Presentacion, la cual gestiona la interacción con el usuario para realizar conversiones de divisas utilizando una clase Conversor.
Namespace y Declaración de Clase
namespace Presentacion
{
public class Consola
{
private Conversor conversor;
// ... resto del código
}
}Constructores de la Clase `Consola`
Constructor por Defecto
Inicializa la instancia del conversor internamente.
// Postcondición: Inicializamos el atributo conversor.
public Consola()
{
this.conversor = new Conversor();
}Constructor con Parámetro
Permite inyectar una instancia existente de Conversor.
// Precondición: La variable pasada por parámetro debe existir.
// Postcondición: Asignamos a nuestro atributo conversor, la variable pasada por parámetro.
public Consola(Conversor c)
{
this.conversor = c;
}Método Principal: `menu()`
Este método orquesta la interacción con el usuario, mostrando divisas, solicitando las divisas de origen y destino, y pidiendo la cantidad a convertir, incluyendo validaciones robustas.
1. Mostrar Divisas Disponibles
Se listan todas las divisas soportadas por el sistema.
// Postcondición: (Explicación en su respectivo apartado)
public void menu()
{
// Vamos a mostrar todas las divisas existentes.
Console.WriteLine("Lista de todas las divisas");
List l = new List();
l = Conversor.mostrarDivisas();
for (int i = 0; i < l.Count; i++)
{
Console.WriteLine(l[i]);
}
2. Solicitud y Validación de Divisa de Origen (`d1`)
Se solicita la divisa de origen y se valida su existencia contra la lista disponible. El bucle se repite hasta que se introduce una divisa válida.
// Cuando escribimos por pantalla una divisa, vamos a comprobar si coincide exactamente con las divisas mostradas anteriormente,
// sino se volverá a mostrar el mensaje hasta que se introduzca la divisa correctamente.
String d1 = "";
do {
Console.WriteLine("Introduzca la divisa que quiere convertir");
d1 = Console.ReadLine();
} while (!Conversor.ExisteDiv(d1));
3. Solicitud y Validación de Divisa de Destino (`d2`)
Se solicita la divisa a la que se desea convertir, validando también su existencia.
// Cuando escribimos por pantalla una divisa, vamos a comprobar si coincide exactamente con las divisas mostradas anteriormente,
// sino se volverá a mostrar el mensaje hasta que se introduzca la divisa correctamente.
String d2 = "";
do {
Console.WriteLine("Vamos a convertir la divisa " + d1 + " a la divisa :");
d2 = Console.ReadLine();
} while (!Conversor.ExisteDiv(d2));
4. Solicitud y Validación de Cantidad
Se solicita la cantidad numérica a convertir. Se implementa una validación estricta para asegurar que la entrada sea un número double positivo.
Lógica de Validación de Cantidad
- Se intenta convertir la entrada de texto (`s`) a un número doble (`c`) usando
Double.TryParse. - Si falla la conversión (es un carácter no numérico), se notifica al usuario.
- Si la conversión es exitosa, se verifica si el valor es positivo (`c > 0`).
- Si es negativo, se notifica al usuario.
- Solo si es un número positivo válido, se procede a la conversión y se muestra el resultado.
// Vamos a introducir la cantidad que queremos convertir a la nueva divisa, se volverá a mostrar el mensaje si el valor introducido
// es un carácter o un número negativo y además mostrará su propio mensaje mostrando qué se ha introducido, una vez que se haya
// introducido un número positivo se calculará perfectamente su valor.
String s = "";
double c = 0;
do
{
Console.WriteLine("Introduce la cantidad ");
s=Console.ReadLine();
if ( !Double.TryParse(s,out c))
{
Console.WriteLine("El valor introducido es un carácter");
}
else
{
if (c>0)
{
double r = this.conversor.Convertir(d1, d2, c);
Console.WriteLine("La cantidad de la divisa " + d2 + " es de: " + r);
}
else
{
Console.WriteLine("El valor introducido es un número menor que cero");
}
}
} while ( (c<0) || (!Double.TryParse(s, out c)) );
}