Implementación de Conversor de Divisas en C#: Clase Consola

Informática y Telecomunicaciones4,78 KB

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)) );
}

Descargar

PDF Word HTML