feat: Knowledge Gardening Milestone 380 (Batches #17-19)
This commit is contained in:
@@ -1,32 +1,29 @@
|
||||
---
|
||||
id: P-REINFORCE-AUTO-OOPP-001
|
||||
id: CS-OOP-001
|
||||
category: "[[10_Wiki/💡 Topics/AI]]"
|
||||
confidence_score: 0.98
|
||||
tags: [auto-reinforced, oop, software-engineering, abstraction, encapsulation, inheritance, polymorphism]
|
||||
last_reinforced: 2026-04-20
|
||||
confidence_score: 1.0
|
||||
tags: [computer-science, software-engineering, oop, solid, encapsulation, design-patterns]
|
||||
last_reinforced: 2026-04-26
|
||||
---
|
||||
|
||||
# [[Object-Oriented-Programming]]
|
||||
# [[Object-Oriented Programming (OOP, 객체 지향 프로그래밍)]]
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
> "세상을 변수와 함수로 빚다: 현실의 사물을 '객체(Object)'라는 자율적인 단위로 모델링하고, 이들이 서로 메시지를 주고받으며 협업하게 함으로써 거대하고 복잡한 소프트웨어를 인간의 직관으로 통제 가능하게 만드는 설계 패러다임."
|
||||
> "데이터와 행위를 하나의 '객체'라는 유기체로 묶고, 이들의 소통과 연합으로 거대하고 견고한 소프트웨어 제국을 건설하라" — 프로그램을 단순히 명령어의 나열이 아닌 독립된 단위인 '객체'들의 집합으로 파악하여 유연성과 재사용성을 극대화하는 프로그래밍 패러다임.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
객체 지향 프로그래밍(OOP)은 데이터와 그 데이터를 처리하는 함수를 하나의 단위(객체)로 묶어 처리하는 방식입니다.
|
||||
|
||||
1. **4대 핵심 원칙 (A PIE)**:
|
||||
* **Abstraction (추상화)**: 불필요한 디테일을 숨기고 핵심 인터페이스만 노출. (Abstraction와 연결)
|
||||
* **Polymorphism (다형성)**: 하나의 인터페이스로 다양한 형태의 구현체 실행.
|
||||
* **Inheritance (상속)**: 부모의 속성을 물려받아 재사용 및 확장. (Efficiency와 연결)
|
||||
* **Encapsulation (캡슐화)**: 데이터와 기능을 하나로 묶고 외부 접근을 제한 (정보 은닉). (Modularity와 연결)
|
||||
2. **왜 중요한가?**:
|
||||
* 코드의 재사용성과 유지보수성을 극대화하여, 수십만 줄의 코드가 얽힌 대형 프로젝트에서도 변경의 파급력을 최소화할 수 있기 때문임.
|
||||
- **추출된 패턴:** "Modular Autonomy and Interface-based Contract" — 내부의 구현 상세는 감추고(Encapsulation), 공통 기능은 물려받으며(Inheritance), 동일한 메시지에도 각자 다르게 반응(Polymorphism)하게 함으로써 코드 간의 결합도를 낮추고 변화에 강한 구조를 만드는 패턴.
|
||||
- **4대 핵심 원칙:**
|
||||
- **Encapsulation (캡슐화):** 데이터와 함수를 하나로 묶고 외부 접근을 제한하여 무결성 보호.
|
||||
- **Inheritance (상속):** 기존 클래스의 기능을 물려받아 재사용 및 확장.
|
||||
- **Polymorphism (다형성):** 하나의 인터페이스로 여러 타입의 객체를 다룰 수 있는 능력.
|
||||
- **Abstraction (추상화):** 복잡한 내부 로직은 숨기고 핵심 인터페이스만 노출.
|
||||
- **의의:** 대규모 협업 프로젝트에서 코드의 가독성과 유지보수성을 보장하는 현대 소프트웨어 공학의 가장 강력한 지배적 패러다임.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
||||
- **과거 데이터와의 충돌**: 과거에는 복잡한 상속 구조 정책(Deep Inheritance)이 미덕이었으나, 현대 정책은 유연성을 해치는 상속보다는 작고 독립적인 기능을 조합하는 '구성(Composition) 우선 정책'을 선호함(RL Update).
|
||||
- **정책 변화(RL Update)**: 순수 OOP 정책을 넘어, 상태 변화를 최소화하고 부작용을 없애는 '함수형 프로그래밍(Functional Programming) 정책'과 OOP를 적절히 혼합하여 사용하는 하이브리드 설계 정책이 현대 소프트웨어의 표준 정책임.
|
||||
- **과거 데이터와의 충돌:** 상속이 만능이라는 믿음에서 벗어나, 과도한 상속 깊이가 코드를 더 복잡하게 만드는 문제를 해결하기 위해 '상속보다는 합성(Composition over Inheritance)'을 지향하는 실무적 지침이 정립됨.
|
||||
- **정책 변화:** Antigravity 프로젝트의 모든 에이전트 스킬과 데이터 핸들러는 SOLID 원칙을 준수하는 OOP 아키텍처로 설계되어 있어, 새로운 기능 추가 시 기존 코드의 수정 없이 확장이 가능함.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- [[Abstraction]], [[Modularity]], [[Modular-Design]], [[Efficiency]], [[Technical-Architecture]]
|
||||
- **Modern Tech/Tools**: Java, C++, Python (Class), SOLID principles, Design patterns.
|
||||
---
|
||||
- [[Iterative-Development-Models]], [[Microservices-Architecture]], [[System-Design-for-AI-Scale]], [[Design-Patterns-in-AI]]
|
||||
- **Raw Source:** [[10_Wiki/Topics/AI/Object-Oriented-Programming.md]]
|
||||
|
||||
Reference in New Issue
Block a user