거대한 논리 구조를 작게 만들어준다.


int a = 5, b = 3, c;


c = a + b; // 덧셈.




class SET

{

    ...

};


SET a{ 1, 2, 3 }, b{ 2, 3, 4 }, c;


c = a & b; // c 집합은 a, b 집합의 교집합. ( &연산자의 오버로딩으로 가능 )




class SHAPE

{

    ...

};


class CIRCLE : SHAPE

{

    ...

};


class RECTANGLE : SHAPE

{

    ...

};


class REGION : SHAPE

{

    ...

};


SHAPE* shapes[]{ new CIRCLE, new RECTANGLE, new REGION };


shapes[ 2 ] = shapes[ 0 ] + shapes[ 1 ]; // 합성도형을 얻음 + 연산자의 오버로딩으로 가능.




결국, 정수형 변수 a, b 처럼 논리적으로 작아진 개체를 익숙한 인터페이스를 통해 직관적으로 다룰 수 있다.


거대한 실체를 숨긴다. 복잡한 실체를 숨긴다.


내부적으로만 구성된 것과 외부적으로 다루어져야 할 것들을 권한 관리 한다.




즉 OOP란,


편할려고 쓰는거다. ( 설계하는쪽은 결코 편하진 않지만, 재밌다. 나중에 나도 편하다 )