거대한 논리 구조를 작게 만들어준다.
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란,
편할려고 쓰는거다. ( 설계하는쪽은 결코 편하진 않지만, 재밌다. 나중에 나도 편하다 )
재밌음
만든거 또 만드는 자신을 발견하게 되는데...
사실 추상화 쌓는 센스만 있으면 OOP 설계하는 쪽도 편해지죠 물론 다형성이랑 상속 떡칠하기 시작하면 지옥 시작이지만