---
id: P-REINFORCE-AUTO-9FB550
category: "[[10_Wiki/💡 Topics/Programming & Language]]"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - 객체 지향 프로그래밍(OOP)"
---

# [[객체 지향 프로그래밍(OOP)]]

## 📌 한 줄 통찰 (The Karpathy Summary)
> 객체 지향 프로그래밍(OOP)은 데이터와 그 동작(behavior)을 하나의 '객체(Object)' 내에 캡슐화하여 코드를 구성하는 프로그래밍 패러다임입니다 [1, 2]. 이 방식은 각 객체가 특정 기능이나 관심사에 대한 책임을 지도록 설계함으로써 관심사의 분리(Separation of Concerns)를 자연스럽게 이끌어냅니다 [1, 2]. 주로 기능 단위의 수직적 분리를 통해 객체 간의 책임을 나누며, 소프트웨어 설계를 더욱 이해하기 쉽고 유연하며 유지보수하기 좋게 만듭니다 [3-5].

## 📖 구조화된 지식 (Synthesized Content)
- **캡슐화와 관심사 분리:** OOP는 데이터와 동작을 객체 안에 캡슐화(encapsulating)하는 개념을 도입했습니다 [1]. 이를 통해 각 객체가 특정 기능적 측면이나 관심사를 온전히 책임지게 되어, 서로 다른 객체 간에 명확한 관심사 분리가 이루어집니다 [1, 2]. 구조적으로는 기능 단위의 수직적 모듈 분리가 이루어지며 객체 간의 책임을 명확히 설계할 수 있습니다 [4, 5].
- **상속을 통한 코드 재사용:** 여러 클래스가 공유하는 공통적인 동작이나 속성을 기본 클래스(base class)에 정의할 수 있습니다 [6]. 하위 클래스들은 이러한 기능을 다시 정의할 필요 없이 상속(inherit)을 통해 기능을 재사용할 수 있어 코드의 중복을 줄입니다 [6].
- **SOLID 설계 원칙의 근간:** OOP는 시스템을 더 쉽게 관리하고 확장하기 위해 창안된 5가지 설계 원칙인 SOLID(단일 책임, 개방/폐쇄, 리스코프 치환, 인터페이스 분리, 의존성 역전)의 토대가 됩니다 [3]. 예를 들어 단일 책임 원칙(SRP)은 클래스가 오직 하나의 책임을 갖도록 설계하는 것을 강조하며 [1], 의존성 역전 원칙(DIP)은 추상화가 세부 사항에 의존하는 것이 아니라 세부 사항이 추상화에 의존해야 함을 명시하여 시스템의 결합도를 낮춥니다 [7].
- **AOP(관점 지향 프로그래밍)와의 관계:** OOP는 책임을 객체별로 분리하여 클래스를 설계하는 수직적 접근법을 따르지만, 이 방식만으로는 시스템 전체에 퍼져 있는 로깅이나 보안 같은 횡단 관심사(Cross-Cutting Concerns)를 깔끔하게 분리하는 데 한계가 있습니다 [4, 5]. 따라서 이러한 공통 기능을 수평적으로 분리하여 모듈화하는 AOP 방식을 더하여 OOP 코드의 단순화와 역할 분리를 상호 보완적으로 수행합니다 [4, 5].

## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.

## 🔗 지식 연결 (Graph)
- **Related Topics:** [[SOLID Principles]], [[Separation of Concerns (SoC)]], [[Aspect-Oriented Programming (AOP)]], [[캡슐화(Encapsulation)]], [[상속(Inheritance)]]
- **Projects/Contexts:** 확장 가능하고 모듈화된 시스템 아키텍처 및 라이브러리 설계의 기본 바탕이 되며, 실무 기술 면접에서도 소프트웨어 설계 철학을 확인하기 위한 단골 질문으로 다루어집니다 [1, 8, 9].
- **Contradictions/Notes:** 소스 간의 직접적인 의견 대립이나 모순에 대한 정보는 부족합니다. 다만 참고 사항으로, OOP 고유의 수직적 책임 분리만으로는 중복을 완벽히 제거하기 힘든 횡단 관심사가 존재하며, 소스에서는 이를 해결하기 위해 AOP 기법이 보완적으로 적용된다는 점을 강조하고 있습니다 [4, 5].

---
*Last updated: 2026-04-18*
- Raw Source: [[00_Raw/2026-04-20/객체 지향 프로그래밍(OOP).md]]
---
