Menu
Coddy logo textTech

Recapitulação - Gerenciador de Contas Bancárias

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 criar 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 acompanha os dados de cada conta e, ao mesmo tempo, mantém estatísticas gerais do banco.

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

  • bank_account.dart: Defina uma classe BankAccount que gerencie contas individuais e acompanhe as estatísticas gerais do banco. Sua classe deve incluir:
    • Um final String accountNumber que não pode ser alterado após a criação
    • Um 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 acompanhar quantas contas existem
    • Um static double totalDeposits começando em 0.0 para acompanhar todos os depósitos feitos no banco
    • Um construtor que receba accountNumber e holderName e incremente totalAccounts
    • Um getter balance que retorne o saldo atual
    • Um método deposit(double amount) que adicione ao saldo somente se o valor for positivo e também adicione a totalDeposits quando for bem-sucedido
    • Um método withdraw(double amount) que subtraia do saldo somente se o valor for positivo e não exceder o saldo atual
    • Um método displayInfo() que imprima os detalhes da conta
    • Um método estático getBankStats() que retorne uma string com as estatísticas gerais do 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
    • Retire 150.0 da conta de Alice
    • Tente retirar 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 e, 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

Pratique por conta própria: Compilador de Dart online