피드로 돌아가기
Abstraction vs. Encapsulation — What’s the Difference? (Simplified)
Dev.toDev.to
Backend

Complexity 제어와 Data Integrity 확보를 위한 Abstraction 및 Encapsulation 설계 전략

Abstraction vs. Encapsulation — What’s the Difference? (Simplified)

SAURAV KUMAR2026년 4월 22일4beginner

Context

OOP 설계 시 Abstraction과 Encapsulation의 개념적 혼동으로 인한 인터페이스 오설계 문제 발생. 단순한 정보 은닉을 넘어 시스템의 사용성과 데이터 안전성을 동시에 확보해야 하는 설계적 요구사항 존재.

Technical Solution

  • 사용자 관점의 단순 인터페이스 제공을 통한 시스템 복잡도 제거 목적의 Abstraction 적용
  • 내부 구현 로직인 #verifyTransaction()을 은닉하여 외부 의존성을 제거한 단순 메서드 노출 구조 설계
  • Class 내부 변수를 Private property(#)로 정의하여 외부의 직접적인 상태 변경을 차단하는 Encapsulation 구현
  • 데이터 접근을 정해진 메서드(deposit)를 통해서만 가능하게 제한하여 데이터 무결성(Data Integrity) 확보
  • 구현 세부 사항(How)은 Abstraction으로, 상태 보호(State)는 Encapsulation로 분리하여 설계 책임 명확화

- Public API 설계 시 내부 구현 로직을 숨겨 사용자 인지 부하를 낮추는 Abstraction 적용 여부 검토 - 클래스 내 핵심 상태 변수에 대해 Private 접근 제어자를 적용하여 외부 오염 가능성 차단 - Getter/Setter 또는 전용 메서드를 통한 상태 변경 로직으로 캡슐화 수준 강화

원문 읽기