Dikdörtgen Sınıfı
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 56 / 70.
Görev
KolayŞimdi, önceki derste oluşturduğun temel Shape sınıfından miras alan bir Rectangle sınıfı oluşturarak Shape Manager'ımızı genişletelim.
Kodunu düzenli tutmak için üç dosyayla çalışacaksın:
Shape.lua: Önceki görevde oluşturduğun temel Shape sınıfı (:new(name)ve:getName()ile).Rectangle.lua: Shape sınıfından miras alan bir Rectangle sınıfı oluştur. Yapıcı,widthveheightdeğerlerini kabul etmeli, üst sınıfın yapıcısını"Rectangle"adıyla çağırmalı ve boyutları saklamalıdır. Dikdörtgenin alanını hesaplayıp döndüren bir:getArea()metodu ekle.main.lua: Rectangle modülünü içe aktar, genişlik ve yüksekliği girdiden oku, bir Rectangle örneği oluştur ve adını, ardından alanını ayrı satırlarda yazdır.
Rectangle örneklerinin prototip zinciri üzerinden Shape'in metotlarına erişebilmesi için kalıtım bağlantısını doğru şekilde kurmayı unutma.
Girdi: İki satır: ilk satır genişliği (sayı), ikinci satır yüksekliği (sayı) içerir.
Çıktı: İki satır: :getName() metodundan dikdörtgenin adı, ardından :getArea() metodundan alanı.
Kendin dene
-- Rectangle modülünü yükle
local Rectangle = require('Rectangle')
-- Girdiden genişlik ve yüksekliği oku
local width = tonumber(io.read())
local height = tonumber(io.read())
-- Verilen boyutlarla yeni bir Rectangle örneği oluştur
local rect = Rectangle:new(width, height)
-- Dikdörtgenin adını ve alanını yazdır
print(rect:getName())
print(rect:getArea())
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