Mendefinisikan class
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Ruby di Coddy. Pelajaran 2 dari 57.
Sebuah class menjelaskan jenis object: apa yang diketahuinya dan apa yang dapat dilakukannya. class Dog ... end mendeklarasikan class tersebut, dan Dog.new membuat object dari class itu, yaitu sebuah instance. Method yang didefinisikan dengan def di dalam class dapat dipanggil pada setiap instance:
class Dog
def speak
"Woof"
end
end
rex = Dog.new
puts rex.speak
puts rex.classOutput:
Woof
Dognew membuat object, lalu memanggil method initialize dengan argumen yang kamu berikan kepada new. initialize menyiapkan object, biasanya dengan menyimpan argumen dalam variabel instans, yang namanya diawali dengan @:
class Dog
def initialize(name)
@name = name
end
def speak
"#{@name} says Woof"
end
end
puts Dog.new("Rex").speak
puts Dog.new("Bella").speakOutput:
Rex says Woof
Bella says Woofmethod menerima argumen seperti method Ruby lainnya dan mengembalikan nilai dari ekspresi terakhirnya. Setiap pemanggilan new membuat object yang terpisah:
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])Output:
5
3.0Nama class adalah konstanta yang ditulis dalam CamelCase (BankAccount); nama method dan variabel menggunakan snake_case (deposit_money). new memeriksa argumennya berdasarkan initialize, jadi argumen yang tidak diberikan akan memunculkan ArgumentError:
class Point
def initialize(x, y)
@x = x
@y = y
end
end
begin
Point.new(1)
rescue ArgumentError => e
puts e.message
endOutput:
wrong number of arguments (given 1, expected 2)Tantangan
MudahLengkapi class Formatter. Method title(text) mengembalikan teks dengan setiap kata diawali huruf kapital (the hobbit menghasilkan The Hobbit), slug(text) mengembalikan kata-kata dalam huruf kecil yang digabungkan dengan - (the-hobbit), dan initials(text) mengembalikan huruf pertama dari setiap kata dalam huruf kapital (TH).
Kode yang disediakan membuat satu Formatter dan, untuk setiap baris input, mencetak tiga hasil pada baris terpisah.
Tulis kodemu di formatter.rb. main.rb berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
require_relative 'formatter'
# Kode input/output sudah disediakan: biarkan apa adanya
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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1class dan object
Bekerja dengan fileMendefinisikan classVariabel instansmethod dan selfto_s dan inspectRingkasan: Kartu Perpustakaan4Enkapsulasi
private methodprotected methodprivate setterMelindungi StatusUlasan, Mesin Penjual Otomatis7Polimorfisme dan Duck Typing
PolimorfismeDuck TypingMethod Abstrakcase dan classRingkasan: Method Pembayaran2Accessor dan self
Pembaca dan PenulisSetter Kustomself dalam methodIdentitas dan KesetaraanRangkuman: Daftar Kontak8Special method
Kesetaraan dan hashOperator methodPengindeksan dan penambahanKoleksi kustomRingkasan: Pecahan11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam Buku3Method dan Variabel class
Method classVariabel instance classKonstantaMethod pabrikRangkuman: Kode KuponLatihan sendiri: Compiler Ruby online