class Rectangle
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 56 dari 70.
Tantangan
MudahSekarang, mari kembangkan Shape Manager dengan membuat class Rectangle yang mewarisi Shape dasar yang kamu buat di pelajaran sebelumnya.
Kamu akan menggunakan tiga file agar kodemu tetap teratur:
Shape.lua: class Shape dasar dari tantangan sebelumnya, dengan:new(name)dan:getName().Rectangle.lua: Buat class Rectangle yang mewarisi Shape. Konstruktor harus menerimawidthdanheight, memanggil konstruktor induk dengan nama"Rectangle", lalu menyimpan dimensinya. Tambahkan method:getArea()untuk menghitung dan mengembalikan luas persegi panjang.main.lua: Muat module Rectangle, baca width dan height dari input, buat instance Rectangle, lalu cetak namanya diikuti luasnya pada baris terpisah.
Ingat untuk mengatur hubungan pewarisan dengan benar agar instance Rectangle dapat mengakses method Shape melalui rantai prototipe.
Input: Dua baris: baris pertama berisi width (angka), baris kedua berisi height (angka).
Output: Dua baris: nama persegi panjang dari :getName(), lalu luasnya dari :getArea().
Coba sendiri
-- Muat module Rectangle dengan require
local Rectangle = require('Rectangle')
-- Baca lebar dan tinggi dari input
local width = tonumber(io.read())
local height = tonumber(io.read())
-- Buat instance Rectangle baru dengan dimensi yang diberikan
local rect = Rectangle:new(width, height)
-- Cetak nama dan luas persegi panjang
print(rect:getName())
print(rect:getArea())
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