티스토리 뷰
취미로 프로그래밍을 하면서 객체지향적인 프로그램 설계가 어려웠다. 독학으로 c언어를 시작해서 그런지 객체지향언어를 절차지향적으로 작성하는 경우가 너무 많았다. 단지 클래스를 이용해서 속성과 메서드를 작성할 뿐이었다. 결국 이렇게 만들어지는 프로그램은 당시에는 잘 작동하였지만, 이후 변경하기가 너무 어렵고 또한 재사용이 불가능에 가까웠다. 그래서 객체지향언어를 객체지향적으로 만들어 보고 싶어서 객체지향 설계에 관련된 책을 몇권 읽어 보았지만 제대로 코드로 적용시킬 수가 없었다. 그러던 중 이 책을 발견하고 읽게 되었다.
이 책이 지금까지 읽었던 책과는 다르게 코드를 작성할 때 사용되는 클래스, 속성, 연산, 가시성을 어떻게 설계해야 객체지향적인 모델링이 될 수 있는지 자세히 설명한다. 그리고 여기에 정보은닉, 클래스간의 관계, 상속, 다형성을 이용하여 재활용이 가능한 모델링이 가능하도록 설명을 덮붙인다.
이 책을 읽으면서 지금까지 읽어보았던 객체지향의 원리를 비로소 조금은 깨달을 수 있었고, 또한 코드로 옮길 수 있는 방법을 얻은 수 있어서 너무 좋았다. 그래서 이 책은 나처럼 객체지향언어를 처음 배우는 사람들에게 추천하고 싶다.
아쉽게도 지금은 절판이 되어서 이 책을 중고로만 구할 수 있다. 개인적으로 다시 재판이 되면 참 좋을 것 같다.
이 책을 읽으면서 기억에 남은 내용은 다음과 같다.
- 모든 객체는 하나의 클래스로부터 생성이 된다. 클래스 없이 객체는 존재할 수 없다.
- 속성은 객체의 정보를 저장하는 공간이다.
- 속성과 연산은 오직 하나의 정보만 나타내는 구체적인 이름이어야 한다.
- 속성과 연산은 그 클래스와 밀접한 관계여야 한다.
- 정보은닉을 통해서 유지보수성을 높일 수 있다.
- 객체들은 메시지를 보내기 위해서 관계(연관, 집합, 구성, 의존)를 가지게 된다.
- 상속은 항상 IS-A 관계를 가져야 한다.
- 다형성은 상속관계가 있을 때 적용할 수 있다.
- 다형성이 가지는 유지보수성을 높이지 위해서, 상속 관계를 올바르게 정의해야 한다.
댓글