fullstack

[C++] 캡슐화 (EnCapsulation)

Language/C++

C++ 객체지향에서 클래스는 캡슐화 하여야 한다.

캡슐화는 관련 있는 데이터와 함수를 하나의 단위로 묶는 것을 말한다.


다음은 캡슐화가 되어 있지 않은 경우이다.


1
2
3
4
5
6
7
8
9
10
11
12
class Point
{
public:
    int x;
    int y;
};
 
class DrawPoint
{
public:
    void draw(Point p) { cout << "draw " << p.x << ", " << p.y << endl; }
};



위 예제는 Point에 대한 데이터와 함수가 두 개의 클래스로 나뉘어져 있다. 

다음과 같이 관련있는 데이터와 함수를 묶어 캡슐화 해야 한다.


1
2
3
4
5
6
7
8
class Point
{
public:
    int x;
    int y;
 
    void draw() { cout << "draw " << x << ", " << y << endl; }
};



캡슐화에 대한 기본 개념은 어렵지 않다. 예제 또한 간단하여 쉽다고 생각할 수 있으나 실무에서는 어디까지를 관련있는 데이터나 함수로 볼 것인지에 대한 결정을 하기 매우 어렵기 때문에 많은 경험과 노하우를 필요로 한다.


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

[C++] this 포인터  (0) 2015.12.02
[C++] 생성자(Constructor)와 소멸자(Destructor)  (0) 2015.11.30
[C++] 정보은닉 (Information Hiding)  (0) 2015.11.30
[C++] 동적할당. new와 delete  (0) 2015.11.30
[C++] Reference  (0) 2015.11.29