본문 바로가기

COMPUTER SCIENCE/Fundamental Computer

추상 자료형이란? _ Abstract Data type, ADT

1. 깊이 있게 이해하기 힘든 추상 자료형

컴퓨터를 시작하는 입문자들에게 추상 자료형을 이해하기란 힘든 일이다. 여기에서는 추상 자료형을 간단히 이해하는 시도를 해볼 것이다. 왜 이해하기 힘들까? 하는 의문점이 든다면, 이번 섹션을 쭈욱 보도록 하자.

 

* 다음의 전개 역시 겉핥기식으로 ADT를 이해해보고자 하는 시도이다.

 

국제 표준화 기구(ISO)에서는 컴퓨터 네트워크 프로토콜 디자인을 다음과 같이 7가지 계층으로 나누어 설명하였다. 그리고 이것을 OSI 7 계층이라고 부른다.

 

OSI 7계측 구성도

 

'추상 자료형을 이해하는데 웬 네트워크?'라는 의문점이 떠오를지 모르지만, 컴퓨터는 0과 1로 저장된 메모리를 어떻게 구성해야 의미 있는 정보를 구성하고 이 메모리에 접근하고 다시 전송하는 컴퓨터 장치 간의 수많은 네트워크 상호작용에 의해서 작동하기 때문에 네트워크에 대한 기본적인 지식을 요구한다. 이것이 추상 자료형을 깊이 있게 이해하기 힘든 첫 번째 이유이다. 각각의 계층에 대해 익히는데만 몇 개월 걸릴 것이다. (천재는 금방 배우겠지만..)

 

좋다, 네트워크는 그렇다 치고 프로그래밍 관점에서 추상 자료형을 이해해 보려고 하자. 프로그래밍 관점에서 ADT는 자료들의 연산들을 명시하는 자료형이라고 말할 수 있다. 예를 들어, 1,2와 같은 정수형(int) 자료들은 덧셈 혹은 뺄셈이라는 연산 작용을 시스템에서 정의하고 있다. 이를 시스템-정의 자료형 혹은 기본 자료형(Primitive data types)이라고 말한다. 사용자-정의 자료형들은 임의로 이 연산 기능을 정의해주어야 하는데, 이 기능에 해당하는 자료를 추상 자료형이라고 정의하는 것이다. "개념은 의외로 어렵지 않은데?"라고 생각이 들 수 있다. 하지만, 물리적으로 정의한 자료가 어떠한 형태로 메모리에 저장되는지 이해하기는 정말로 어려운 일이다. 

 

마지막으로 추상 자료형이 어려운 이유는 바로 사용자-정의(User-defined) 자료형이기 때문이다. 자료 구조에서는 리스트, 큐, 스택 등의 형태가 존재하고, 이를 구현하기 위해서 추상 자료형의 정의가 필요하다. 자료구조의 형태에 따라서 수많은 정의 방법이 존재하니 추상 자료형을 구현하는 것이 어려운 것이다.

 

2. 추상 자료형의 예시

추상 자료형의 대표적인 예로는 리스트, 스택, 큐, 집합 등이 존재한다. 그리고 복소수 또한 ADT로 구현이 가능하다. 사용자가 어떠한 자료형을 정의하든 그 자료형에 맞는 ADT를 구현하는 것이 추상 자료형의 묘미라 할 수 있겠다. 가장 먼저 사용자 정의의 자료 구조에 따라서 추상 자료형을 구현해보고 이를 익히도록 노력하자.

 

* 자료구조 배워보기

 

[INTRO] 자료구조와 알고리즘

자료구조와 알고리즘에 대해서... 자료구조는 프로그래밍에서 사용되는 데이터를 어떻게 표현하는 것인가에 대한 컴퓨터 과학 분야이다. 그리고 알고리즘은 표현된 데이터를 계산하는 방법에

hookspedia.tistory.com

 

* 이후에 네트워크, 운영체제 등 다양한 컴퓨터 과학 지식을 차례차례 쌓는다면, ADT의 심도 있는 이해가 가능해질 것이다.