1. ADT(Abstract Data Type) 란?
ADT, 혹은 추상자료형이란 어떤 대상에 대한 데이터와 그 데이터들에 대한 연산을 정의하는 것으로 대상을
추상화하여 표현한 것이다.
2. ADT의 예시
예를들어 추상화의 대상이 동전지갑이라고 가정해보자. 동전지갑은 동전을 하나 또는 여러개씩 넣을 수 있으며
마찬가지로 하나 또는 여러개씩 꺼낼 수 있다. 이것을 추상화 한다면 다음과 같이 표현할 수 있을 것이다.
Datas:
coin_10 : 10원짜리 동전의 갯수
coin_50 : 50원짜리 동전의 갯수
coin_100 : 100원짜리 동전의 갯수
coin_500 : 500원짜리 동전의 갯수
Operations:
insert(coin_type, cnt) : coin_type 에 해당하는 동전의 갯수를 cnt 만큼 증가시킨다.
delete(coin_type, cnt) : coin_type 에 해당하는 동전의 갯수를 cnt 만큼 감소시킨다.
종류별 동전의 갯수를 data로 가지며 각 동전을 cnt개 만큼 넣었다 뺐다 할 수 있는 지갑을 ADT로 나타낸 것이다.
3. 자료구조의 인터페이스, ADT
위의 예시처럼 ADT는 데이터와 연산의 기능에 대해 설명할 뿐, 연산의 내부 구현이 어떻게 이루어져있는지 등에 대해
언급하지 않는다. 그렇기에 ADT는 자료구조의 인터페이스와도 같다. 사용자는 ADT만을 보고도 자료구조를 사용할 수
있지만 실제로 각 연산들이 어떻게 구현되어있는지는 알 수 없으며 알 필요도 없다. 이렇게 인터페이스와 구현을
구분하는 것으로 내부 구현이 바뀌더라도 사용자는 여전히 같은 방식으로 자료구조를 사용할 수 있으며 개발 측에서는
필요 이상의 정보를 공개하지 않고도 사용자에게 기능을 제공할 수 있다. 앞으로 알아볼 자료구조들을 직접 구현해보는
경우에도 먼저 간단하게 ADT를 정의하고 이를 구현하는 흐름으로 진행할 것이다.
'CS > 자료구조' 카테고리의 다른 글
#5 그래프(Graph) (0) | 2021.10.01 |
---|---|
#4 큐(Queue) (0) | 2021.09.28 |
#3 스택 (Stack) (0) | 2021.09.28 |
#2 양방향 연결 리스트(Doubly Linked List) 구현 (0) | 2021.09.27 |
#1 리스트(List) (0) | 2021.09.27 |