Çevre Metodu
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 58 / 70.
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çinmath.pikullanı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
1'Self' Kavramı
Fonksiyonlu TablolarAçık 'self'İki Nokta SözdizimiNokta vs İki NoktaÖzet - Hareket Eden Nokta4Proje: Dijital Banka
Proje KurulumuPara Yatırma Metodu7Çok Biçimlilik ve Geçersiz Kılma
Metotları Geçersiz KılmaÜst Sınıf Metotlarını ÇağırmaDuck TypingOrtak ArayüzTür KontrolüÖzet - Çalışan Rolleri10Proje: Şekil Yöneticisi
Proje KurulumuDikdörtgen SınıfıDaire SınıfıÇevre MetoduŞekil KoleksiyonuToplam AlanŞekilleri Filtrele2Sınıf Prototip Kalıbı
Prototip Kavramı__index ile Bağlama:new() KurucusuÖznitelikleri BaşlatmaBağımsız ÖrneklerÖzet - Araba Fabrikası5OOP'de Operatör Aşırı Yükleme
Nesneleri ToplamaNesneleri ÇıkarmaNesneleri BirleştirmeNesneleri Karşılaştırma (<, >)Özet - Cüzdan Matematiği8Kapsülleme
Adlandırma KurallarıGizlilik için Closure'larClosure'lar Aracılığıyla ErişimSalt Okunur TablolarDoğrulama MantığıÖzet - Güvenli Kasa11Tasarım Kalıpları (Lite)
Fabrika FonksiyonlarıSingleton TablosuIterator KalıbıObserver (Dinleyici)Özet - Logger Fabrikası3Nesne Durumu ve Davranışı
Örnek DeğişkenleriGetter MetotlarıSetter MetotlarıHesaplanmış ÖzelliklerString BiçimlendirmeEşitlik KontrolleriÖzet - Öğrenci Notu6Kalıtımın Temelleri
Kalıtım KurulumuMetot KalıtımıConstructor'ı GenişletmeAlt Sınıf Metotları EklemePaylaşılan ve BenzersizÖzet - Şekil HiyerarşisiKendi başına pratik yap: Online Lua derleyicisi