Pemeriksaan Akhir OOP
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 70 dari 70.
Tantangan
MudahMari gabungkan semua yang sudah kamu pelajari tentang OOP di Lua! Kamu akan membangun sistem kendaraan yang menunjukkan pewarisan, enkapsulasi melalui konvensi penamaan, dan mixin untuk kemampuan opsional.
Kamu akan menyusun kodemu dalam lima file:
Vehicle.lua: class dasar untuk semua kendaraan. Setiap kendaraan memilikinamedan_speeddengan konvensi privat (diinisialisasi ke 0). Sertakan getter:getName(), getter:getSpeed(), dan setter:setSpeed(value)yang menolak nilai negatif (jika nilainya negatif, cetakSpeed cannot be negativedan jangan ubah nilainya). Tambahkan method:describe()yang mengembalikan"{name} moving at {speed}".Refuelable.lua: tabel mixin yang berisi perilaku terkait bahan bakar. Sertakan method:refuel(amount)yang menambahkan nilai keself._fuel, dan method:getFuel()yang mengembalikan tingkat bahan bakar saat ini.Car.lua: mewarisi Vehicle dan menggunakan mixin Refuelable. Konstruktor menerimanamedan menginisialisasi_fuelke 0. Timpa:describe()agar mengembalikan"{name} moving at {speed}, fuel: {fuel}". Terapkan mixin Refuelable agar mobil memiliki kemampuan menggunakan bahan bakar.Bicycle.lua: hanya mewarisi Vehicle, tidak memerlukan fungsionalitas bahan bakar. Konstruktor hanya menerimaname. Sepeda menggunakan method:describe()yang diwarisi tanpa perubahan.main.lua: Gabungkan semuanya! Buat mobil dan sepeda berdasarkan input, tunjukkan kemampuan keduanya yang berbeda, dan perlihatkan cara keduanya berbagi perilaku umum kendaraan sekaligus memiliki fitur yang berbeda.
Kamu akan menerima empat input:
- Nama mobil
- Nama sepeda
- Kecepatan yang ditetapkan untuk kedua kendaraan (angka)
- Jumlah bahan bakar yang ditambahkan ke mobil (angka)
Di file utama:
- Buat mobil dan sepeda dengan nama yang diberikan
- Tetapkan kecepatan untuk kedua kendaraan menggunakan input ketiga
- Isi bahan bakar mobil dengan input keempat
- Cetak deskripsi mobil
- Cetak deskripsi sepeda
Misalnya, jika inputnya adalah Sedan, Mountain Bike, 60, dan 45, outputnya seharusnya:
Sedan moving at 60, fuel: 45
Mountain Bike moving at 60Jika inputnya adalah Sports Car, Road Bike, 120, dan 80, outputnya seharusnya:
Sports Car moving at 120, fuel: 80
Road Bike moving at 120Tantangan ini menunjukkan cara pewarisan menyediakan perilaku bersama (kedua kendaraan dapat bergerak), mixin menambahkan kemampuan opsional (hanya mobil yang memerlukan bahan bakar), dan enkapsulasi melindungi integritas data (validasi kecepatan). Setiap teknik memiliki tujuan berbeda dalam desainmu!
Coba sendiri
-- main.lua: Satukan semuanya
local Car = require('Car')
local Bicycle = require('Bicycle')
-- Baca input
local carName = io.read()
local bicycleName = io.read()
local speed = tonumber(io.read())
local fuelAmount = tonumber(io.read())
-- TODO: Buat mobil dengan nama yang diberikan
-- TODO: Buat sepeda dengan nama yang diberikan
-- TODO: Atur kecepatan kedua kendaraan
-- TODO: Isi bahan bakar mobil sesuai jumlah yang diberikan
-- TODO: Tampilkan deskripsi mobil
-- TODO: Tampilkan deskripsi sepeda
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