본문 바로가기

Program Languege/자료구조

추상 자료형(ADT)

추상 자료형(Abstract Data Type)

 

 지갑을 예로 들어보겠다. 지갑에 대한 추상 자료형을 추출해보자. 먼저 단순히 지갑을 가지고 하는 행동들에 대해서만 생각해보면 된다.

 

- 카드의 삽입

- 카드의 추출

- 동전의 삽입

- 동전의 추출

- 지폐의 삽입

- 지폐의 추출

 

중간에 다른 과정은 생각하지 않고 가장 대표적이고 단순한 행동들만 적어보았다.

 

 위에 지갑의 기능들이 나열되어있다. 하지만 어떠한 과정을 거쳐서 기능들이 완성되는지는 언급하지 않고 있다. 만약 동전의 삽입의 경우 '지갑을 열고 동전 주머니를 찾아서 동전 주머니의 지퍼를 내린다. 그리고 동전 주머니에 동전을 넣는다. 이어서 동전 주머니의 지퍼를 올린 다음 마지막으로 지갑을 닫는다.' 우리에게 너무나도 익숙한 것이 지갑이라 별도의 과정이 존재하지 않는 것 같지만 돌이켜 보면 여러 과정을 거쳐서 카드나 지폐의 삽입이 이뤄짐을 알 수 있다. 위에 정리해 놓은 것은 지갑이 제공하는 기능들이다.

 

 구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것을 가리켜 추상 자료형 또는 간단히 ADT라 한다.

또한 필요한 정보가 있다면 이를 포함하여 추상 자료형을 구성한다.(3월 13일 내용 추가)

 

 

- 출처 : 열혈 자료구조

 

 

3월 13일 내용 추가

 

 자료 구조에 대해 생각할 때 그 자료 구조에 대한 행위, 즉 연산도 함께 생각해야한다. 리스트의 예에서는 삽입, 삭제, 순회, 자료 세기 등을 생각할 수 있다. 이와 같은 기본적인 연산들과 자료 구조(노드(Node))를 합쳐서 추상 자료형이라고 한다.

 

- 출처 : C로 구현한 알고리즘(Algorithms with C)

 

 

 처음엔 단순히 기능만을 말하는 것인가 하고 혼란이 왔었는데 기능과 정보를 가지고 있는 것을 말한다고 정의를 내렸다.

순수하게 기능이 무엇인지를 나열하고 필요한 정보를 포함하여 구성한 것. 이라고 정의를 내리면 될 것 같다.

 

'Program Languege > 자료구조' 카테고리의 다른 글

큐(queue)  (0) 2013.03.20
스택(stack)  (0) 2013.03.20