2011년 6월 2일 목요일

Access Control

Access Control

루비에서 객체의 상태를 변경하는 방법은 메서드를 호출하는 것 뿐이다. 메서드에 대한 접근을 적당히 조절하면, 객체에 대한 접근을 제어할 수 있는 것이다. 루비에서는 3가지의 접근 제어자가 있다.
  • Public : 누구나 호출할 수 있다. 아무런 접근 제어를 하지 않는다. 루비에서는 메서드는 기본적으로 initialize 메서드를 제외하고는 모두 public 이다.
  • Protect : 그 객체를 정의한 클래스와 하위 클래스에서만 호출할 수 있다. 접근이 가계도 상으로 제한되는 것이다.
  • Private : 수신자를 지정해서는 호출할 수 없다. 오직 현재 객체의 문맥 하에서만 호출할 수 있다.


루비에서는 접근 제어가 동적으로 결정된다. 정적이 아니라 프로그램이 실행될 때 결정된다. 따라서 접근 위반에러는 제한된 메서드를 실제로 호출하는 그 순간에만 발생하게 된다. 접근제어의 일반적인 기술 방법은 아래와 같다.

class MyClass

     def method1    # default is 'public'
       #...
     end

 protected          # subsequent methods will be 'protected'

     def method2    # will be 'protected'
       #...
     end

 private            # subsequent methods will be 'private'

     def method3    # will be 'private'
       #...
     end

 public             # subsequent methods will be 'public'

     def method4    # and this will be 'public'
       #...
     end
end
다른 방법으로 접근제어를 지정할 수 있는데 이래 처럼 접근제어 함수에 해당 메서드를 지정해주는 방식이 있다.

class MyClass

 def method1
 end

 # ... and so on

 public    :method1, :method4
 protected :method2
 private   :method3
end

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...