Ringkasan: Pengelola Pengguna
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 68 dari 70.
Tantangan
MudahMari bangun sistem manajemen pengguna: aplikasi praktis yang bisa kamu temukan di banyak program di dunia nyata! Kamu akan membuat dua class yang bekerja bersama: satu mewakili setiap pengguna, dan satu lagi mengelola kumpulan pengguna secara efisien.
Kamu akan mengatur kodemu dalam tiga file:
User.lua: Buat class User yang mewakili satu pengguna dalam sistem. Setiap pengguna memilikiiddanname. Sertakan method:getInfo()yang mengembalikan string dengan format"ID: {id}, Name: {name}".UserManager.lua: Buat class manager yang menangani kumpulan pengguna. Pikirkan cara menyimpan pengguna agar pencarian lebih efisien: menggunakan ID pengguna sebagai kunci tabel akan membuat pencarian dan penghapusan pengguna jauh lebih mudah daripada mencari melalui list. Manager-mu memerlukan::addUser(user): menambahkan object User ke kumpulan:removeUser(id): menghapus pengguna berdasarkan ID mereka:findUser(id): mengembalikan User dengan ID yang cocok, atauniljika tidak ditemukan:listUsers(): mencetak info semua pengguna, satu per baris
main.lua: Satukan semuanya! Buat UserManager, tambahkan beberapa pengguna berdasarkan input yang kamu terima, lakukan operasi, lalu tampilkan hasilnya.
Kamu akan menerima lima input:
- ID pengguna pertama (sebuah angka)
- Nama pengguna pertama
- ID pengguna kedua (sebuah angka)
- Nama pengguna kedua
- ID pengguna yang akan dicari (sebuah angka)
Di file utama:
- Buat UserManager dan tambahkan kedua pengguna
- Panggil
:listUsers()untuk mencetak semua pengguna - Hapus pengguna pertama (menggunakan ID pertama)
- Cetak
"After removal:" - Panggil
:listUsers()lagi - Cari pengguna dengan ID input kelima, jika ditemukan, cetak infonya; jika tidak ditemukan, cetak
"User not found"
Misalnya, jika inputnya adalah 101, Alice, 102, Bob, dan 102, outputnya seharusnya:
ID: 101, Name: Alice
ID: 102, Name: Bob
After removal:
ID: 102, Name: Bob
ID: 102, Name: BobJika inputnya adalah 201, Charlie, 202, Diana, dan 201, outputnya seharusnya:
ID: 201, Name: Charlie
ID: 202, Name: Diana
After removal:
ID: 202, Name: Diana
User not foundPerhatikan pada contoh kedua, setelah menghapus pengguna 201 (Charlie), pencarian untuk ID tersebut mengembalikan "User not found" karena mereka tidak lagi ada di dalam sistem!
Coba sendiri
-- main.lua: Gabungkan semuanya
local User = require('User')
local UserManager = require('UserManager')
-- Baca input
local id1 = tonumber(io.read())
local name1 = io.read()
local id2 = tonumber(io.read())
local name2 = io.read()
local searchId = tonumber(io.read())
-- TODO: Buat instance UserManager
-- TODO: Buat dua object User dengan data input
-- TODO: Tambahkan kedua pengguna ke manager
-- TODO: Panggil listUsers() untuk menampilkan semua pengguna
-- TODO: Hapus pengguna pertama (menggunakan id1)
-- TODO: Cetak "After removal:"
-- TODO: Panggil listUsers() lagi
-- TODO: Cari pengguna dengan searchId
-- Jika ditemukan, cetak informasinya; jika tidak, cetak "User not found"
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 Bentuk9Komposisi & Mixins
Hubungan Has-ADelegasiMixins SederhanaMenerapkan Beberapa MixinsMixins vs PewarisanRangkuman: Perakitan Robot12Tantangan Akhir
Ringkasan: Sistem InventarisRingkasan: Pengelola PenggunaRingkasan: Pelacak SkorPemeriksaan Akhir OOPLatihan sendiri: Compiler Lua online