Menu
Coddy logo textTech

クラスの定義

CoddyのRubyジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 2/57。

クラスは、オブジェクトの種類を表します。つまり、そのオブジェクトが知っていることと、できることを定義します。class Dog ... endはクラスを宣言し、Dog.newはそのクラスのオブジェクトであるインスタンスを作成します。クラス内でdefを使って定義されたメソッドは、すべてのインスタンスで呼び出せます。

class Dog
  def speak
    "Woof"
  end
end

rex = Dog.new
puts rex.speak
puts rex.class

出力:

Woof
Dog

newはオブジェクトを作成し、その後、newに渡した引数を使ってオブジェクトのinitializeメソッドを呼び出します。initializeはオブジェクトをセットアップします。通常は、引数をインスタンス変数に格納します。インスタンス変数の名前は@で始まります。

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

出力:

Rex says Woof
Bella says Woof

メソッドは他の Ruby メソッドと同様に引数を受け取り、最後の式の値を返します。new を呼び出すたびに、別々のオブジェクトが構築されます。

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])

出力:

5
3.0

クラス名は CamelCase で記述する定数です(BankAccount)。メソッド名と変数名には snake_case を使用します(deposit_money)。new は引数を initialize と照合するため、引数が不足していると ArgumentError が発生します。

class Point
  def initialize(x, y)
    @x = x
    @y = y
  end
end

begin
  Point.new(1)
rescue ArgumentError => e
  puts e.message
end

出力:

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

チャレンジ

簡単

クラス Formatterを完成させてください。そのメソッド title(text)は、すべての単語の先頭を大文字にしたテキストを返します(the hobbitはThe Hobbitになります)。slug(text)は、単語を小文字にして-で連結したものを返し(the-hobbit)、initials(text)は、各単語の最初の文字を大文字にして返します(TH)。

提供されたコードはFormatterを1つ作成し、入力行ごとに3つの結果を別々の行に出力します。

コードはformatter.rbに記述してください。main.rbには提供された入出力コードが含まれており、編集できません。

自分で試してみよう

require_relative 'formatter'

# 提供された入出力コード: そのままにしておく
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 icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Rubyオンラインコンパイラ