Uji Bank Terakhir
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 25 dari 70.
Tantangan
MudahSelamat karena kamu telah membangun sistem Bank Digital yang lengkap! Class Account-mu kini menangani penyetoran, penarikan, pemeriksaan saldo, identifikasi rekening, dan transfer antar-rekening. Mari uji semuanya dengan skenario perbankan realistis yang melibatkan beberapa rekening.
Dalam tantangan terakhir ini, kamu akan menyimulasikan sebuah bank kecil dengan tiga nasabah yang melakukan berbagai transaksi. Ini akan memastikan semua method-mu bekerja dengan benar bersama-sama dan setiap rekening benar-benar mempertahankan statusnya secara terpisah.
Dua file milikmu:
Account.lua: Class Account lengkap dengan semua fungsi yang telah kamu bangun sepanjang proyek ini (constructor dengan ID, deposit, withdraw, getBalance, __tostring, dan transfer).main.lua: Skrip simulasi yang membuat beberapa rekening dan menjalankan serangkaian transaksi di antara rekening-rekening tersebut.
Kamu akan menerima enam input:
- ID Rekening 1
- ID Rekening 2
- ID Rekening 3
- Setoran awal untuk Rekening 1
- Setoran awal untuk Rekening 2
- Setoran awal untuk Rekening 3
Di file utama, simulasikan kegiatan perbankan berikut:
- Buat tiga rekening dengan ID yang diberikan
- Setorkan jumlah awal ke rekening masing-masing
- Rekening 1 mentransfer 100 ke Rekening 2
- Rekening 2 mentransfer 150 ke Rekening 3
- Rekening 3 mentransfer 50 ke Rekening 1
- Rekening 1 mencoba mentransfer 1000 ke Rekening 3 (ini seharusnya gagal)
- Cetak ketiga rekening secara berurutan (Rekening 1, lalu 2, kemudian 3)
Misalnya, jika inputnya adalah A001, A002, A003, 500, 300, dan 200, outputnya seharusnya:
Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300Mari telusuri alurnya: Rekening 1 mulai dengan 500, mentransfer 100 ke Rekening 2 (sekarang 400), lalu menerima 50 dari Rekening 3 (sekarang 450). Rekening 2 mulai dengan 300, menerima 100 (sekarang 400), lalu mentransfer 150 ke Rekening 3 (sekarang 250). Rekening 3 mulai dengan 200, menerima 150 (sekarang 350), lalu mentransfer 50 ke Rekening 1 (sekarang 300). Transfer terakhir sebesar 1000 gagal karena Rekening 1 hanya memiliki 450.
Coba sendiri
-- Muat module Account dengan require
local Account = require('Account')
-- Baca keenam input
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())
-- Buat tiga akun dengan ID
-- TODO: buat account1, account2, account3 menggunakan Account:new()
-- Setorkan jumlah awal ke masing-masing akun
-- TODO: setorkan initialDeposit1 ke account1, initialDeposit2 ke account2, initialDeposit3 ke account3
-- Account 1 mentransfer 100 ke Account 2
-- TODO: account1:transfer(account2, 100)
-- Account 2 mentransfer 150 ke Account 3
-- TODO: account2:transfer(account3, 150)
-- Account 3 mentransfer 50 ke Account 1
-- TODO: account3:transfer(account1, 50)
-- Account 1 mencoba mentransfer 1000 ke Account 3 (ini seharusnya gagal)
-- TODO: account1:transfer(account3, 1000)
-- Cetak ketiga akun secara berurutan
-- TODO: cetak account1, account2, account3
Semua pelajaran di Pemrograman Berorientasi Object
1Konsep "Self"
Tabel dengan Fungsi'self' EksplisitSintaks Titik DuaTitik vs Titik DuaRangkuman, Titik Bergerak4Proyek: Bank Digital
Penyiapan Proyekmethod Setoran7Polimorfisme & Overriding
Menimpa methodMemanggil method indukDuck TypingAntarmuka UmumMemeriksa TipeRingkasan: Peran Karyawan10Proyek: Pengelola Bentuk
Penyiapan Proyekclass Rectangleclass Circlemethod KelilingKumpulan BentukLuas TotalSaring Bentuk2Pola Prototype untuk class
Konsep PrototypeMenghubungkan dengan __indexKonstruktor :new()Menginisialisasi AtributInstans yang MandiriRangkuman: Pabrik Mobil5Pembebanan Operator dalam OOP
Menjumlahkan ObjekMengurangkan ObjekMenggabungkan ObjekMembandingkan Objek (<, >)Ulasan: Aritmetika Dompet8Enkapsulasi
Konvensi PenamaanClosure untuk PrivasiAkses melalui ClosureTabel Hanya-BacaLogika ValidasiRangkuman: Brankas Aman11Pola Desain (Ringan)
Fungsi FactoryTabel SingletonPola IteratorObserver (Listener)Rangkuman, Factory Logger3State dan Behavior pada object
Variabel InstansGetter methodSetter methodProperty TerhitungMemformat stringPemeriksaan KesetaraanRangkuman: Nilai Siswa6Dasar-Dasar Pewarisan
Menyiapkan PewarisanMewarisi methodMemperluas KonstruktorMenambahkan method untuk ChildSama vs UnikRangkuman: Hierarki BentukLatihan sendiri: Compiler Lua online