[Ruby] 객체 지향 프로그래밍: class, module

OOING·2024년 10월 30일
0

클래스: class

접근 제한자: public, private

class NewClass
	def initialize(name)	
		@name = name
    end
    
    public
    def public_method
    	puts "public"
    end
    
    private
    def private_method
    	@private_value = 1
    end
end

값 읽기: attr_reader

class NewClass
	def initialize(name)
    	@name = name
     end
     
     def name
     	@name
     end
end

위 코드의 name 메소드를 attr_reader를 이용해 한 줄로 작성 가능

리팩토링

class NewClass
	attr_reader :name

	def initialize(name)
    	@name = name
     end
end

값 접근: attr_writer

attr_reader와 마찬가지로, 값 수정 역시 한 줄로 가능하다.

class NewClass
	def name=(value)
    	@name = value
    end
     
    # 한 줄로 리팩토링
    attr_writer :name
end

읽기 및 접근 모두 가능: attr_accessor

class NewClass
	attr_accessor :name
    
    # initialize 메소드
end

모듈: module

모듈: 클래스에서 사용할 기능들(메소드)을 제공하기 위해 만듦.
다양한 클래스에서 사용가능한 메소드를 제공하는 라이브러리.

모듈 예시: Math

puts Math::PI

루비에는 Math::PICircle::PI가 있으므로, 혼동하지 않기 위해 네임스페이스를 지정해준다(Math::

모듈 사용: require

require 'date'

클래스에 모듈을 포함: include

class Angle
	include Math
    
    def initialize(radians)
    @radians = radians
  end
  
  def cosine
    cos(@radians)
  end
end

이렇게 작성할 경우, Math::라고 네임스페이스를 작성하지 않고 모듈의 메소드?를 사용 가능.

profile
HICE 19

0개의 댓글