Ulasan: Pengelola Rekening Bank
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 20 dari 91.
Tantangan
MudahMari 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 classBankAccountyang mengelola rekening individual dan melacak statistik keseluruhan bank. Class ini harus mencakup:- Konstanta
MINIMUM_BALANCEyang ditetapkan ke100 - Property public readonly
string $accountIdyang tidak dapat berubah setelah dibuat - Property public
$holderNameuntuk nama pemilik rekening - Property private
$balanceuntuk melindungi saldo rekening - Property private static
$totalAccountsyang dimulai dari0 - Property private static
$totalDepositsyang dimulai dari0
getBalance(): mengembalikan saldo saat inideposit($amount): menambahkan jumlah ke saldo dan memperbarui pencatat total setoran, lalu mengembalikan saldo baruwithdraw($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
- Konstanta
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 awal500. Untuk rekening pertama: lakukan setoran200, lalu tarik100. Cetak ID rekening, nama pemilik, dan saldo dalam satu baris dengan format:"[accountId]: [holderName] - $[balance]"Untuk rekening kedua: lakukan setoran300, lalu coba tarik800(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
1Dasar-Dasar OOP
File EksternalPengenalan OOPclass vs objectKata Kunci $thismethodpropertyConstructor (__construct)Destructor (__destruct)Ringkasan: Kalkulator Sederhana4Pewarisan
Pewarisan DasarKata Kunci parent::Penimpaan methodKata Kunci finalClass AbstrakRingkasan: Hierarki Karyawan7Enkapsulasi
Public, Protected, PrivateModifier Akses secara MendalamGetter dan SetterPenyembunyian InformasiPromosi Constructor (8.0)Ulasan: Sistem Catatan Siswa2Namespace dan Autoloading
Pengenalan NamespaceKata Kunci useStandar Autoloading PSR-4Autoloader ComposerRingkasan: Proyek yang Terorganisasi5Interface dan Kontrak
Pengenalan InterfaceMengimplementasikan InterfaceImplementasi Beberapa InterfaceInterface vs Abstract ClassPetunjuk Tipe dengan InterfaceRekap: Kalkulator Bentuk8Magic Methods
Pengantar Magic Methods__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Cloning Object__serialize & __unserializeRingkasan: Koleksi Kustom11Sistem Tipe Data dan Penanganan Error
Deklarasi TipeTipe NullableTipe Union dan IntersectionClass ExceptionHierarki Exception KustomTry, Catch, FinallyRekap: Validator Form3Property dalam class
Property instance vs staticKonstanta dalam classMethod & property staticProperty private & protectedProperty readonly (PHP 8.1)Ulasan: Pengelola Rekening Bank6Polimorfisme
Meninjau Kembali Method OverridingPolimorfisme melalui AntarmukaPetunjuk Tipe dan Tipe UnionPengikatan Statis TertundaRangkuman: Pemroses PembayaranLatihan sendiri: Compiler PHP online