CH03 자바와 객체 지향
챕터 소개
이번 챕터는 객체지향 패러다임에 대한 전반적인 철학을 샘플 코드와 함께 설명하는 챕터였다. 사실 적지 않은 부분들이 조영호님 책하고 대치되는 이야기들도 있어서 감안하면서 봤다. 어찌보면 객체 지향이라는 패러다임 자체를 다루는 부분이라서 가장 중요할 수 있는 부분이긴 한데, 조영호님 책 정리하면서 많이 다뤘던 부분이라서 정리할 내용이 많지 않았다.
정리를 아예 안하기도 그렇고, 하자니 대치되는 이야기가 많아서 어찌할까 고민하다가 어떻게 관점이 다른지를 내 생각과 함께 정리하면 나중에 내가 복습차원에서 볼 때 도움이 되겠다는 생각이 들었다.
추상화
추상화에 대해서는 공통되는 부분을 관찰하고 이를 선정해 개념화 한다는 의미는 서로 맞는 것 같다. 하지만 내가 이해한 조영호님 책하고 다른 점은 이 책에서는 '공통 특성 / 공통 속성' 추출 이라는 것에 집중하는 반면, 객체지향의 사실과 오해에서는 오롯이 객체의 '행동' 에 집중한다. 그래서 추상화를 하더라도 객체가 어떤 책임 및 역할을 수행하는가 라는 대전제 아래에서 공통된 '행동' 을 추상화 하는 반면, 이 책에서는 정말 리얼 어떤 '상태값'이 공통이냐, 어떤 '메소드'가 공통이냐 에 집중한다. 나는 개인적으로 행동에 집중하고 최대한 상태값을 줄이는 게 좋다고 본다.
이 부분에서 관점이 가장 크게 대치되고 있다. 객체 지향의 사실과 오해에서는 현실 세계의 반영 자체를 부정하는 수준으로 이야기하고 있고, 이 책에서는 직관적으로 현실 세계를 담고 있다고 한다. 사실 이러나 저러나 둘다 틀린 말도 아니거니와 객체지향의 사실과 오해에서도 현실 개념을 차용하는 것이 정신 부하를 덜 일으킨다는 점에서 좋다고 평가하고 있다는 측면에서 사실상 같은 이야기라고 봐도 될듯하다.
'상속'이라는 용어가 과연 적절한걸까
이 부분에서 저자는 백기선님 강의를 볼 때였는지, 다른 무슨 책을 볼때였는지 모르겠는데 그 때 내가 느낀 것과 똑같은 주장을 하고 있었다. 상속이라는 단어가 유래가 어디서 비롯되었는지 모르겠는데 오해를 좀 불러 일으킬 만 하다. 이 부분에 대한 나의 생각은 '객체 지향의 사실과 오해' > '(+) 인터페이스 개념 바로잡기' 에 적어두었다.
객체지향의 사실과 오해 책의 관점에서 보아도 인터페이스는 객체간 메세지를 주고받는 '접점'일 뿐이지 여기서 '상속'의 개념은 없다.
이 책의 저자도 자바에서는 아예 inheritance 라는 단어 자체가 존재하지 않으며 대신 extends 가 존재한다고 한다. subClass 가 superClass 를 '확장'해서 사용하는게 실제로 정말 맞는 표현이기 때문이다.
Last updated