클래스 정의하기
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
Dognew는 객체를 생성한 다음, 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)챌린지
쉬움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
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 Ruby 컴파일러