꾸준히 하고싶은 개발자

캡슐화란? 본문

카테고리 없음

캡슐화란?

프라우스 2024. 5. 3. 18:48

캡슐화란?

캡슐화는 객체지향 프로그래밍의 중요한 개념 중 하나로, 객체 내부의 데이터와 그 데이터를 조작하는 메서드(함수) 를 하나로 묶는 것을 의미한다. 이는 객체와 상태와 행위를 하나로 묶어서 캡슐화된 객체라고한다. 

 

1. 정보 은닉 Encapsulation : 객체 내부의 상태에 대한 직접적인 접근을 제한함으로써 정보 은닉을 가능 하게 된다. 

객체의 내부 구현세부 사항을 숨기고 외부에서는 객체가 제공하는 인터페이스를 통해서 만 접근 할 수있다. 

-> 이는 객체의 내부 구현이 변경되더라도 외부에 영향을 최소화 할 수있도록 돕는다.

2. 모듈화 Modularity : 캡슐화된 객체는 독립적으로 존재하고 다른 객체와 상호작용은 객체간 인터페이스를 통해서 만 이루어진다.

이는 시스템을 작은 모듈들로 분할하여 개발 및 유지보수를 용이 하게 한다.

3. 재사용성(Reusability) 캡슐화는 코드의 재사용성을 높인다. 한 객체의 인터페이스가 다른 객체에게 재사용 될 수있으며 객체를 사용하는 클라이언트 코드는 객체의 내부 구현에 대해 알 필요가없다. 

4. 안정성(Security): 정보 은닉을 통해 외부에서 객체의 상태를 직접 변경할 수 없도록하여 안정성을 향상 시킵니다.

이는 객체의 상태를 부적절하게 변경하여 시스템의 무결성을 훼손하는 것을 방지한다.

 

  1. 예시: 자동차 객체
    • 속성(상태): 자동차의 속도, 연료량, 엔진 상태 등
    • 메서드(동작): 가속, 감속, 시동 걸기, 시동 끄기 등
    이 속성과 메서드들은 자동차 객체 내부에서 캡슐화되어 있으며, 외부에서 직접적으로 접근할 수 없습니다. 대신에, 외부에서는 객체의 인터페이스를 통해 이러한 동작을 수행할 수 있습니다.
  2. 가령, 자동차를 객체로 모델링한다고 가정해봅시다. 이 자동차 객체에는 여러 가지 속성(상태)과 메서드(동작)가 있을 것입니다. 캡슐화를 통해 이러한 속성과 메서드를 하나로 묶을 수 있습니다.
  3. 예시: 은행 계좌 객체
    • 속성(상태): 계좌 잔액, 소유자 이름, 계좌 번호 등
    • 메서드(동작): 입금, 출금, 잔액 조회 등
    이러한 속성과 메서드들은 은행 계좌 객체 내부에서 캡슐화되어 있으며, 클라이언트 코드는 객체의 인터페이스를 통해서만 계좌와 상호작용할 수 있습니다.
  4. 또 다른 예시로 은행 계좌를 객체로 모델링해봅시다. 은행 계좌 객체에는 잔액, 소유자 정보, 입금, 출금 등의 속성과 메서드가 있을 것입니다.

캡슐화는 이러한 객체의 내부 상태와 동작을 외부로부터 보호하고, 객체의 인터페이스를 통해서만 상호작용할 수 있도록 함으로써 시스템의 안정성과 유지보수성을 향상시킵니다. 객체지향 프로그래밍에서는 이러한 캡슐화를 통해 모듈화된, 재사용 가능한 객체들을 구성하여 복잡한 시스템을 구축하는 데 사용됩니다.