Menu
CoddyTech

Transfer Dana

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 24 dari 70.

challenge icon

Tantangan

Mudah

Bank Digitalku hampir selesai! Fitur utama terakhir adalah kemampuan untuk mentransfer uang antar rekening. Di sinilah desain berorientasi objekmu benar-benar menonjol: satu object rekening dapat berinteraksi langsung dengan object rekening lainnya.

Kamu akan menambahkan method :transfer(targetAccount, amount) yang memindahkan uang dari satu rekening ke rekening lainnya. Pikirkan apa saja yang terjadi dalam operasi ini: penarikan dari rekening sumber, lalu diikuti setoran ke rekening tujuan. Keunggulannya, kamu dapat menggunakan kembali method yang sudah kamu buat!

Lanjutkan mengembangkan file yang sudah ada:

  • Account.lua: Tambahkan method :transfer(targetAccount, amount) ke class Account-mu. Method ini harus mencoba menarik jumlah tersebut dari self, dan jika berhasil, menyetorkan jumlah tersebut ke targetAccount. Jika penarikan gagal karena dana tidak mencukupi, transfer tidak boleh dilakukan. Pertahankan semua fungsionalitas yang sudah ada, yaitu constructor dengan ID, deposit, withdraw, getBalance, dan __tostring.
  • main.lua: Buat beberapa rekening dan tunjukkan transfer di antara rekening-rekening tersebut, serta perlihatkan perubahan saldo pada object rekening yang berbeda.

Kamu akan menerima lima input:

  1. ID rekening pertama
  2. ID rekening kedua
  3. Setoran awal ke rekening pertama
  4. Jumlah transfer pertama (dari rekening 1 ke rekening 2)
  5. Jumlah transfer kedua (dari rekening 1 ke rekening 2)

Di file utama, buat dua rekening dengan ID yang diberikan (keduanya dimulai dengan saldo 0), setorkan jumlah awal ke rekening pertama, lalu coba lakukan kedua transfer dari rekening pertama ke rekening kedua. Setelah setiap percobaan transfer, cetak kedua rekening (__tostring akan menampilkan kondisinya saat ini).

Contohnya, jika inputnya adalah 101, 102, 500, 200, dan 400, outputnya seharusnya:

Account [101]: Balance = 300
Account [102]: Balance = 200
Insufficient funds
Account [101]: Balance = 300
Account [102]: Balance = 200

Rekening pertama memiliki saldo 500 setelah setoran. Transfer pertama sebesar 200 berhasil, sehingga rekening 101 memiliki saldo 300 dan rekening 102 memiliki saldo 200. Transfer kedua sebesar 400 gagal karena rekening 101 hanya memiliki saldo 300, jadi kedua saldo tetap tidak berubah.

Coba sendiri

-- Muat module Account dengan require
local Account = require('Account')

-- Baca kelima input
local id1 = io.read()
local id2 = io.read()
local initialDeposit = tonumber(io.read())
local transfer1 = tonumber(io.read())
local transfer2 = tonumber(io.read())

-- Buat dua akun dengan ID
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- Setorkan jumlah awal ke akun pertama
account1:deposit(initialDeposit)

-- TODO: Coba transfer pertama dari account1 ke account2

-- TODO: Cetak kedua akun setelah transfer pertama

-- TODO: Coba transfer kedua dari account1 ke account2

-- TODO: Cetak kedua akun setelah transfer kedua

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler Lua online