728x90
추상 자료형(ADT, Abstract Data Type)
- 구체적인 기능의 완성과정을 언급하지 않고 순수하게 기능이 무엇인지 나열한 것
-> 기능에 초점을 두어야 함
-> ex) 지갑의 추상 자료형 : 카드 삽입/추출, 동전 삽입/추출 ...
-> 기능에 대한 과정은 얘기하지 않음
- 왜 자료형이라고 표현할까
-> int라는 자료형을 생각할 때 Data를 주로 생각하게 됨
-> 하지만 int라는 자료형으로 만들어진 것은 연산(초기화, 덧셈, 뺄셈 등)을 하게 됨
-> 자료형은 연산에 더 많은 의미가 있음
-> int라는 자료형을 설명할 때 Data의 관점 설명을 하는 것보다 기능(연산)의 관점으로 설명하는 것이 맞을 수 있음
- 추상 자료형은 자료구조의 일부의 개념이 아님
- ADT는 소프트웨어 공학이 발전되면서 개념이 등장하였고 좋은 코드의 기준이 됨
구조체의 정의
- 구조체를 활용하여 자료형을 정의한다고 말하는 것의 좋은 방향은 구조체와 그 구조체와 관련된 연산을 담당하는 함수를 같이 만드는 것
- 그 구조체를 기반으로 하는 모든 연산을 함수로 정의하는 것이 가장 좋음
- 그렇게 되면 구조체의 변수를 직접 접근하지 않아도 됨
typedef struct _wallet {
int coin100Num;
int bill5000Num;
} Wallet; // 구조체
int TakeOutMoney(Wallet* pw, int coinNum, int billNum) // 구조체와 관련된 연산
int main()
{
Wallet m_Wallet;
int ret = TakeOutMoney(&m_Wallet,2,5);
}
- 이렇게 구조체의 함수를 정의하는 것을 구조체의 추상 자료형을 정의한다고 말할 수 있음
- 사용자는 그 함수 내부가 어떻게 돌아가는지는 알 필요가 없기 때문에 구조체의 정의까지는 ADT에 포함시키지 않음
728x90
'Programming > Data Structure' 카테고리의 다른 글
열혈 자료구조 - 3-2. 배열을 이용한 리스트의 구현(2) (1) | 2020.12.05 |
---|---|
열혈 자료구조 - 3-2. 배열을 이용한 리스트의 구현(1) (0) | 2020.12.05 |
열혈 자료구조 - 2-3. 하노이 타워 (0) | 2020.11.29 |
열혈 자료구조 - 2-2. 재귀의 활용 (0) | 2020.11.29 |
열혈 자료구조 - 2-1. 함수의 재귀적 호출의 이해 (0) | 2020.11.29 |