Menu
CoddyTech

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.class

Output:

Woof
Dog

new 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").speak

Output:

Rex says Woof
Bella says Woof

method 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.0

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

Output:

wrong number of arguments (given 1, expected 2)
challenge icon

Tantangan

Mudah

Lengkapi 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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Ruby online