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

Vamos a construir 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 distinga adecuadamente 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 rastrea cuántas cuentas existen
    • Un campo readonly AccountNumber (string) - se establece una vez durante la creación y nunca cambia
    • Un campo de respaldo privado _ownerName con una propiedad OwnerName que elimina los espacios en blanco (trim) al establecerse
    • Un campo de respaldo privado _balance con una propiedad Balance que evita que el saldo baje de MinimumBalance (si alguien intenta establecerlo más bajo, mantenlo en MinimumBalance)
    • Un constructor que acepta el número de cuenta, el nombre del propietario y el saldo inicial, e incrementa TotalAccounts
    • Un método estático SetInterestRate(decimal rate) para actualizar la tasa de interés compartida
    • Un método CalculateInterest() que devuelve 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 la cuenta junto con los datos bancarios compartidos.

Recibirás siete entradas:

  • Primer número de cuenta
  • Primer nombre del propietario
  • Primer saldo inicial
  • Segundo número de cuenta
  • Segundo nombre del propietario
  • Segundo saldo inicial
  • Nueva tasa de interés (como un decimal como 0.05)

Imprime la salida en 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 se recorta de espacios adicionales y el saldo de Bob de 50 se eleva al 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
        // --- Resumen Bancario ---
        // Tasa de Interés: {InterestRate}
        // Saldo Mínimo: {MinimumBalance}
        // Total de Cuentas: {TotalAccounts}
        // (línea en blanco)
        // Cuenta: {AccountNumber}
        // Propietario: {OwnerName}
        // Saldo: {Balance}
        // Interés Ganado: {interest}
        // (línea en blanco)
        // Cuenta: {AccountNumber}
        // Propietario: {OwnerName}
        // Saldo: {Balance}
        // Interés Ganado: {interest}
    }
}

Todas las lecciones de Programación Orientada a Objetos