Ruby Basic - 5

woolim park·2021년 3월 14일
0

Ruby Basic

목록 보기
5/9
post-thumbnail

Class

Defind a Class

루비에서 class 를 선언하는 방법은 다음과 같다. snake case 로 짓는 메소드명과 달리, 클래스의 이름은 Convention 상 camel case로 짓는다.

class MyClass
	...
end

클래스를 재선언하더라도 루비는 오류를 띄우지 않는다.

initialize 메소드를 사용하여 constructor 를 만들 수 있다.

class Animal
	attr_accessor :noise

	def initialize(options={})
    	@noise = options[:noise] || 'Grrr!'
    end
end

create instance

클래스로부터 인스턴스를 생성하려면 ClassName.new 를 사용한다.

> p1 = Person.new

attributes

class 속성의 reader (getter) 와 writer (setter) 를 만드는 방법.

1. 손수 reader와 writer 를 만드는 방법

class Animal
	def noise
    	@noise
    end

    def noise=(value)
    	@noise = value
    end
end

2. attr_reader, attr_writer 를 사용하는 방법

class Animal
	attr_reader :noise
    attr_writer :noise
end

3. attr_accessor 를 사용하는 방법

attr_accessor 를 사용하면 한 attr_reader, attr_writer 를 한 줄로 줄일 수 있다.

class Animal
	attr_accessor :noise
end

Method access control

접근자의 종류

  • public
  • protected
  • private
class MyClass
  	def method_1 ...
  protected
  	def method_2 ...
  private
  	def method_3 ...
end

Class Methods

모든 인스턴스가 공유하는 클래스 메소드를 만드려면 메소드 이름 앞에 self 를 붙여준다. class method 팩토리 패턴 예시도 참고.

class MyClass

	def self.method_name
    end
    
    def self.factory_pattern_example
    	MyClass.new()
    end
end

Class Attributes

class Animal
	@@species = ['cat', 'dog']
    
    def self.species
    	@@species
    end
    
    def self.species=(array)
    	return unless arra.is_a?(Array)
        @@species = array
    end
end

레일즈에는 cattr_accessor 가 정의되어 있어 쉽게 클래스 변수를 만들 수 있다.

profile
Javascript Developer

0개의 댓글