--- id: P-REINFORCE-AUTO-4772F3 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]. ν΄λž˜μŠ€μ™€ 상속 ꡬ쑰λ₯Ό 톡해 μ½”λ“œ 쀑볡을 λ°©μ§€ν•˜κ³  μž¬μ‚¬μš©μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€ [3]. 주둜 단일 μ±…μž„ 원칙(SRP)을 ν¬ν•¨ν•œ SOLID 섀계 원칙과 ν•¨κ»˜ μ μš©λ˜μ–΄ μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•˜κ³  μœ μ—°ν•œ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜λ₯Ό κ΅¬μΆ•ν•˜λŠ” 데 핡심적인 역할을 ν•©λ‹ˆλ‹€ [1, 4]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **μΊ‘μŠν™”μ™€ κ΄€μ‹¬μ‚¬μ˜ 뢄리 (Encapsulation & SoC):** 1980λ…„λŒ€μ— 본격적으둜 λΆ€μƒν•œ OOP νŒ¨λŸ¬λ‹€μž„μ€ 데이터와 행동을 객체 내에 μΊ‘μŠν™”ν•˜λŠ” 아이디어λ₯Ό λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€ [1]. 각 객체에 νŠΉμ •ν•œ κΈ°λŠ₯μ΄λ‚˜ 관심사에 λŒ€ν•œ μ±…μž„μ„ λΆ€μ—¬ν•¨μœΌλ‘œμ¨, μ‹œμŠ€ν…œ ꡬ쑰 λ‚΄μ—μ„œ μžμ—°μŠ€λŸ½κ²Œ 'κ΄€μ‹¬μ‚¬μ˜ 뢄리(Separation of Concerns)'λ₯Ό μ΄λŒμ–΄λƒˆμŠ΅λ‹ˆλ‹€ [2]. - **클래슀 상속(Inheritance)κ³Ό μ½”λ“œ μž¬μ‚¬μš©:** OOPμ—μ„œλŠ” μ—¬λŸ¬ ν΄λž˜μŠ€κ°€ κ³΅ν†΅μœΌλ‘œ κ³΅μœ ν•˜λŠ” μ†μ„±μ΄λ‚˜ λ™μž‘μ„ ν•˜λ‚˜μ˜ κΈ°λ³Έ 클래슀(base class)에 λ°°μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. λ‹€λ₯Έ ν΄λž˜μŠ€λ“€μ€ 이 κΈ°λ³Έ 클래슀λ₯Ό 상속받아 κΈ°λŠ₯을 μ΄μ–΄λ°›μœΌλ―€λ‘œ, μ½”λ“œλ₯Ό μ€‘λ³΅ν•΄μ„œ λ‹€μ‹œ μ •μ˜ν•  ν•„μš” 없이 DRY(Don't Repeat Yourself) 원칙을 효과적으둜 달성할 수 μžˆμŠ΅λ‹ˆλ‹€ [3]. - **SOLID 섀계 원칙 기반:** μ†Œν”„νŠΈμ›¨μ–΄ 섀계λ₯Ό 더 μ΄ν•΄ν•˜κΈ° 쉽고, μœ μ—°ν•˜λ©°, μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ κ³ μ•ˆλœ 5κ°€μ§€ κΈ°λ³Έ 원칙인 SOLID μ›μΉ™μ˜ ν† λŒ€κ°€ λ©λ‹ˆλ‹€ [4]. 특히 객체와 ν΄λž˜μŠ€κ°€ 단 ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό ν•œλ‹€λŠ” 단일 μ±…μž„ 원칙(SRP)은 OOP의 핡심 철학을 λ’·λ°›μΉ¨ν•©λ‹ˆλ‹€ [1, 5]. - **ꡬ쑰적 ν•œκ³„ 및 AOPλ₯Ό ν†΅ν•œ 보완:** OOP μ ‘κ·Ό 방식을 λ”°λ₯΄λ©΄ κΈ°λŠ₯ λ‹¨μœ„μ˜ 수직적 뢄리와 객체 κ°„ μ±…μž„ 뢄리가 μ›ν™œν•˜κ²Œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€ [6, 7]. ν•˜μ§€λ§Œ λ‘œκΉ…μ΄λ‚˜ λ³΄μ•ˆκ³Ό 같이 μ‹œμŠ€ν…œ 전체에 흩어져 κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” 'νš‘λ‹¨ 관심사(Cross-Cutting Concerns)'λ₯Ό λͺ¨λ“ˆν™”ν•˜λŠ” λ°μ—λŠ” ν•œκ³„κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€ [6]. μ΄λŸ¬ν•œ OOP의 단점은 νš‘λ‹¨ 관심사λ₯Ό μˆ˜ν‰μ μœΌλ‘œ 뢄리해 λͺ¨λ“ˆν™”ν•˜λŠ” 관점 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(AOP) κΈ°μˆ μ„ κ²°ν•©ν•¨μœΌλ‘œμ¨ 보완할 수 μžˆμŠ΅λ‹ˆλ‹€ [6, 7]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[κ΄€μ‹¬μ‚¬μ˜ 뢄리 (SoC)]], [[SOLID 원칙]], [[관점 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° (AOP)]] - **Projects/Contexts:** [[μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œ 섀계 및 μ•„ν‚€ν…μ²˜ ꡬ좕]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄ OOPλŠ” 객체 κ°„ μ±…μž„μ„ λΆ„λ¦¬ν•˜κ³  κΈ°λŠ₯ λ‹¨μœ„μ˜ 수직적 뢄리λ₯Ό λ‹¬μ„±ν•˜λŠ” 데 νƒμ›”ν•˜μ§€λ§Œ, μ‹œμŠ€ν…œ μ „λ°˜μ— 걸친 곡톡 κΈ°λŠ₯(νš‘λ‹¨ 관심사)을 λΆ„λ¦¬ν•˜λŠ” λ°λŠ” 단점이 μ‘΄μž¬ν•˜λ©° μ΄λŠ” AOP 방식을 톡해 λ°˜λŒ€/λ³΄μ™„μ μœΌλ‘œ 해결될 수 μžˆλ‹€κ³  μ„€λͺ…ν•©λ‹ˆλ‹€ [6, 7]. --- *Last updated: 2026-04-18* ---