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

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...