Sınıf Tanımlama
Coddy'nin Ruby Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 2 / 57.
Bir sınıf, bir nesne türünü tanımlar: neleri bildiğini ve neler yapabildiğini. class Dog ... end sınıfı bildirir ve Dog.new bu sınıftan bir nesne, yani bir örnek oluşturur. Sınıf içinde def ile tanımlanan bir yöntem her örnek üzerinde çağrılabilir:
class Dog
def speak
"Woof"
end
end
rex = Dog.new
puts rex.speak
puts rex.classÇıktı:
Woof
Dognew nesneyi oluşturur ve ardından new için verdiğiniz bağımsız değişkenlerle nesnenin initialize yöntemini çağırır. initialize nesneyi hazırlar; bunu genellikle bağımsız değişkenleri, adları @ ile başlayan örnek değişkenlerinde saklayarak yapar:
class Dog
def initialize(name)
@name = name
end
def speak
"#{@name} says Woof"
end
end
puts Dog.new("Rex").speak
puts Dog.new("Bella").speakÇıktı:
Rex says Woof
Bella says WoofYöntemler, diğer Ruby yöntemleri gibi bağımsız değişkenler alır ve son ifadelerinin değerini döndürür. Her new çağrısı ayrı bir nesne oluşturur:
class Calculator
def add(a, b)
a + b
end
def average(numbers)
numbers.sum.to_f / numbers.size
end
end
calc = Calculator.new
puts calc.add(2, 3)
puts calc.average([1, 2, 3, 6])Çıktı:
5
3.0Sınıf adları CamelCase ile yazılmış sabitlerdir (BankAccount); metot ve değişken adları snake_case kullanır (deposit_money). new, argümanlarını initialize ile karşılaştırır; bu nedenle eksik bir argüman ArgumentError hatasına yol açar:
class Point
def initialize(x, y)
@x = x
@y = y
end
end
begin
Point.new(1)
rescue ArgumentError => e
puts e.message
endÇıktı:
wrong number of arguments (given 1, expected 2)Görev
KolayTamamlayın Formatter sınıfını. title(text) yöntemi, her kelimenin ilk harfi büyük olacak şekilde metni döndürür (the hobbit, The Hobbit sonucunu verir); slug(text), kelimeleri küçük harfle ve - ile birleştirerek döndürür (the-hobbit); initials(text) ise her kelimenin ilk harfini büyük olarak döndürür (TH).
Sağlanan kod bir Formatter oluşturur ve her girdi satırı için üç sonucu ayrı satırlara yazdırır.
Kodunuzu formatter.rb dosyasına yazın. main.rb, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
require_relative 'formatter'
# Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
input = []
while (line = gets)
input << line.chomp
end
formatter = Formatter.new
input.each do |line|
puts formatter.title(line)
puts formatter.slug(line)
puts formatter.initials(line)
end
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıf TanımlamaÖrnek DeğişkenleriMetotlar ve selfto_s ve inspectÖzet - Kütüphane Kartı7Çok Biçimlilik ve Ördek Tiplemesi
Çok BiçimlilikÖrdek TiplemesiSoyut Metotlarcase ve SınıflarTekrar - Ödeme Yöntemleri2Erişimciler ve self
Okuyucular ve YazıcılarÖzel Setter'larMetotlarda selfKimlik ve EşitlikTekrar - Kişi Listesi5Kalıtım
Alt sınıflarMetotları geçersiz kılmasuper çağrısıis_a? ve üst sınıflarTekrar - Personel Maaşları8Özel Metotlar
Eşitlik ve hashOperatör Metotlarıİndeksleme ve EklemeÖzel KoleksiyonlarTekrar - Kesirler11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç Alma3Sınıf Metotları ve Değişkenleri
Sınıf MetotlarıSınıf Örnek DeğişkenleriSabitlerFabrika MetotlarıTekrar - Kupon KodlarıKendi başına pratik yap: Online Ruby derleyicisi