추상화(Abstraction)란?
추상화는 코드의 복잡성을 줄이기 위해 핵심적인 기능만 노출하고, 불필요한 세부 사항을 숨기는 개념입니다. 예를 들어, 자동차를 운전할 때 내부 엔진 동작을 몰라도 '엑셀을 밟으면 가속된다'는 것만 알면 됩니다. 프로그래밍에서도, 함수나 클래스가 내부 로직을 감추고 인터페이스만 제공하면, 더 쉽게 이해하고 유지보수할 수 있습니다.
- 복잡성을 줄이고, 사용자가 필요한 정보만 보이도록 설계
- 내부 구현을 숨기고, 인터페이스만 제공하여 유지보수성을 향상
- **객체지향 프로그래밍(OOP)에서 핵심 원칙 중 하나
✅ 추상화의 핵심 역할 → "불필요한 세부 사항을 숨기고, 핵심 기능만 제공"
✅ 쉽게 이해할 수 있는 비유 → "자동차의 가속 원리를 몰라도 운전 가능"
✅ 실제 코드 적용 가능성 → "함수, 클래스, 인터페이스 활용"
캡슐화(Encapsulation)란?
캡슐화는 객체의 내부 데이터를 숨기고, 외부에서 직접 접근하는 대신 메서드를 통해 조작하도록 하는 개념입니다. 예를 들어, 은행 계좌 객체에서 balance
값을 외부에서 직접 수정할 수 없고, deposit()
같은 메서드를 통해서만 변경할 수 있도록 하면, 잘못된 데이터 수정이나 보안 문제를 방지할 수 있습니다.
- 데이터 보호 → 외부에서 직접 수정할 수 없도록 제한
- 코드 유지보수성 향상 → 내부 구현을 변경해도 외부에는 영향 없음
- 객체지향 프로그래밍(OOP)의 핵심 원칙 중 하나
✅ 캡슐화의 핵심 역할 → "데이터 보호 및 안전한 접근 제공"
✅ 쉽게 이해할 수 있는 비유 → "은행 계좌의 잔액을 직접 변경할 수 없고, 입출금 메서드를 사용해야 함"
✅ 실제 코드 적용 가능성 → "getter, setter, private 변수 활용"
'TIL' 카테고리의 다른 글
[250215 TIL] XSS, CSRF 대응 (0) | 2025.02.15 |
---|---|
[250214 TIL] HTTP, OSI7계층(개념정리) (0) | 2025.02.14 |
[250213 TIL] TBD vs Github Flow(개념정리) (0) | 2025.02.13 |
[250212 TIL] 애자일 방법론(개념정리) (0) | 2025.02.13 |
[250211 TIL] React Synthetic Event (0) | 2025.02.11 |