1 분 소요

Encapsulation(캡슐화)

캡슐화(encapsulation)는 객체 지향 프로그래밍에서 중요한 개념이다. 이는 데이터와 그 데이터를 다루는 메서드(함수)를 하나로 묶어 캡슐화하는 것을 의미한다.

  • 이를 통해 데이터와 해당 데이터를 조작하는 방법이 외부에서 접근하기 어려워지고, 객체 내부의 상태와 동작을 보호할 수 있다.

캡슐화의 주요 목표

캡슐화의 주요 목표는 정보 은닉이다. 객체의 내부 상태와 구현 세부 사항을 숨기고, 외부 객체는 객체의 공개된 인터페이스만을 통해 상호 작용할 수 있도록 한다. 캡슐화를 통해 객체 간의 결합도를 낮출 수 있고, 객체의 내부 변경이 외부 코드에 미치는 영향을 최소화할 수 있다.

Abstraction(추상화)

추상화(abstraction)는 복잡한 시스템이나 개념을 단순화하고 필요한 부분에만 집중하는 것을 의미한다. 추상화는 중요한 세부 사항을 감추고 필수적인 기능과 속성에 집중함으로써 복잡성을 줄여준다.

  • 이를 통해 문제를 더 쉽게 이해하고 해결할 수 있다.

추상화 장점

추상화는 실제 세계의 개념이나 객체를 모델링할 때 유용하다. 중요한 세부 사항을 무시하고 필수적인 기능과 속성에만 초점을 맞추는 것으로, 문제 해결을 단순화하고 기능을 구현하는데 필요한 핵심 개념을 추출하는데 도움을 준다. 또한 추상화를 통해 코드의 가독성을 높이고 유지보수성을 향상시킬 수 있다.

캡슐화와 추상화의 관계

캡슐화와 추상화는 서로 밀접한 관계가 있다.

  • 캡슐화는 데이터와 메서드를 그룹화하여 정보 은닉을 달성
  • 추상화는 중요한 개념을 단순화하여 핵심적인 부분에 집중 이를 통해 코드의 구조를 개선하고 유연하고 확장 가능한 시스템을 구축할 수 있다.

캡슐화와 추상화 사용

캡슐화와 추상화는 다음과 같은 경우에 사용된다.

  1. 객체 지향 프로그래밍:
    • 캡슐화와 추상화는 객체 지향 프로그래밍에서 주요한 원리이다.
    • 클래스와 객체를 사용하여 데이터와 메서드를 캡슐화하고, 필요한 기능과 속성에 집중하여 추상화 한다.
  2. 코드 재사용:
    • 캡슐화와 추상화는 코드의 재사용성을 높이는데 도움을 준다.
    • 캡슐화된 객체는 독립적으로 사용될 수 있다.
      • 추상화된 개념은 여러 다른 시나리오에서 유용하게 재사용될 수 있다.
  3. 복잡성 관리:
    • 캡슐화와 추상화는 복잡한 시스템을 관리하는데 도움이 된다.
    • 세부 사항을 숨기고 필수적인 개념에 집중함으로써 복잡성을 감소시킬 수 있다.
  4. 설계의 유연성:
    • 캡슐화와 추상화는 시스템 설계의 유연성을 높인다.
    • 내부 구현을 숨기고 외부 인터페이스를 정의함
      • 구현의 변경이 외부 코드에 영향을 미치지 않도록 한다.
        • 결론적으로, 캡슐화와 추상화는 좋은 소프트웨어 설계와 개발을 위해 필수적인 원리이며, 코드의 가독성과 유지보수성을 향상시키는데 도움을 준다.

업데이트: