이 책은 특정 언어에 대한 것이 아니라 보편적인 지식을 쌓게 해주는 책이다. java가 지금처럼 10년 후에도 많이 쓰일 것이라는 보장은 없다. 따라서 쓰이는 언어가 바뀌더라도 기반을 단단히 쌓아 적응할 수 있어야한다.프로그래밍 언어는 과거의 것을 점점 발전시켜 온 것
객체지향의 목표는 실세계를 모방하는 것이 아닌 새로운 세계를 창조하는 것.객체들은 협력을 위해 특정한 역할을 맡고 역할에 적합한 책임을 수행한다.여러 객체가 동일한 역할을 수행할 수 있다.역할은 대체 가능성을 의미한다.각 객체는 책임을 수행하는 방법을 자율적으로 선택할
요구 사항이 바뀔 때, 그 변화를 좀 더 빠르고, 수월하게 적용할 수 있다는 유연함을 얻을 수 있다는 장점을 얻기 위해 사용되는 것.소프트웨어는 사용자가 요구하는 기능을 올바르게 제공해야하지만, 기능만 제공되도록 구현하면 안되고, 변화를 적용할 수 있어야한다.절차 지향
객체 지향의 기본은 책임을 객체에게 할당하는 데 있다. 클래스는 단 한 개의 책임을 가져야 한다.클래스가 여러 책임을 갖게 되면 그 클래스는 각 책임마다 변경되는 이유가 발생할 수 있기 때문에 클래스가 한 개의 이유로만 변경되려면 클래스는 한 개의 책임만을 가져야 한다
주요 디자인 패턴