객체 지향2

조영호님의 오브젝트를 읽으며 알게된 내용과 추가로 찾아본 내용을 정리한다.

참고 코드

소프트웨어 모듈이 가져야 하는 세 가지 기능(동작성, 변경의 용이함, 가독성) - 로버트 마틴

  1. 첫 번째 목적은 실행 중에 제대로 동작하는 것이다.

  2. 두 번째 목적은 변경을 위해 존재하는 것이다. 변경하기 어려운 모듈은 제대로 동작하더라도 개선해야 한다.

  3. 세 번째 목적은 코드를 읽는 사람과 의사소통하는 것이다.

의존성(dependency)

의존성은 말에서 유추해 볼 수 있듯이 변경에 대한 영향을 암시한다. 어떤 객체가 변경될 때 그 객체에게 의존하는 다른 객체도 함께 변경될 수 있다는 사실이 내포돼 있다. 물론 객체 사이의 의존성을 완전히 없애는 것이 정답은 아니며, 합리적인 수준에서 결합도(coupling)가 유지될 수 있도록 설계해야 한다.

캡슐화(encapsulation)

개념적이나 물리적으로 객체 내부의 세부 사항을 감춤으로써 변경하기 쉬운 객체를 만드는 것이다.

객체를 인터페이스와 구현으로 나누고 인터페이스만을 공개하는 것은 객체 사이의 결합도를 낮추고 변경하기 쉬운 코드를 작성하기 위해 따라야 하는 가장 기본적인 설계 원칙이다.

Last updated