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: ne bildiğini ve ne yapabildiğini. class Dog ... end sınıfı bildirir ve Dog.new bu sınıfın bir nesnesini, yani bir örneği oluşturur. Sınıfın 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; genellikle bağımsız değişkenleri adları @ ile başlayan örnek değişkenlerinde depolar:
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, herhangi bir Ruby yöntemi gibi bağımsız değişkenler alır ve son ifadelerinin değerini döndürür. new için yapılan her çağrı 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ılan sabitlerdir (BankAccount); yöntem ve değişken adları snake_case kullanır (deposit_money). new, bağımsız değişkenlerini initialize ile karşılaştırır; bu nedenle eksik bir bağımsız değişken ArgumentError hatası oluşturur:
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
KolayFormatter sınıfını tamamla. Bu sınıfın title(text) metodu, her kelimenin ilk harfi büyük olacak şekilde metni döndürür (the hobbit, The Hobbit sonucunu verir); slug(text) metodu, kelimeleri - ile birleştirerek küçük harfle döndürür (the-hobbit); initials(text) metodu ise her kelimenin ilk harfini büyük harfle döndürür (TH).
Sağlanan kod bir Formatter oluşturur ve her girdi satırı için üç sonucu ayrı satırlarda yazdırır.
Kodun formatter.rb dosyasına yazılmalıdır. main.rb sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
require_relative 'formatter'
# Sağlanan girdi/çıktı 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