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

(2023-12-24)

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

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

  ※ (적용,응용)
     - 자료 추상화 (추상 자료형)에 의해, 
     - 비로소, 객체지향 프로그래밍 기법이 가능하게 됨
     - 특히, 객체지향 언어클래스는, 추상 자료형의 구현에 매우 적합한 형태임

참조 자료형
   1. 객체   2. 객체 타입   3. 자료 추상화  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"