📖 [5장] 객체 지향 프로그래밍

📘 클린 아키텍처 북스터디 정리입니다

📚 도서: 로버트 C. 마틴 《Clean Architecture》
🧑‍💻 목적: 올바른 설계에 대한 감각과 습관을 익히기 위해
🗓️ 진행 기간: 2025년 7월 ~ 매주 2장


✅ 핵심 요약 (Key Takeaways)

이 장의 핵심 문장은?

객체 지향이란,
다형성을 이용하여 전체 시스템의 모든 소스 코드 의존성에 대한 절대적인 제어 권한을 획득할 수 있는 능력이다.

저자가 전달하고자 하는 메세지 요약

  • 객체 지향은 단순히 캡슐화, 상속, 다형성의 조합으로 정의되지 않음
  • 객체 지향의 본질은 다형성을 통해 소스 코드 의존성의 방향을 제어할 수 있는 힘에 있음
  • 이를 통해 플러그인 아키텍처와 같은 독립적이고 유연한 설계가 가능하며, 고수준과 저수준의 분리가 이루어짐

💡 내용 정리

서론 — 객체 지향의 정의에 대한 오해

  • 단순히 데이터와 함수를 묶거나 현실 세계를 모델링하는 것만으로는 객체 지향이 아님
  • 캡슐화, 상속, 다형성을 지원한다고 객체 지향 언어라고 단정할 수도 없음

캡슐화와 상속

캡슐화

  • 캡슐화를 통해 데이터와 함수를 묶어 응집력 있게 만들고 외부로부터 경계 설정 가능
  • 실제 OO언어에서 각각 클래스의 private 멤버 데이터와 public 멤버 함수로 표현됨
  • 객체 지향 이전에도 비슷한 개념이 있었으며, 객체 지향만의 고유한 특징은 아님

상속

  • 상속: 어떤 변수와 함수를 하나의 유효 범위로 묶어서 재정의하는 일
  • 객체 지향의 핵심 요소로 인식되지만, 상속 자체가 객체 지향만의 특성은 아님

다형성

  • 다형성: 함수를 가리키는 포인터를 응용한 개념
  • 객체 지향 언어가 이를 더 안전하고 편리하게 활용할 수 있도록 지원
  • 대표 사례: 입출력 장치의 플러그인 아키텍처
  • 다형성을 활용하면 소스 코드 의존성의 방향을 제어 흐름과 무관하게 설계할 수 있음

결론

아키텍트 관점에서의 OO란?

  • 다형성을 이용하여 전체 시스템의 모든 소스 코드 의존성에 대한 절대적인 제어 권한을 획득 가능

OO 사용 시

  • 객체 지향의 본질은 다형성을 통한 의존성 제어에 있음
  • 이를 통해 플러그인 아키텍처나 고수준 정책과 저수준 구현의 분리 가능
  • 결과적으로 개발과 배포의 독립성을 보장하는 설계가 가능

💡 인상 깊었던 문장 & 나의 인사이트

책에서 가장 기억에 남는 문장

OO란,
다형성을 이용하여 전체 시스템의 모든 소스 코드 의존성에 대한 절대적인 제어 권한을 획득할 수 있는 능력이다.

인상 깊었던 문장과 관련된 인사이트

객체 지향 언어를 사용하면서도 정작 객체 지향의 핵심 관점에 대해서는 깊이 고민해본 적이 없었음을 깨달았다.
하물며 객체 지향 설계 원칙은 더더욱 생소했다.

캡슐화, 상속, 다형성이라는 객체 지향의 대표적인 개념들에 대해서는 알고 있었지만,
그중에서도 다형성이야말로 객체 지향의 정의와 가장 밀접하게 연결된 개념이라는 사실은 이번에 처음 알게 되었다.

그리고 의존성 역전이라는 개념도 익히 들어왔지만,
그 의존성 역전이 다형성을 활용해 소스 코드의 의존성을 제어하는 방법이라는 점은 신선한 발견이었다.


🛠 실무 적용 아이디어 (To Action)

✅ 오늘부터 실천할 작은 실천

  • 코드에서 다형성을 어떻게 활용하고 있는지 의식적으로 점검해보기
  • 의존성 주입 및 인터페이스 사용으로 의존성 방향을 제어할 수 있는지 확인

0개의 댓글