2011년 6월 2일 목요일

Virtual Attributes

모든 속성 접근 메서드가 객체의 인스턴스 변수에 접근하는 단순 wrapper일 필요는 없다. 만약 Song의 연주시간이 초단위가 아닌 분단위로 가져오고 싶다면
class Song
 def durationInMinutes
   @duration/60.0   # force floating point
 end
 def durationInMinutes=(value)
   @duration = (value*60).to_i
 end
end
aSong = Song.new("Bicylops", "Fleck", 260)
aSong.durationInMinutes»4.333333333
aSong.durationInMinutes = 4.2
aSong.duration»252



위 코드에서는 가상 인스턴스 변수를 만들어 유지하는 방법으로 속성 메서드를 사용했다. 객체 외부에서 보면 당연히 durationInMinutes는 다른 속성 메서드와 달라 보이지 않을 것이다. 이 방식은 인스턴스 변수와 계산된 값의 차이점을 숨겨서, 클래스 구현에서 나머지 세상을 보호할 수 있는 방법을 제공한다.

댓글 없음:

댓글 쓰기

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

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