Daire Sınıfı
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 57 / 70.
Görev
KolayÖnceki derste oluşturduğunuz Rectangle sınıfının yanına bir Circle sınıfı ekleyerek Shape Manager'ı oluşturmaya devam edelim.
Şekillerinizi düzenli tutmak için dört dosyayla çalışacaksınız:
Shape.lua::new(name)ve:getName()içeren temel Shape sınıfınız.Rectangle.lua: Önceki görevde oluşturduğunuz ve:getArea()içeren Rectangle sınıfınız.Circle.lua: Shape sınıfından miras alan bir Circle sınıfı oluşturun. Yapıcı, birradiuskabul etmeli, üst sınıfın yapıcısını"Circle"adıyla çağırmalı ve yarıçapı saklamalıdır. Dairenin alanını πr² formülünü kullanarak hesaplayan bir:getArea()yöntemi ekleyin. π değeri içinmath.pikullanın.main.lua: Hem Rectangle hem de Circle modüllerini require edin. Girdiden üç değer okuyun: bir dikdörtgenin genişliği, bir dikdörtgenin yüksekliği ve bir dairenin yarıçapı. Her şekilden bir örnek oluşturun ve dört satır yazdırın: dikdörtgenin adı, dikdörtgenin alanı, dairenin adı ve dairenin alanı.
Her iki şekil de artık kalıtım yoluyla aynı arayüzü paylaşır: her birinde Shape sınıfından gelen bir :getName() yöntemi ve kendine ait bir :getArea() uygulaması bulunur. Bu ortak arayüz, gelecek derslerde kullanışlı olacaktır.
Girdi: Üç satır: genişlik (sayı), yükseklik (sayı) ve yarıçap (sayı).
Çıktı: Dört satır: dikdörtgenin adı, dikdörtgenin alanı, dairenin adı, dairenin alanı.
Kendin dene
-- Rectangle modülünü gerektir
local Rectangle = require('Rectangle')
-- Circle modülünü gerektir
-- TODO: Circle modülünü burada gerektir
-- Genişlik ve yüksekliği girdiden oku
local width = tonumber(io.read())
local height = tonumber(io.read())
-- TODO: Yarıçapı girdiden oku
-- Verilen boyutlarla yeni bir Rectangle örneği oluştur
local rect = Rectangle:new(width, height)
-- TODO: Verilen yarıçapla yeni bir Circle örneği oluştur
-- Dikdörtgenin adını ve alanını yazdır
print(rect:getName())
print(rect:getArea())
-- TODO: Dairenin adını ve alanını yazdır
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