Data Abstraction   자료 추상화, 데이터 추상화

(2021-05-19)

ADT, Abstract Data Type, 추상 자료형, 추상 데이터 타입, 추상 데이터형


1. 자료 추상화 (Data Abstraction)

  ㅇ 여러 자료형을 하나로 묶어(단순화) 더 높은 단계로 정의(추상화)하는 것
     - 例) 사용자 정의 자료형으로써 구조체 등

  ㅇ 결국,
     - 컴퓨터에 저장되는 비트(0,1) 및 메모리 공간 관점이 아닌,
     - 인간 사고와 유사한 관점으로 보려는 것 
     - (즉, 기계적 처리 관점 -> 인간이 데이터를 다루는 관점)


2. 추상 자료형 (Abstract Data Type, ADT)

  ㅇ 새로운(필요한) 자료형을 직접 추상적으로 정의한 형태
     - 형태 : `자료` 및 `연산`을 모두 하나의 단위로 묶어둠
     - 구성 : 데이터와 그 데이터에 관련된 추상적연산들

  ㅇ 즉,
      . 자료형에 속하는 값들의 집합을 고려해보고,
      . 그에 적용 가능한 연산들을 정의하여,
      . 이를 추상화시킨 것

  ㅇ 한편, 
      . 추상 자료형은, 행동 만을 정의할 뿐, 실제 구현 방법은 명시하지 않음
      . 추상 자료형을, 구체적으로 구현한 것을 자료구조 라고 함


3. 추상 자료형의 특징

  ㅇ (정의)
     - `자료` 및 `연산`을 모두 하나의 단위로 묶음
        . 사용자 정의 자료형 (user defined data type)
        . 사용자 정의 연산 (user defined operation type)

  ㅇ (장점)
     - 외부로부터 내부 자료를 함부로 접근 못하게함
        . 자료형에 대한 의도되지 않은 변화를 최소화하고,
        . 이를 마치 블랙박스 처럼 취급할 수 있게 함
     * 이를두고, 캡슐화(Encapsulation) 또는 정보은닉(Information Hiding) 라고도 함

  ㅇ 자료의 캡슐화 (data encapsulation) 또는 정보은닉(information hiding)
     - 세부 구현 사항을 감춤
        . 형태 및 연산수학적으로 만 정의되어 있고, 
        . 구현의 세부사항을 정의 않고, 
        . 그 기능이 무엇인지 만 나열함
     - 인터페이스 또는 접근을 다양화시킬 수 있음
        . 내부의 데이터에 접근은 못하지만, 사용은 가능
        . 즉, 데이터의 저장 방법을 몰라도 사용은 가능
        . 따라서, 더 많은 정보를 줄 수 있음
     - 변경이 전체에 영향을 미치지 않게 함

  ㅇ 결국,
     - 내부적으로는, 데이터함수(메소드)를 서로 연결짓고,
     - 외부적으로는, 데이터의 표현 방식을 사용자로부터 숨김
     - 따라서, 구현자와 사용자를 분리해 줄 수 있음
        . 사용자는 목적에 맞게, 가져다 사용 만 하면 됨

  ※ 자료 추상화(추상 자료형)에 의해, 
     - 비로소 객체지향 프로그래밍 기법이 가능하게 됨



Copyrightⓒ   차재복 (Cha Jae Bok)