조영호님의 객체지향의 사실과 오해 책이다.
책을 읽게 된 계기
객체지향적으로 설계가 궁금해서 오브젝트를 구입했는데
앞부분을 보다가 객체지향적 설계를 제대로 이해를 못했다
알아보니 오브젝트가 코드 위주로 나온 2편이고
소설처럼 나온 1편인 객체지향의 사실과 오해 구입하게 된다.
객체란?
초반부에 객체를 정의하면서 이후 객체지향에 대해 이야기를 한다
아직 읽지 못한 사람을 위해 맛보기로 간단히 초반부의 책의 내용을 읽어주겠다 (이후 내용은 구입해서 경험해보세요!!)
맨 처음엔 객체지향을 다음과 같이 표현한다
객체지향의 목표는 실세계를 모방하는 것이 아니다.
오히려 새로운 세계를 창조하는 것이다.
아리쏭한 말이다. 그 뒤 다양한 이야기로 객체와 객체지향에 접근을 한다
커피 주문이야기로 객체는 서로 협력하는 걸 설명해준다.
이상한 나라의 앨리스를 주제로 객체에 접근한다. 아래는 그 내용의 일부분이다.
앨리스는 커튼 뒤에 숨겨진 작은 문을 발견했다. 문 뒤에는 아름다운 정원이 펼쳐있다. 하지만 문의 높이가 40cm 밖에 안되서 앨리스는 문을 지나갈 수 없다
(중략...)
앨리스는 버섯의 한쪽을 먹어 몸을 키우다가 몸이 너무 커지면 반대 쪽을 먹어 몸을 작게 줄였다. 반대로 몸이 너무 작아지면 다른 쪽을 먹어 몸의 크기를 조금씩 늘려나갔다. 앨리스는 매우 신중하게 버섯의 양쪽을 번갈아 먹으며 몸의 크기를 조절했다.
앨리스가 버섯을 먹고 키를 조절한다.
앨리스란 객체가 먹는 행동으로 키라는 상태가 변경되는걸 이야기하고
앨리스는 키(상태)에 상관없이 앨리스로 식별된다고 한다
객체란 식별 가능한 개체 또는 사물이다. 객체는 자동차처럼 만질 수 있는 구체적인 사물일 수도 있고, 시간처럼 추상적인 개념일 수도 있다. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다. 소프트웨어 안에서 객체는 저장된 상태와 실행 가능한 코드를 통해 구현된다.
느낀점
이전까지 간단하게 객체는 붕어빵을 찍어내는 붕어빵틀(클래스)로 생각했고
첫 회사였던 SI 환경에서는 인터페이스, 캡슐화, 다형성, 추상화 등을 몰라도
controller,
service,
serviceImpl(service의 구현부는 오로지 1개만 있어야한다),
mapper,
DTO
정해진 틀안에서 누구나 개발이 가능했다 (SI 를 공사장 막노동이라 칭하기도한다)
누군가는 이 책을 몇시간이면 읽겠지만 나는 오래걸렸다. 3일동안 읽었다.
개념 하나씩 알아갈 때 마다 지난 3년간의 개발경험이
객체지향에 맞게 재조립하는 상상을 해서 오래걸렸지만
덕분에 객체가 무엇인지, 객체지향이 무엇인지 알게되었다
(3년차 개발자가 이제서야 깨닫다니. 부끄...ㅠㅜ)