클래스는 객체의 생성을 목적으로 디자인한다.


좋은 클래스가 되기 위한 최소한의 조건은 무엇일까?


ⓐ 정보은닉

ⓑ 캡슐화


이 두가지는 꼭 생각하며 클래스를 디자인해야 한다.


정보은닉을 하는 이유? 

제한된 방법으로의 접근만 허용을 해서 잘못된 값이 저장되지 않도록 하는데 있다. 또 실수를 했을 때, 실수가 쉽게 발견되도록 하는데 있다.


만약, 멤버변수가 직접적으로 접근이 가능하다면, 그리고 그곳에 음수가 들어가면 안되는 곳이라면.. 직접접근을 했을 때 위험에 노출된다. 

하지만 멤버변수를 private으로 설정하고 함수로만 멤버변수에 접근이 가능하도록 디자인한다면!!! 그 함수만 잘 만들면 잘못된 값의 저장을 막을 수 있다. 

이렇듯, 정보은닉은 꼭 생각하며 클래스를 디자인해야 한다.




코드에 있는 int GetX() const,   bool GetX(int xpos) 함수들을 가리켜 "엑세스 함수(access function)"이라고 한다. 이들은 멤버변수를 private으로 선언하면서 클래스 외부에서의 멤버변수 접근을 목적으로 정의되는 함수들이다.


보통 Get함수이름, Set함수이름을 쓴다. Get은 값을 리턴하는 목적이고, Set값을 대입하는 목적이다.


※ 지금 당장은 필요치 않지만 필요할 수 있다고 판단되는 함수들도 더불어 멤버에 포함시키는 경우도 많다. 대표적인 예가 '엑세스 함수'들이다.


'Programming > C++' 카테고리의 다른 글

생성자(Constructor)  (0) 2012.05.12
캡슐화  (0) 2012.05.12
const 함수  (2) 2012.05.08
Message Passing  (0) 2012.05.02
클래스 기반의 두 가지 객체생성 방법  (0) 2012.05.02
Posted by scii
: