Menu
Coddy logo textTech

Çevre Metodu

Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 58 / 70.

challenge icon

Görev

Kolay

Şekil Yöneticimizi, hem Rectangle hem de Circle sınıflarına bir :getPerimeter() yöntemi ekleyerek genişletelim. Tıpkı :getArea() gibi, her şekil çevresini farklı şekilde hesaplar, ancak aynı yöntem adını paylaşırlar: bu, polimorfizmin uygulamadaki 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: Dikdörtgenin çevresini 2 × (width + height) formülünü kullanarak döndüren bir :getPerimeter() yöntemi ekleyin.
  • Circle.lua: Dairenin çevresini 2 × π × radius formülünü kullanarak döndüren bir :getPerimeter() yöntemi ekleyin. π için math.pi kullanın.
  • main.lua: Her iki şekil modülünü require edin, boyutları girdiden okuyun, bir Rectangle ve bir Circle oluşturun, ardından altı satır yazdırın: dikdörtgenin adı, alanı ve çevresi; sonra dairenin adı, alanı ve çevresi.

Her iki şekil de artık :getName(), :getArea() ve :getPerimeter() ile eksiksiz bir arayüze sahip: farklı uygulamalara rağmen hepsine aynı yöntem adları üzerinden erişilebilir.

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ı ve dairenin çevresi.

Kendin dene

-- Rectangle modülünü yükle
local Rectangle = require('Rectangle')

-- Circle modülünü yükle
local Circle = require('Circle')

-- Girişten 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())

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Lua derleyicisi