자료구조

[ADT] ADT 정의, 예시

거부 2021. 8. 5. 22:29

1. ADT의 정의

Abstract Data Type

추상 자료형으로, 선언한 자료의 기능을 알려주는 명세서와 같은 역할을 한다.

이때,  자료형을 처음 선언하며 함께 연산의 종류를 결정하는 것도 자료형 정의에 포함된다.

 

2. ADT의 예시 '자판기'

1) 만들 프로그램 설명

자판기를 구현하기위해 data로 음료수의 번호를 받아 각 음료마다 책정된 가격을 동전과 지폐로 계산하는 프로그램

 

2) 자료형과 자료구조

typedef struct _vendor_machine{
  int data;
  int coin;
  int bill;
} vmachine;

가령, 위의 경우처럼 자판기 구조체를 만들어 멤버변수로 몇번 상품인지, 동전과 지폐가 각각 몇개인지 연산하는 기능이라고 자료형을 정의할 수 있다. 이때 vmachine은 연결리스트를 생성할 노드 데이터를 표현한 결과이므로 자료구조에 해당하며, "구조체를 기반으로 노드를 의미하는 vmachine이라는 자료형을 정의했어요" (75p 참고) 가 성립한다. 

 

3) ADT

vmachine의 ADT를 짧게 표현하자면 상품 고르기, 동전 개수 확인하기, 지폐개수 확인하기이다.

vmachine의 ADT를 코드 및 한글로 표현하자면 다음과 같다.

//vending machine ADT

int insertdata(vmachine* p, int data)
//음료 번호를 받는다

int take money(vmachine* p, int coin, int bill)
//필요한 동전의 수, 지폐의 수 반환
//필요한 음료 총금액 반환

void put money(vmachine* p, int coin, int bill)
// 넣은 동전의 수, 지폐의 수 반환
//  넣은 금액에서 음료 총금액 차감 후 반환