반응형

가장 많이 하는 세상 모든 것을 객체로 바라보고 객체로 설계한다.

맞는 말이라고 생각 합니다. 하지만 당연히 현실에서는 불가능한 날개가 달린 호랑이 객체 같은 것들이 나올 수는 있겠죠??

즉, 세상의 모든 것을 객체로 바라본다는 것은 호랑이 자체를 객체로만 만들 수 있다는 아니라는 점 입니다.

현실에서는 불가능한 날 수 있는 호랑이 객체도 가능 하다는 것이죠.(너무 당연..)

결국, 호랑이에 대한 모든 것을 객체로 만든다기 보다는 맹수라는 객체로 호랑이를 추상화하고,

여기에 모양이 맞는 호랑이, 사자와 같은 객체 만드는 것이라고 생각 합니다.

이렇게 원하는 것들을 모두 객체로 바라보는 것이 객체지향이고, 이를 프로그래밍화 하는 것이

객체지향 프로그래밍 이라고 생각 합니다.

객체지향 프로그래밍은 왜 생겨났을까?


재사용성을 높여 생산성을 높이기 위해서 탄생 했다고 생각 합니다.

아무래도 매번 필요한 기능들을 새로 만들지 않고, 이미 있는 기능들을 사용하면 생산성이 높아지겠죠??

이런 점을 이용해서 객체지향은 중복된 코드가 없어지면서 자연스레 재사용성이 좋아지고, 재사용성이 좋아지니

중복 코드도 자연스레 없어지게 되는 현상도 발생 합니다.

코드도 잘 분리되어 의존성이 적어져 유지보수도 용이하게 됩니다.

객체지향 프로그래밍을 잘하기 위해서


이는 정말 어려운 과제라고 생각합니다. 그냥 언어를 배우고, 업무를 배우고 하는 것과 달리 배운다고 다는 것이 아닌

다년간의 경험이 쌓여야만 가능한 부분이라고 생각 합니다. 당연히 공부는 병행 되어야 하죠.

그렇다면 기본적으로 어떤 부분을 생각하면서 해야 할까요??

저의 생각은 객체를 잘 쪼개야 한다고 생각 합니다.

객체를 쪼개는 것??

각 객체에게 역할을 잘 부여하고, 각 역할끼리 협력을 할 수 있도록 객체를 설계하는 것 입니다.

객체에게 역할을 부여 한다는 것은 객체가 정말 자신이 해야할 일만 하도록 하는 것.

협력은 본인이 지니지 못한 역할을 지닌 객체에게 객체가 도와 달라고 협력을 요청하는 것 입니다.

이렇게 설계가 되면 코드가 의존성이 줄어 들어, 코드 하나 잘못 만진다고 다른 코드들에 영향력이 적어 집니다.

그래서 객체지향 프로그래밍이 뭘까?


객체를 이용하여 각각의 역할을 분리하고, 분리된 객체들을 재사용하여 재사용성을 높여 생산성을 높이기 위한 프로그래밍 방식으로

이와 같은 과정에서 다형성이라는 객체지향의 특징을 이용하여 코드에 변화를 최소화로 하여 유지보수도 용이하도록 하기

위한 것.

재사용을 용이하게 하기 위해서는 추상화가 중요한데 사용자는 해당 내부 코드를 알지 못해도 명칭만 보고 이런 기능이구나!!

라고 느낄 수 있게 분리 된 것을 추상화라고 합니다.

만약 재사용을 해야 하는데 내부 코드까지 다 알아야 한다면 재사용이 불편 하겠죠?

반응형

'기타 IT' 카테고리의 다른 글

싱글톤에서의 상태값  (0) 2021.09.26
IoC, DI 컨테이너  (0) 2021.09.26
라이브러리와 프레임워크 차이  (0) 2021.09.26
좋은 코드가 뭐에요??  (0) 2021.05.15
개발 기본 개념들  (0) 2021.05.15
복사했습니다!