Ulasan: Aritmetika Dompet
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 30 dari 70.
Tantangan
MudahMari buat class Wallet yang menggabungkan keterampilan operator overloading yang telah kamu pelajari di bab ini. Wallet-mu akan menyimpan sejumlah uang dan mendukung dua operasi utama: menggabungkan wallet dengan + dan membandingkan wallet dengan < dan >.
Kamu akan mengatur kodemu dalam dua file:
Wallet.lua: Definisikan class Wallet dengan fieldamountyang menunjukkan jumlah uang yang disimpannya. Sertakan constructor:new(amount)dan implementasikan dua metamethod:__add: Menambahkan dua wallet akan membuat wallet baru yang berisi jumlah gabungannya__lt: Membandingkan wallet akan menentukan wallet mana yang menyimpan lebih sedikit uang
main.lua: Gunakan require untuk memuat module Wallet-mu, buat instance wallet, dan tunjukkan kedua operasi tersebut berjalan bersama.
Kamu akan menerima tiga input:
- Jumlah uang di wallet pertama
- Jumlah uang di wallet kedua
- Jumlah uang di wallet ketiga
Di file utamamu, buat tiga wallet dengan jumlah yang diberikan. Lalu:
- Tambahkan wallet pertama dan kedua untuk membuat wallet gabungan
- Cetak jumlah uang di wallet gabungan
- Bandingkan wallet gabungan dengan wallet ketiga menggunakan
<, lalu cetak hasilnya (trueataufalse) - Bandingkan wallet gabungan dengan wallet ketiga menggunakan
>, lalu cetak hasilnya (trueataufalse)
Misalnya, jika input-nya adalah 50, 30, dan 100, output-nya adalah:
80
true
falseWallet pertama (50) ditambah wallet kedua (30) menghasilkan wallet gabungan dengan jumlah 80. Karena 80 lebih kecil dari 100, perbandingan pertama menghasilkan true. Karena 80 tidak lebih besar dari 100, perbandingan kedua menghasilkan false.
Coba sendiri
local Wallet = require('Wallet')
-- Baca input
local amount1 = tonumber(io.read())
local amount2 = tonumber(io.read())
local amount3 = tonumber(io.read())
-- TODO: Buat tiga dompet dengan jumlah yang diberikan
-- TODO: Jumlahkan dompet pertama dan kedua untuk membuat dompet gabungan
-- TODO: Cetak jumlah pada dompet gabungan
-- TODO: Bandingkan dompet gabungan dengan dompet ketiga menggunakan < dan cetak hasilnya
-- TODO: Bandingkan dompet gabungan dengan dompet ketiga menggunakan > dan cetak hasilnya
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