Sistem Perbankan
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 108 dari 110.
Tantangan
MudahMari bangun Sistem Perbankan yang memodelkan operasi keuangan di dunia nyata dengan prinsip OOP yang telah kamu kuasai sepanjang kursus ini. Kamu akan membuat akun dengan aturan berbeda, melacak transaksi, dan mengelola pelanggan, semuanya diatur dalam beberapa file.
Sistem perbankanmu akan diatur dalam enam file:
transaction.dart: Buat classTransactionyang merepresentasikan catatan operasi keuangan yang tidak dapat diubah. Setiap transaksi memiliki fieldfinaluntuktype(String, "deposit", "withdrawal", atau "transfer"),amount(double), dantimestamp(DateTime). Ganti implementasitoString()agar mengembalikan[type] $amount.account.dart: Buat class abstrakAccountdengan_balanceprivat (double), nomor akunfinal(accountNumber, String), danList<Transaction>untuk menyimpan riwayat transaksi. Sertakan getter untuk saldo, setter terlindungiset balance(double value)agar subclass di file lain dapat memperbarui saldo, method abstrakbool canWithdraw(double amount)yang diimplementasikan oleh subclass, serta method konkret berikut:deposit(double amount), menambahkan ke saldo, mencatat transaksi, dan mencetakDeposited $amount. Balance: $balancewithdraw(double amount), jikacanWithdraw()mengembalikan true, mengurangi saldo, mencatat transaksi, dan mencetakWithdrew $amount. Balance: $balance. Jika tidak, cetakWithdrawal denied.getTransactionCount(), mengembalikan jumlah transaksi
savings_account.dart: BuatSavingsAccountyang mewarisiAccount. Akun tabungan memiliki batas penarikan, yaitu tidak dapat menarik lebih dari $500 dalam satu transaksi. ImplementasikancanWithdraw()untuk menerapkan aturan ini dan memastikan saldo mencukupi. Tambahkan methodapplyInterest(double rate)yang menambah saldo berdasarkan persentase yang diberikan dengan menggunakan getter dan setterbalance, lalu mencetakInterest applied. Balance: $balance.checking_account.dart: BuatCheckingAccountyang mewarisiAccount. Akun giro memiliki perlindungan overdraft hingga $100, yaitu saldonya boleh negatif tetapi tidak boleh kurang dari -$100. ImplementasikancanWithdraw()agar penarikan diizinkan selama saldo setelah penarikan tetap -$100 atau lebih.customer.dart: Buat classCustomerdenganid(String),name(String), danList<Account>untuk akun pelanggan. Sertakan methodaddAccount(Account account)untuk menambahkan akun, sertagetTotalBalance()yang mengembalikan jumlah saldo semua akun. Ganti implementasitoString()agar mengembalikanCustomer: name (X accounts).main.dart: Demonstrasikan sistem perbankanmu. Buat pelanggan (C001,John Smith). BuatSavingsAccount(SAV001, saldo awal $1000) danCheckingAccount(CHK001, saldo awal $500). Tambahkan kedua akun ke pelanggan dan cetak pelanggan tersebut. Kemudian lakukan operasi berikut:- Setorkan $200 ke akun tabungan
- Tarik $300 dari akun tabungan (seharusnya berhasil)
- Coba tarik $600 dari akun tabungan (seharusnya ditolak, melebihi batas)
- Terapkan bunga 5% ke akun tabungan
- Tarik $550 dari akun giro (seharusnya berhasil dengan menggunakan overdraft)
- Coba tarik lagi $100 dari akun giro (seharusnya ditolak, karena akan melewati batas overdraft)
Savings transactions: XdanTotal balance: $Y(diformat hingga 2 angka desimal).
Output yang diharapkan:
Customer: John Smith (2 accounts)
Deposited $200.0. Balance: $1200.0
Withdrew $300.0. Balance: $900.0
Withdrawal denied
Interest applied. Balance: $945.0
Withdrew $550.0. Balance: $-50.0
Withdrawal denied
Savings transactions: 3
Total balance: $895.00Coba sendiri
import 'transaction.dart';
import 'account.dart';
import 'savings_account.dart';
import 'checking_account.dart';
import 'customer.dart';
void main() {
// TODO: Buat pelanggan dengan id "C001" dan nama "John Smith"
// TODO: Buat SavingsAccount dengan accountNumber "SAV001" dan saldo awal $1000
// TODO: Buat CheckingAccount dengan accountNumber "CHK001" dan saldo awal $500
// TODO: Tambahkan kedua rekening ke pelanggan
// TODO: Tampilkan pelanggan
// TODO: Lakukan operasi berikut:
// 1. Setorkan $200 ke rekening tabungan
// 2. Tarik $300 dari rekening tabungan (seharusnya berhasil)
// 3. Coba tarik $600 dari rekening tabungan (seharusnya ditolak karena melebihi batas)
// 4. Terapkan bunga 5% pada rekening tabungan
// 5. Tarik $550 dari rekening giro (seharusnya berhasil dengan overdraft)
// 6. Coba tarik lagi $100 dari rekening giro (seharusnya ditolak karena akan melebihi batas overdraft)
// TODO: Cetak "Savings transactions: X", dengan X sebagai jumlah transaksi
// TODO: Cetak "Total balance: \$Y", dengan Y diformat hingga 2 angka di belakang koma
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online