Menu
Coddy logo textTech

Resumen - Gestor de cuentas bancarias

Parte de la sección Programación Orientada a Objetos del Journey de C# de Coddy. Lección 18 de 70.

challenge icon

Desafío

Fácil

Construyamos un sistema completo de gestión de cuentas bancarias que reúna todo lo que has aprendido sobre la arquitectura de clases. Crearás una clase BankAccount que distingue correctamente entre los datos de instancia (únicos para cada cuenta) y los datos estáticos (compartidos entre todas las cuentas), utilizando validación para mantener las cuentas en estados válidos.

Crearás dos archivos para organizar tu código:

  • BankAccount.cs: Define una clase BankAccount en el espacio de nombres Banking. Tu cuenta debe incluir:
    • Un campo const MinimumBalance establecido en 100: el saldo mínimo que todas las cuentas deben mantener
    • Un campo static InterestRate (decimal) que comienza en 0.03m: compartido entre todas las cuentas
    • Un campo static TotalAccounts (int) que registra cuántas cuentas existen
    • Un campo readonly AccountNumber (string): se establece una vez durante la creación y nunca cambia
    • Un campo privado de respaldo _ownerName con una propiedad OwnerName que elimina los espacios en blanco al establecerse
    • Un campo privado de respaldo _balance con una propiedad Balance que evita que el saldo sea inferior a MinimumBalance (si alguien intenta establecer un valor menor, mantenlo en MinimumBalance)
    • Un constructor que acepte el número de cuenta, el nombre del propietario y el saldo inicial, e incremente TotalAccounts
    • Un método estático SetInterestRate(decimal rate) para actualizar la tasa de interés compartida
    • Un método CalculateInterest() que devuelva el saldo multiplicado por la tasa de interés
  • Program.cs: En tu archivo principal, crea dos cuentas bancarias utilizando valores de entrada, actualiza la tasa de interés y muestra la información de las cuentas junto con los datos bancarios compartidos.

Recibirás siete entradas:

  • Número de la primera cuenta
  • Nombre del propietario de la primera cuenta
  • Saldo inicial de la primera cuenta
  • Número de la segunda cuenta
  • Nombre del propietario de la segunda cuenta
  • Saldo inicial de la segunda cuenta
  • Nueva tasa de interés (como un decimal, por ejemplo 0.05)

Imprime la salida con este formato:

--- Bank Summary ---
Interest Rate: {InterestRate}
Minimum Balance: {MinimumBalance}
Total Accounts: {TotalAccounts}

Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}

Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}

Por ejemplo, si las entradas son ACC001, Alice Smith , 500, ACC002, Bob Jones, 50 y 0.05, la salida debería ser:

--- Bank Summary ---
Interest Rate: 0.05
Minimum Balance: 100
Total Accounts: 2

Account: ACC001
Owner: Alice Smith
Balance: 500
Interest Earned: 25.0

Account: ACC002
Owner: Bob Jones
Balance: 100
Interest Earned: 5.0

Observa cómo el nombre de Alice pierde los espacios adicionales y cómo el saldo de Bob, que era 50, aumenta hasta el mínimo de 100. El interés se calcula utilizando la tasa actualizada de 0.05, que se estableció después de crear las cuentas.

Pruébalo tú mismo

using System;
using Banking;

class Program
{
    public static void Main(string[] args)
    {
        // Leer las entradas para la primera cuenta
        string accountNumber1 = Console.ReadLine();
        string ownerName1 = Console.ReadLine();
        decimal balance1 = Convert.ToDecimal(Console.ReadLine());
        
        // Leer las entradas para la segunda cuenta
        string accountNumber2 = Console.ReadLine();
        string ownerName2 = Console.ReadLine();
        decimal balance2 = Convert.ToDecimal(Console.ReadLine());
        
        // Leer la nueva tasa de interés
        decimal newRate = Convert.ToDecimal(Console.ReadLine());
        
        // TODO: Crear dos objetos BankAccount usando los valores de entrada
        
        // TODO: Actualizar la tasa de interés usando el método estático
        
        // TODO: Imprimir el resumen bancario en el formato requerido
        // --- Bank Summary ---
        // Interest Rate: {InterestRate}
        // Minimum Balance: {MinimumBalance}
        // Total Accounts: {TotalAccounts}
        // (línea en blanco)
        // Cuenta: {AccountNumber}
        // Propietario: {OwnerName}
        // Saldo: {Balance}
        // Interest Earned: {interest}
        // (línea en blanco)
        // Cuenta: {AccountNumber}
        // Propietario: {OwnerName}
        // Saldo: {Balance}
        // Interest Earned: {interest}
    }
}

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de C# online