Menu
CoddyTech

Ulasan: Pengelola Rekening Bank

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 20 dari 91.

challenge icon

Tantangan

Mudah

Mari kita bangun sistem pengelolaan rekening bank lengkap yang menggabungkan semua konsep property class yang telah kamu pelajari di bab ini. Kamu akan membuat class BankAccount yang mengenkapsulasi data rekening dengan baik sekaligus melacak statistik seluruh bank.

Kamu akan mengatur kodemu dalam dua file:

  • BankAccount.php: Definisikan class BankAccount yang mengelola rekening individual dan melacak statistik keseluruhan bank. Class ini harus mencakup:
    • Konstanta MINIMUM_BALANCE yang ditetapkan ke 100
    • Property public readonly string $accountId yang tidak dapat berubah setelah dibuat
    • Property public $holderName untuk nama pemilik rekening
    • Property private $balance untuk melindungi saldo rekening
    • Property private static $totalAccounts yang dimulai dari 0
    • Property private static $totalDeposits yang dimulai dari 0
    Constructor harus menerima ID rekening, nama pemilik, dan saldo awal. Constructor harus menetapkan semua property instance dan menambah jumlah total rekening. Sertakan method berikut:
    • getBalance(): mengembalikan saldo saat ini
    • deposit($amount): menambahkan jumlah ke saldo dan memperbarui pencatat total setoran, lalu mengembalikan saldo baru
    • withdraw($amount): mengurangi saldo hanya jika saldo yang tersisa tetap sama dengan atau lebih besar dari konstanta saldo minimum, lalu mengembalikan saldo baru (atau saldo yang tidak berubah jika penarikan tidak diizinkan)
    • Method static getTotalAccounts(): mengembalikan jumlah total rekening yang dibuat
    • Method static getTotalDeposits(): mengembalikan jumlah semua setoran yang dilakukan ke seluruh rekening
  • main.php: Sertakan file class BankAccount. Kamu akan menerima empat input: ID rekening pertama, nama pemilik pertama, ID rekening kedua, dan nama pemilik kedua. Buat dua rekening, masing-masing dengan saldo awal 500. Untuk rekening pertama: lakukan setoran 200, lalu tarik 100. Cetak ID rekening, nama pemilik, dan saldo dalam satu baris dengan format: "[accountId]: [holderName] - $[balance]" Untuk rekening kedua: lakukan setoran 300, lalu coba tarik 800 (penarikan ini harus gagal karena saldo minimum). Cetak dengan format yang sama untuk rekening ini. Terakhir, cetak jumlah total rekening dan total setoran pada baris terpisah:
    • "Total Accounts: [count]"
    • "Total Deposits: $[amount]"

Tantangan ini menggabungkan property readonly untuk pengenal yang tidak dapat diubah, property private dengan method getter untuk data yang dilindungi, konstanta untuk aturan tetap, serta property static dengan method static untuk statistik seluruh bank.

Coba sendiri

<?php

require_once 'BankAccount.php';

// Baca input
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));

// TODO: Buat rekening pertama dengan saldo awal 500

// TODO: Buat rekening kedua dengan saldo awal 500

// TODO: Rekening pertama: setorkan 200, lalu tarik 100

// TODO: Cetak informasi rekening pertama: "[accountId]: [holderName] - $[balance]"

// TODO: Rekening kedua: setorkan 300, lalu coba tarik 800

// TODO: Cetak informasi rekening kedua: "[accountId]: [holderName] - $[balance]"

// TODO: Cetak "Total Accounts: [count]"

// TODO: Cetak "Total Deposits: $[amount]"

?>

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online