※ 제 부족한 생각을 정리한 주관적 포스팅 입니다. 개발을 처음 시작하면서 적당한 언어를 배우고 나면 따라오는것이 객체지향 프로그래밍(이하 객체지향)에 대한 개념이다. 그리고 객체지향을 집중적으로 공부하다보면 마치 객체지향은 '정답'이고 절차지향은 '오답'이라는 생각에 갇히게 된다. 개발자 사이에 이런 분위기가 전반적으로 깔려 있는것도 사실이다. 열심히 객체지향을 공부하고 Spring 환경의 실무 코드를 보고 있으면 마치 엄청난 안티패턴들이 실무에 자리잡고 있지 않은가 한탄하게 된다. 내가 공부했던 객체지향은 어디에 적용되어있는가? 라는 회의감도 빠지게된다. 공부한 이상적 패턴과 현실의 괴리감에 고통스럽기도 하다. 언젠간 이러한 구조를 객체지향적으로 바꿔야겠다는 다짐도 하게된다. 신기한건 실무에 있다보면..
추상화(Abstraction) 객체 설계를 위해 추상화 작업은 중요한 것은 남기고, 불필요한 것은 제거하는 일입니다. (비즈니스 적으로 추상화가 잘 된 객체는 오히려 재사용성이 떨어지게 됩니다.) 추상? 개념은 쉽게 이해가 되나 용어의 혼선이 오는 초보개발자가 있을 겁니다. (물론 제가 그랬다는 겁니다. 그리고 저와 같은 고통을 받고 있던 친구들도 포함이죠.) 이러한 분들이 생각하는 추상은 '구체적'의 반댓말로 모호한(?)것이라는 개념으로 이해하고 있기 때문입니다. 실제 추상에 대한 사전적 정의는 아래와 같습니다.추상(抽象) : 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용. 사전적 의미를 생각하면서 객체의 추상화를 진행해봅시다. 앞서 예제로 설명한 '강아지, 사자, ..