0Pricing
Ruby Academy · Ders

include ve extend

Davranış ekleme

include ve extend, CoddyKit'te ücretsiz bir Ruby Academy dersidir. Bu, 4 dersinin 2. 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, Ruby Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Ruby Academy kursu toplamda 4 dersten oluşur.

Davranışı Karışıma Dâhil Etme

Modüllerin asıl gücü, kalıtım kullanmadan metotları sınıflar arasında paylaşan karışımdır. Bunun için kullanılan iki temel araç include ve extend ifadeleridir.

module Walkable
  def walk
    "#{name} is walking"
  end
end
class Person
  include Walkable
  attr_reader :name
  def initialize(name)
    @name = name
  end
end
puts Person.new("Ada").walk

include Örnek Metotları Ekler

include, bir modülün metotlarını örnek metotları olarak karışıma dâhil eder. Sınıfın her nesnesi bu metotları kazanır.

module Sayable
  def say(msg)
    "#{msg}!"
  end
end
class Dog
  include Sayable
end
puts Dog.new.say("Woof")

Sınıflar Arasında Yeniden Kullanım

Tek bir modül, ortak bir üst sınıf olmadan birbiriyle ilgisiz birçok sınıfa dâhil edilerek davranış paylaşabilir.

module Timestamped
  def stamp
    "created"
  end
end
class Post; include Timestamped; end
class Comment; include Timestamped; end
puts Post.new.stamp
puts Comment.new.stamp

extend Sınıf Metotları Ekler

extend, bir modülün metotlarını sınıf metotları olarak (sınıf nesnesinin kendisi üzerindeki metotlar olarak) karışıma dâhil eder.

module Findable
  def find(id)
    "Finding record #{id}"
  end
end
class User
  extend Findable
end
puts User.find(42)

Bir Nesne Üzerinde extend

Yalnızca tek bir nesnenin metotları kazanması ve diğerlerinin değişmeden kalması için o nesne üzerinde extend kullanabilirsiniz.

module Admin
  def privileges
    "all access"
  end
end
user = Object.new
user.extend(Admin)
puts user.privileges

include ve extend Karşılaştırması

Aradaki ayrımı unutmayın:

  • include => metotlar örnek metotları olur.
  • extend => metotlar sınıf/nesne metotları olur.
module Helper
  def help; "helping"; end
end
class A; include Helper; end
class B; extend Helper; end
puts A.new.help
puts B.help

Modüller Ana Nesnenin Metotlarını Görür

Karışıma dâhil edilen bir metot, onu barındıran nesnenin bağlamında çalışır; bu nedenle nesnenin kendi metotlarını çağırabilir ve verilerine erişebilir.

module Describable
  def describe
    "I am #{role}"
  end
end
class Worker
  include Describable
  def role; "a worker"; end
end
puts Worker.new.describe

included Kancası

Bir modül dâhil edildiğinde kodu otomatik olarak çalıştırmak için self.included(base) tanımlayın. Klasik bir kullanım, aynı anda sınıf metotları eklemektir.

module Trackable
  def self.included(base)
    puts "Trackable added to #{base}"
  end
end
class Order
  include Trackable
end

Üyeliği Denetleme

is_a? ve ancestors, dâhil edilen bir modülün nesnenin tür zincirinin parçası hâline geldiğini gösterir.

module Flyable; end
class Bird; include Flyable; end
b = Bird.new
puts b.is_a?(Flyable)
p Bird.ancestors

Birden Çok Karışımı Birleştirme

Bir sınıf, birçok küçük ve odaklanmış parçadan davranış oluşturmak için birden fazla modülü dâhil edebilir.

module Swimmable; def swim; "swimming"; end; end
module Runnable; def run; "running"; end; end
class Athlete
  include Swimmable
  include Runnable
end
a = Athlete.new
puts a.swim
puts a.run

Hepsini Bir Araya Getirme

Karışımlar davranışı esnek biçimde paylaşır:

  • Örnek metotları için include.
  • Sınıf veya tek nesne metotları için extend.
  • Karışıma dâhil edilen metotlar, onları barındıran nesnenin bağlamında çalışır.
  • Birçok küçük modülü birleştirin.
module Greet
  def hi; "hi from #{self.class}"; end
end
class Cat; include Greet; end
puts Cat.new.hi

Hızlı Kontrol

include ve extend ile ilgili anlayışınızı test edin.

Özet

Karışımları öğrendiniz:

  • include => örnek metotları.
  • extend => sınıf veya tek nesne metotları.
  • Karışıma dâhil edilen metotlar, onları barındıran nesnenin bağlamında çalışır.
  • included kancası, dâhil etme sırasında çalışır.
module Loud
  def shout(s); s.upcase; end
end
class Speaker; include Loud; end
puts Speaker.new.shout("hello")

Sıkça Sorulan Sorular

“include ve extend” dersi ücretsiz mi?

Evet — “include ve extend” 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 Ruby Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Ruby Academy kursu toplamda 4 dersten oluşur.

“include ve extend” dersinde ne öğreneceğim?

Davranış ekleme Ruby 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.

Ruby Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Ruby 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 2. dersidir.

“include ve extend” 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 Ruby Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Ruby 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. Modüller Tanımlama
  2. include ve extend
  3. Comparable ve Enumerable
  4. prepend ve Yöntem Çözümleme
← Ruby Academy Sayfasına Dön