method Penarikan
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 21 dari 70.
Tantangan
MudahBank Digital-mu sedang berkembang! Sekarang akun bisa menerima setoran, tetapi bank sungguhan juga harus memungkinkan nasabah menarik uang. Mari tambahkan method :withdraw(amount) dengan pemeriksaan keamanan yang penting.
Tidak seperti setoran, penarikan bisa gagal. Jika nasabah mencoba menarik uang melebihi jumlah yang dimilikinya, bank tidak boleh mengizinkannya. Method withdraw-mu perlu memeriksa apakah dana mencukupi sebelum mengurangi jumlahnya.
Kamu akan terus bekerja dengan dua file berikut:
Account.lua: Tambahkan method:withdraw(amount)ke class Account yang sudah ada. Jika saldo akun cukup, kurangi jumlahnya dan kembalikantrue. Jika dananya tidak cukup, cetakInsufficient fundsdan kembalikanfalsetanpa mengubah saldo.main.lua: Buat akun, lakukan setoran agar akun memiliki dana, lalu coba beberapa penarikan untuk melihat transaksi yang berhasil dan gagal.
Kamu akan menerima empat input:
- Jumlah setoran awal
- Jumlah penarikan pertama
- Jumlah penarikan kedua
- Jumlah penarikan ketiga
Di file utama, buat akun, setorkan jumlah awal, lalu coba setiap penarikan secara berurutan. Setelah setiap percobaan penarikan, cetak saldo saat ini di baris baru. Ingat, penarikan yang gagal juga akan mencetak Insufficient funds sebelum kamu mencetak saldo.
Misalnya, jika inputnya adalah 100, 30, 50, dan 40, outputnya adalah:
70
20
Insufficient funds
20Akun memiliki saldo 100 setelah setoran. Penarikan pertama sebesar 30 berhasil (saldo: 70), penarikan kedua sebesar 50 berhasil (saldo: 20), tetapi penarikan ketiga sebesar 40 gagal karena hanya tersisa 20, sehingga saldo tetap 20.
Coba sendiri
-- Muat module Account dengan require
local Account = require('Account')
-- Baca keempat input
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- Buat satu akun
local account = Account:new()
-- Setorkan jumlah awal
account:deposit(initialDeposit)
-- Coba lakukan penarikan pertama dan cetak saldo
-- TODO: panggil account:withdraw(withdrawal1) di sini
print(account.balance)
-- Coba lakukan penarikan kedua dan cetak saldo
-- TODO: panggil account:withdraw(withdrawal2) di sini
print(account.balance)
-- Coba lakukan penarikan ketiga dan cetak saldo
-- TODO: panggil account:withdraw(withdrawal3) di sini
print(account.balance)
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