프로그래밍/Ruby

루비에서 객체지향 이야기 ( 캡슐화 )

seungdols 2015. 7. 23. 10:11



루비의 경우에는 클래스 작성시 initialize() 메소드가 무조건 추가 해야 합니다. 생성자라고 하기도 하는 녀석?입니다. 

클래스를 객체로 만드는 것을 "인스턴스화"라고 하며, 인스턴스 화의 결과물은 "객체"입니다. 


객체가 생성 되기 위해 루비에서는 initialize() 함수가 필요로 합니다. 


@표시는 클래스에 속한 변수라는 의미로 "인스턴스 변수"라고 말합니다. p는 출력 메소드입니다.

p() = p는 동일 합니다.


c1.value라는 것은 c1의 인스턴스 변수  값을 반환하라~는 말과 같은데, 루비에서는 클래스의 인스턴스 변수 접근에 직접적인 접근을 허용하지 않습니다.

그래서 필요로 한 방법이 get/set 함수를 통한 접근이 있습니다.get/set 함수를 이용하면 캡슐화를 보장 하는 기능이 있습니다.

캡슐화란? 클래스를 감싸는 것이라고 생각하시면 됩니다. (언어는 중요하지 않습니다. 훗날에 다시 공부하시면 되니까요!)


클래스 = 변수, 함수의 저장 공간입니다. 외부에서 클래스의 변수, 함수를 막 접근 하면 변수와 함수를 같이 묶어 두는 수고를 할 


필요가 없겠죠???외부의 접근을 막고 비슷한 변수, 비슷한 함수끼리 묶는 것을 클래스라고 말합니다. 


즉, 클래스는 버스이긴 한데 문이 하나여서 다른 창문으로는 접근을 못하는 것처럼 생각하시면 됩니다. 


그 문은 오직 get/set 함수로만 지나가고 들어가고 할 수 있습니다.


직접적인 접근은 금지 하되 우회로를 통해 접근한다! 파이썬과 약간의 차이가 있으나, 


루비,파이썬 모두 get/set 함수를 통한 접근이 더 좋은 프로그래밍 습관입니다.  


반응형