0Pricing
Lua Academy · Ders

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
end

Sı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 Meow

Kurucu 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"
end

Sı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)  -- 1

Kopya 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
end

Eş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
end

Neden 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

  1. Temel Sınıf ve Oluşturucu Tasarımı
  2. Çok Düzeyli Kalıtım
  3. Karışım Birleştirme ve Arayüz Denetimleri
  4. instanceof ve Tür İçgözlemi
← Lua Academy Sayfasına Dön