Temel Sınıf ve Oluşturucu Tasarımı
Üst tabloları ve new() oluşturucularını kuran bir Class() fabrikası tasarlayın.
Temel Sınıf ve Oluşturucu Tasarımı, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
Hedef: Yeniden Kullanılabilir Sınıf Fabrikası
Uygun kurucuya, yöntem aramasına ve nesne yönelimli programlama semantiğine sahip yeni bir sınıf nesnesi döndüren bir Class() işlevi istiyoruz.
Sınıf Fabrikası İskeleti
Fabrika, yöntem dağıtımı için bir meta tabloya sahip sınıf tablosu oluşturur.
local function Class()
local cls = {}
cls.__index = cls
cls.__name = "AnonymousClass"
function cls:new(...)
local instance = setmetatable({}, cls)
if instance.init then instance:init(...) end
return instance
end
return cls
endSınıf Tanımlama
Bir sınıf oluşturun, init işlevini (kurucuyu) tanımlayın ve yöntemler ekleyin.
local Animal = Class()
Animal.__name = "Animal"
function Animal:init(name, sound)
self.name = name
self.sound = sound
end
function Animal:speak()
print(self.name .. " says " .. self.sound)
end
local cat = Animal:new("Cat", "Meow")
cat:speak() -- Cat says MeowKurucu Kalıbı
:new(...) kurucusu, setmetatable({}, cls) aracılığıyla bir örnek oluşturur ve ardından başlatma için :init(...) işlevini çağırır. Bu, ayırma işlemini başlatma işleminden ayırır.
Hata Ayıklama için Sınıf Adı
cls.__name değerini saklayın ve örneklerin anlamlı biçimde yazdırılmasını sağlamak için __tostring tanımlayın.
function Animal:__tostring()
return "<" .. Animal.__name .. ": " .. self.name .. ">"
end
print(tostring(cat)) -- <Animal: Cat>init İçinde Varsayılan Değerler
or kullanarak init içinde varsayılan değerler sağlayın.
function Vehicle:init(opts)
self.speed = opts.speed or 0
self.fuel = opts.fuel or 100
self.engine = opts.engine or "petrol"
endSınıf Yöntemleri ve Örnek Yöntemleri
function cls.method() ile tanımlanan yöntemler sınıf yöntemleridir (self almaz). function cls:method() ile tanımlanan yöntemler örneği self olarak alır.
Statik Özellikler
Doğrudan sınıf tablosuna ayarlanan özellikler, örnek alanları tarafından gölgelenmedikçe tüm örnekler arasında paylaşılır.
Animal.count = 0
function Animal:init(name, sound)
Animal.count = Animal.count + 1
self.name = name; self.sound = sound
end
print(Animal.count) -- 0
Animal:new("Dog","Woof")
print(Animal.count) -- 1Kopya Kurucu
Bir :clone() yöntemi, alanlarını sığ biçimde kopyalayarak bir örneğin kopyasını oluşturur.
function Animal:clone()
local copy = setmetatable({}, getmetatable(self))
for k, v in pairs(self) do copy[k] = v end
return copy
endEşitlik Metayöntemi
Örnekler arasındaki anlamlı eşitlik karşılaştırmaları için __eq tanımlayın.
Animal.__eq = function(a, b)
return a.name == b.name
endNeden rawget Kullanılmamalı?
Türetilmiş sınıflarda metayöntem tabanlı alan erişimine izin vermek için self.field kullanın (rawget kullanmayın). rawget'i yalnızca atlamanın açıkça gerekli olduğu durumlarda kullanın.
Kurucu Tasarımı Sorusu
init neden new ayırıcısından ayrı olarak çağrılır?
Özet: Temel Sınıf ve Kurucu
Bir Class() fabrikası bir tabloyu sınıf olarak oluşturur, yöntem araması için __index = cls ayarını yapar ve :new() ile :init() işlevlerini sağlar. Bu, tüm Lua nesne yönelimli programlama kalıplarının temelidir.
Sıkça Sorulan Sorular
“Temel Sınıf ve Oluşturucu Tasarımı” dersi ücretsiz mi?
Evet — “Temel Sınıf ve Oluşturucu Tasarımı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“Temel Sınıf ve Oluşturucu Tasarımı” dersinde ne öğreneceğim?
Üst tabloları ve new() oluşturucularını kuran bir Class() fabrikası tasarlayın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Temel Sınıf ve Oluşturucu Tasarımı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Temel Sınıf ve Oluşturucu Tasarımı
- Çok Düzeyli Kalıtım
- Karışım Birleştirme ve Arayüz Denetimleri
- instanceof ve Tür İçgözlemi