Menu
CoddyTech

method Keliling

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 58 dari 70.

challenge icon

Tantangan

Mudah

Mari 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. Gunakan math.pi untuk π.
  • 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

Latihan sendiri: Compiler Lua online