Menu
Coddy logo textTech

Podsumowanie — menedżer kont bankowych

Część sekcji Programowanie obiektowe ścieżki PHP w Coddy. Lekcja 20 z 91.

challenge icon

Wyzwanie

Łatwy

Zbudujmy kompletny system zarządzania rachunkami bankowymi, który łączy wszystkie poznane w tym rozdziale zagadnienia dotyczące właściwości klas. Utworzysz klasę BankAccount, która prawidłowo enkapsuluje dane rachunku i jednocześnie śledzi statystyki całego banku.

Rozmieścisz swój kod w dwóch plikach:

  • BankAccount.php: Zdefiniuj klasę BankAccount, która zarządza poszczególnymi rachunkami i śledzi ogólne statystyki banku. Klasa powinna zawierać:
    • Stałą MINIMUM_BALANCE o wartości 100
    • Publiczną właściwość tylko do odczytu string $accountId, której nie można zmienić po utworzeniu
    • Publiczną właściwość $holderName przechowującą imię i nazwisko posiadacza rachunku
    • Prywatną właściwość $balance, która chroni saldo rachunku
    • Prywatną właściwość statyczną $totalAccounts o początkowej wartości 0
    • Prywatną właściwość statyczną $totalDeposits o początkowej wartości 0
    Konstruktor powinien przyjmować identyfikator rachunku, imię i nazwisko posiadacza oraz saldo początkowe. Powinien ustawić wszystkie właściwości instancji i zwiększyć licznik rachunków ogółem. Dodaj następujące metody:
    • getBalance(): zwraca bieżące saldo
    • deposit($amount): dodaje kwotę do salda i aktualizuje licznik wpłat ogółem, a następnie zwraca nowe saldo
    • withdraw($amount): odejmuje kwotę od salda tylko wtedy, gdy pozostałe saldo nie spadnie poniżej wartości minimalnego salda, a następnie zwraca nowe saldo (lub niezmienione saldo, jeśli wypłata jest niedozwolona)
    • Metodę statyczną getTotalAccounts(): zwraca łączną liczbę utworzonych rachunków
    • Metodę statyczną getTotalDeposits(): zwraca sumę wszystkich wpłat dokonanych na wszystkich rachunkach
  • main.php: Dołącz plik klasy BankAccount. Otrzymasz cztery dane wejściowe: identyfikator pierwszego rachunku, imię i nazwisko pierwszego posiadacza, identyfikator drugiego rachunku oraz imię i nazwisko drugiego posiadacza. Utwórz dwa rachunki, każdy z saldem początkowym 500. Dla pierwszego rachunku: wpłać 200, a następnie wypłać 100. Wypisz w jednym wierszu identyfikator rachunku, imię i nazwisko posiadacza oraz saldo w formacie: "[accountId]: [holderName] - $[balance]" Dla drugiego rachunku: wpłać 300, a następnie spróbuj wypłacić 800 (ta operacja powinna się nie powieść ze względu na minimalne saldo). Wypisz dane tego rachunku w tym samym formacie. Na koniec wypisz łączną liczbę rachunków i łączną kwotę wpłat w osobnych wierszach:
    • "Total Accounts: [count]"
    • "Total Deposits: $[amount]"

To wyzwanie łączy właściwości tylko do odczytu, służące do przechowywania niezmiennych identyfikatorów, prywatne właściwości z metodami pobierającymi, które chronią dane, stałe określające niezmienne zasady oraz właściwości statyczne i metody statyczne służące do śledzenia statystyk całego banku.

Spróbuj swoich sił

<?php

require_once 'BankAccount.php';

// Odczytaj dane wejściowe
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));

// TODO: Utwórz pierwsze konto z saldem początkowym 500

// TODO: Utwórz drugie konto z saldem początkowym 500

// TODO: Pierwsze konto: wpłać 200, a następnie wypłać 100

// TODO: Wyświetl informacje o pierwszym koncie: "[accountId]: [holderName] - $[balance]"

// TODO: Drugie konto: wpłać 300, a następnie spróbuj wypłacić 800

// TODO: Wyświetl informacje o drugim koncie: "[accountId]: [holderName] - $[balance]"

// TODO: Wyświetl "Total Accounts: [count]"

// TODO: Wyświetl "Total Deposits: $[amount]"

?>

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator PHP online