Menu
Coddy logo textTech

Recapitulação - Gerenciador de Conta Bancária

Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 18 de 70.

challenge icon

Desafio

Fácil

Vamos construir um sistema completo de gerenciamento de contas bancárias que reúne tudo o que você aprendeu sobre arquitetura de classes. Você criará uma classe BankAccount que distingue adequadamente entre dados de instância (exclusivos para cada conta) e dados estáticos (compartilhados entre todas as contas), enquanto usa validação para manter as contas em estados válidos.

Você criará dois arquivos para organizar seu código:

  • BankAccount.cs: Defina uma classe BankAccount no namespace Banking. Sua conta deve incluir:
    • Um campo const MinimumBalance definido como 100 - o saldo mínimo que todas as contas devem manter
    • Um campo static InterestRate (decimal) que começa em 0.03m - compartilhado entre todas as contas
    • Um campo static TotalAccounts (int) que rastreia quantas contas existem
    • Um campo readonly AccountNumber (string) - definido uma vez durante a criação e nunca alterado
    • Um campo de suporte privado _ownerName com uma propriedade OwnerName que remove espaços em branco (trim) ao ser definida
    • Um campo de suporte privado _balance com uma propriedade Balance que impede que o saldo fique abaixo de MinimumBalance (se alguém tentar defini-lo como inferior, mantenha-o em MinimumBalance)
    • Um construtor que aceita o número da conta, o nome do proprietário e o saldo inicial, e incrementa TotalAccounts
    • Um método estático SetInterestRate(decimal rate) para atualizar a taxa de juros compartilhada
    • Um método CalculateInterest() que retorna o saldo multiplicado pela taxa de juros
  • Program.cs: No seu arquivo principal, crie duas contas bancárias usando valores de entrada, atualize a taxa de juros e exiba as informações da conta junto com os dados bancários compartilhados.

Você receberá sete entradas:

  • Número da primeira conta
  • Nome do primeiro proprietário
  • Saldo inicial da primeira conta
  • Número da segunda conta
  • Nome do segundo proprietário
  • Saldo inicial da segunda conta
  • Nova taxa de juros (como um decimal como 0.05)

Imprima a saída neste 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 exemplo, se as entradas forem ACC001, Alice Smith , 500, ACC002, Bob Jones, 50, e 0.05, a saída deve 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

Observe como o nome de Alice tem os espaços extras removidos e o saldo de 50 de Bob é elevado para o mínimo de 100. Os juros são calculados usando a taxa atualizada de 0.05 que foi definida após a criação das contas.

Experimente você mesmo

using System;
using Banking;

class Program
{
    public static void Main(string[] args)
    {
        // Lê as entradas para a primeira conta
        string accountNumber1 = Console.ReadLine();
        string ownerName1 = Console.ReadLine();
        decimal balance1 = Convert.ToDecimal(Console.ReadLine());
        
        // Lê as entradas para a segunda conta
        string accountNumber2 = Console.ReadLine();
        string ownerName2 = Console.ReadLine();
        decimal balance2 = Convert.ToDecimal(Console.ReadLine());
        
        // Lê a nova taxa de juros
        decimal newRate = Convert.ToDecimal(Console.ReadLine());
        
        // TODO: Criar dois objetos BankAccount usando os valores de entrada
        
        // TODO: Atualizar a taxa de juros usando o método estático
        
        // TODO: Imprimir o resumo do banco no formato exigido
        // --- Bank Summary ---
        // Interest Rate: {InterestRate}
        // Minimum Balance: {MinimumBalance}
        // Total Accounts: {TotalAccounts}
        // (linha em branco)
        // Account: {AccountNumber}
        // Owner: {OwnerName}
        // Balance: {Balance}
        // Interest Earned: {interest}
        // (linha em branco)
        // Account: {AccountNumber}
        // Owner: {OwnerName}
        // Balance: {Balance}
        // Interest Earned: {interest}
    }
}

Todas as lições de Programação Orientada a Objetos