method Keliling
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 58 dari 70.
Tantangan
MudahMari kita kembangkan Shape Manager dengan menambahkan method :getPerimeter() ke class Rectangle dan Circle. Sama seperti :getArea(), setiap bentuk menghitung kelilingnya dengan cara berbeda, tetapi keduanya menggunakan nama method yang sama: contoh sempurna dari polimorfisme.
Kamu akan melanjutkan pekerjaan dengan file yang sudah ada:
Shape.lua: Class Shape dasar tetap tidak berubah.Rectangle.lua: Tambahkan method:getPerimeter()yang mengembalikan keliling persegi panjang menggunakan rumus 2 × (width + height).Circle.lua: Tambahkan method:getPerimeter()yang mengembalikan keliling lingkaran menggunakan rumus 2 × π × radius. Gunakanmath.piuntuk π.main.lua: Require kedua module bentuk, baca dimensinya dari input, buat satu Rectangle dan satu Circle, lalu cetak enam baris: nama, luas, dan keliling persegi panjang, diikuti nama, luas, dan keliling lingkaran.
Kini kedua bentuk memiliki interface lengkap dengan :getName(), :getArea(), dan :getPerimeter(): semuanya dapat diakses melalui nama method yang sama meskipun implementasinya berbeda.
Input: Tiga baris: width (angka), height (angka), dan radius (angka).
Output: Enam baris secara berurutan: nama persegi panjang, luas persegi panjang, keliling persegi panjang, nama lingkaran, luas lingkaran, keliling lingkaran.
Coba sendiri
-- Muat module Rectangle dengan require
local Rectangle = require('Rectangle')
-- Muat module Circle dengan require
local Circle = require('Circle')
-- Baca lebar dan tinggi dari input
local width = tonumber(io.read())
local height = tonumber(io.read())
local radius = tonumber(io.read())
-- Buat instance Rectangle baru dengan dimensi yang diberikan
local rect = Rectangle:new(width, height)
-- Buat instance Circle baru dengan radius yang diberikan
local circ = Circle:new(radius)
-- Cetak nama, luas, dan keliling persegi panjang
print(rect:getName())
print(rect:getArea())
print(rect:getPerimeter())
-- Cetak nama, luas, dan keliling lingkaran
print(circ:getName())
print(circ:getArea())
print(circ:getPerimeter())
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