Menu
Coddy logo textTech

클래스 정의하기

Coddy Ruby 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 2번째.

클래스는 객체의 종류를 설명합니다. 즉, 객체가 무엇을 알고 무엇을 할 수 있는지를 정의합니다. 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 하나를 생성하고, 각 입력 줄에 대해 세 결과를 별도의 줄에 출력합니다.

코드는 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 컴파일러