2025-08-03 09:46
Status:
Tags: 소프트웨어 공학
추상화(Abstraction)
추상화는 복잡한 시스템의 불필요한 세부사항을 숨기고 본질적 특징만을 드러내는 소프트웨어 공학의 핵심 원리이다. 이를 통해 복잡성 관리, 재사용성 향상, 유지보수성 증대를 달성할 수 있다.
첫 번째 의미: 일반화(Generalization)
개별 요소들의 공통된 특징을 추출하여 상위 추상 개념을 만드는 과정이다. 예를 들어, Dog 클래스와 Cat 클래스의 공통 특징을 뽑아내 Animal 클래스를 만드는 것이다13. 이는 위계 구조 와 밀접한 관련이 있으며, 현실 세계의 일반 명사와 개념들도 이미 추상화된 결과물이다.
두 번째 의미: 캡슐화(Encapsulation)
내부 구현을 숨기고 사용자에게는 인터페이스만 제공하는 과정이다. 라이브러리, 클래스, API 등을 통해 “바퀴를 다시 발명할 필요가 없는” 환경을 만든다45. 사용자는 입력과 출력 형식만 알면 복잡한 내부 구현 을 이해하지 않고도 기능을 활용할 수 있다