Menu
Coddy logo textTech

Çevre Metodu

Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 58 / 70.

challenge icon

Görev

Kolay

Hem Rectangle hem de Circle sınıflarına bir :getPerimeter() metodu ekleyerek Şekil Yöneticimizi (Shape Manager) genişletelim. Tıpkı :getArea() metodunda olduğu gibi, her şekil çevresini farklı şekilde hesaplar ancak aynı metot adını paylaşırlar; bu, polimorfizmin (çok biçimlilik) iş başındaki mükemmel bir örneğidir.

Mevcut dosyalarınızla çalışmaya devam edeceksiniz:

  • Shape.lua: Temel Shape sınıfınız değişmeden kalır.
  • Rectangle.lua: 2 × (width + height) formülünü kullanarak dikdörtgenin çevresini döndüren bir :getPerimeter() metodu ekleyin.
  • Circle.lua: 2 × π × radius formülünü kullanarak dairenin çevresini döndüren bir :getPerimeter() metodu ekleyin. π için math.pi kullanın.
  • main.lua: Her iki şekil modülünü de dahil edin (require), girdiden boyutları okuyun, bir Rectangle ve bir Circle oluşturun, ardından altı satır yazdırın: dikdörtgenin adı, alanı ve çevresi, ardından dairenin adı, alanı ve çevresi.

Her iki şekil de artık farklı uygulamalara rağmen aynı metot adları üzerinden erişilebilen :getName(), :getArea() ve :getPerimeter() ile eksiksiz bir arayüze sahiptir.

Girdi: Üç satır—genişlik (sayı), yükseklik (sayı) ve yarıçap (sayı).

Çıktı: Sırasıyla altı satır: dikdörtgenin adı, dikdörtgenin alanı, dikdörtgenin çevresi, dairenin adı, dairenin alanı, dairenin çevresi.

Kendin dene

-- Rectangle modülünü dahil et
local Rectangle = require('Rectangle')

-- Circle modülünü dahil et
local Circle = require('Circle')

-- Girdiden genişlik ve yüksekliği oku
local width = tonumber(io.read())
local height = tonumber(io.read())
local radius = tonumber(io.read())

-- Verilen boyutlarla yeni bir Rectangle örneği oluştur
local rect = Rectangle:new(width, height)

-- Verilen yarıçapla yeni bir Circle örneği oluştur
local circ = Circle:new(radius)

-- Dikdörtgenin adını, alanını ve çevresini yazdır
print(rect:getName())
print(rect:getArea())
print(rect:getPerimeter())

-- Dairenin adını, alanını ve çevresini yazdır
print(circ:getName())
print(circ:getArea())
print(circ:getPerimeter())

Object Oriented Programming bölümündeki tüm dersler