Menu
Coddy logo textTech

Powtórzenie – menedżer kont bankowych

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 22 z 110.

challenge icon

Wyzwanie

Łatwy

Zbudujmy system zarządzania rachunkami bankowymi, który łączy wszystkie poznane w tym rozdziale zagadnienia dotyczące właściwości klas. Utworzysz system, który śledzi dane poszczególnych rachunków, a jednocześnie przechowuje statystyki całego banku.

Podzielisz kod na dwa pliki:

  • bank_account.dart: Zdefiniuj klasę BankAccount, która zarządza poszczególnymi rachunkami i śledzi statystyki całego banku. Twoja klasa powinna zawierać:
    • final String accountNumber, którego nie można zmienić po utworzeniu
    • String holderName przechowujący imię i nazwisko właściciela rachunku
    • Prywatne pole double _balance, którego początkową wartością jest 0.0
    • static int totalAccounts o początkowej wartości 0, które śledzi liczbę istniejących rachunków
    • static double totalDeposits o początkowej wartości 0.0, które śledzi wszystkie wpłaty dokonane w całym banku
    • Konstruktor przyjmujący accountNumber i holderName oraz zwiększający wartość totalAccounts
    • Getter balance, który zwraca bieżące saldo
    • Metodę deposit(double amount), która zwiększa saldo tylko wtedy, gdy kwota jest dodatnia, a po udanej wpłacie zwiększa również wartość totalDeposits
    • Metodę withdraw(double amount), która zmniejsza saldo tylko wtedy, gdy kwota jest dodatnia i nie przekracza bieżącego salda
    • Metodę displayInfo(), która wyświetla szczegóły rachunku
    • Metodę statyczną getBankStats(), która zwraca tekst ze statystykami całego banku
  • main.dart: Zaimportuj klasę rachunku bankowego i zademonstruj działanie systemu:
    • Utwórz rachunek o numerze 'ACC001' dla 'Alice'
    • Utwórz rachunek o numerze 'ACC002' dla 'Bob'
    • Wpłać 500.0 na rachunek Alice
    • Wpłać 300.0 na rachunek Bob
    • Wypłać 150.0 z rachunku Alice
    • Spróbuj wypłacić 1000.0 z rachunku Bob (operacja powinna zostać zignorowana — niewystarczające środki)
    • Spróbuj wpłacić -50.0 na rachunek Alice (operacja powinna zostać zignorowana — kwota ujemna)
    • Wywołaj displayInfo() dla rachunku Alice, a następnie rachunku Bob
    • Wyświetl statystyki banku za pomocą BankAccount.getBankStats()

Metoda displayInfo() powinna wyświetlać informacje w takim formacie:

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

Metoda getBankStats() powinna zwracać:

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

Oczekiwany wynik:

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

Spróbuj swoich sił

import 'bank_account.dart';

void main() {
  // TODO: Utwórz konto o numerze 'ACC001' dla 'Alice'
  
  // TODO: Utwórz konto o numerze 'ACC002' dla 'Bob'
  
  // TODO: Wpłać 500.0 na konto Alice
  
  // TODO: Wpłać 300.0 na konto Bob
  
  // TODO: Wypłać 150.0 z konta Alice
  
  // TODO: Spróbuj wypłacić 1000.0 z konta Bob (operacja powinna zostać zignorowana)
  
  // TODO: Spróbuj wpłacić -50.0 na konto Alice (operacja powinna zostać zignorowana)
  
  // TODO: Wywołaj displayInfo() dla konta Alice
  
  // TODO: Wywołaj displayInfo() dla konta Bob
  
  // TODO: Wypisz statystyki banku za pomocą BankAccount.getBankStats()
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online