Menu
Coddy logo textTech

Recapitulação - Gerenciador de Conta Bancária

Parte da seção Programação Orientada a Objetos do Journey de Dart da Coddy — lição 22 de 110.

challenge icon

Desafio

Fácil

Vamos construir um sistema de gerenciamento de contas bancárias que reúne todos os conceitos de propriedades de classe que você aprendeu neste capítulo. Você criará um sistema que rastreia dados de contas individuais e, ao mesmo tempo, mantém estatísticas de todo o banco.

Você organizará seu código em dois arquivos:

  • bank_account.dart: Defina uma classe BankAccount que gerencia contas individuais e rastreia estatísticas gerais do banco. Sua classe deve incluir:
    • Um final String accountNumber que não pode ser alterado após a criação
    • Uma String holderName para o nome do titular da conta
    • Um campo privado double _balance começando em 0.0
    • Um static int totalAccounts começando em 0 para rastrear quantas contas existem
    • Um static double totalDeposits começando em 0.0 para rastrear todos os depósitos feitos em todo o banco
    • Um construtor que recebe accountNumber e holderName, e incrementa totalAccounts
    • Um getter balance que retorna o saldo atual
    • Um método deposit(double amount) que adiciona ao saldo apenas se o valor for positivo, e também adiciona ao totalDeposits quando bem-sucedido
    • Um método withdraw(double amount) que subtrai do saldo apenas se o valor for positivo e não exceder o saldo atual
    • Um método displayInfo() que imprime os detalhes da conta
    • Um método estático getBankStats() que retorna uma string com as estatísticas de todo o banco
  • main.dart: Importe sua classe de conta bancária e demonstre o sistema:
    • Crie uma conta com o número 'ACC001' para 'Alice'
    • Crie uma conta com o número 'ACC002' para 'Bob'
    • Deposite 500.0 na conta de Alice
    • Deposite 300.0 na conta de Bob
    • Saque 150.0 da conta de Alice
    • Tente sacar 1000.0 da conta de Bob (deve ser ignorado - fundos insuficientes)
    • Tente depositar -50.0 na conta de Alice (deve ser ignorado - valor negativo)
    • Chame displayInfo() na conta de Alice, depois na conta de Bob
    • Imprima as estatísticas do banco usando BankAccount.getBankStats()

O método displayInfo() deve imprimir neste formato:

Account [accountNumber] | Holder: [holderName] | Balance: $[balance]

O método getBankStats() deve retornar:

Bank Stats - Total Accounts: [totalAccounts] | Total Deposits: $[totalDeposits]

Saída esperada:

Account ACC001 | Holder: Alice | Balance: $350.0
Account ACC002 | Holder: Bob | Balance: $300.0
Bank Stats - Total Accounts: 2 | Total Deposits: $800.0

Experimente você mesmo

import 'bank_account.dart';

void main() {
  // TODO: Criar uma conta com o número 'ACC001' para 'Alice'
  
  // TODO: Criar uma conta com o número 'ACC002' para 'Bob'
  
  // TODO: Depositar 500.0 na conta de 'Alice'
  
  // TODO: Depositar 300.0 na conta de 'Bob'
  
  // TODO: Sacar 150.0 da conta de 'Alice'
  
  // TODO: Tentar sacar 1000.0 da conta de 'Bob' (deve ser ignorado)
  
  // TODO: Tentar depositar -50.0 na conta de 'Alice' (deve ser ignorado)
  
  // TODO: Chamar displayInfo() na conta de 'Alice'
  
  // TODO: Chamar displayInfo() na conta de 'Bob'
  
  // TODO: Imprimir as estatísticas do banco usando BankAccount.getBankStats()
}

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