데이터의 추상화와 캡슐화

EBinY·2021년 11월 8일
0

데이터 추상화와 데이터 캡슐화의 개념과 차이점을 예시로 이해해보자

  • 데이터 추상화: Data abstraction
    • 클래스 정의 시, 메소드와 속성만 정의한 것을 인터페이스라고 부름, 이것이 추상화의 본질
    • 내부의 기능 구현은 복잡하지만, 실제로 노출 되는 부분은 단순하게 만든다는 개념
    • 기계 내부에서 전원을 켜는 기능 동작은 복잡하지만, 버튼을 눌러 전원을 켠다는 단순한 동작으로 인터페이스를 단순화 시킴
  • 데이터 캡슐화: Data encapsulation
    • 데이터와 기능을 하나의 단위로 묶는 것
    • 은닉(hiding): 구현은 숨기고, 동작은 노출시킴
    • 느슨한 결합(loose Coupling)에 유리, 언제든 구현을 수정할 수 있다
    • 전원 버튼의 속성(누르면 켜지고 꺼짐)을 정하고, 메소드로(버튼을 눌러) 전원이 켜지도록 함
    • 버튼을 누르는 동작은 노출되어 있고, 버튼을 눌렀을 때 작동되는 기계 내부의 구현은 은닉함
  • 노트북을 켠다는 예시를 들어보자
    • 노트북의 전원 버튼을 찾아 누르는 것으로, 노트북이 켜진다는 것을 알고 있다
      • 노트북 전원 버튼의 작동 원리나, 내부에서의 구현되는 기계 동작들을 몰라도 가능하다
    • 노트북의 전원 버튼을 누르면 전원이 켜지지만, 내부에서의 작동 방식을 바꾸거나, 이해하기에는 불가능에 가깝다
      • 노트북의 전원 버튼을 누르면, 전원이 켜지게끔 작동된다는 것만 알 수 있다.
    • 전원 버튼을 누르면 전원이 들어오게 설계하고, 찾아서 누르는 행동 -> 추상화
    • 전원 버튼을 누르면 전원이 들어오게 실제로 만들었음 -> 캡슐화
    • 전원 버튼은 눈으로 보이지만, 내부의 기계적 구현이나 작동 원리는 알수 없고 바꿀 수도 없다 -> 캡슐화를 통한 기능의 은닉(hiding)
  • 데이터 추상화를 통해, 데이터 객체가 갖는 명시적 기능과 구현을 분리해, 코드의 복잡성을 줄일 수 있다
  • 데이터 캡슐화를 통해, 외부로부터 데이터 객체의 구현 정보를 숨겨, 보안적인 부분을 강화할 수 있다
  • 이를 통하여 얻을 수 있는 장점
    • 소프트웨어 개발의 간소화
    • 쉬운 테스트와 디버깅
    • 코드의 재사용성
    • 데이터 타입의 표현에 대한 수정
    • 내부 구현의 보안성 강화

0개의 댓글

관련 채용 정보