추상적 자료형 ADT
- 자료 자체의 형태와 연산을 수학적으로만 정의한 것
stack으로 본 추상적 자료형의 예시
- 삽입한 순서대로 쌓이는 값들의 모임
- 추가해서 스택의 맨 위에 새로운 데이터를 쌓는 push 연산
- 스택의 맨 위에 있는 기존의 데이터를 제거하는 pop 연산
- 그러나 이 stack의 구현을 array로 할지, linkedlist로 할지는 중요하지 않다
- 자료형에 대한 정의와 연산 방법에 대한 설명이 전부
- 집합, 리스트, 큐, 트리 등도 추상적 자료형에 해당한다
map으로 본 추상적 자료형의 예시
- map의 데이터는 key와 value로 이루어진다
- position으로 데이터에 접근할 수 있다
- iterator로 navigate와 reference를 할 수 있다
- put, erase, begin, end, find 등의 연산을 포함한다
- key에 대한 중복 value를 허용하지 않기 때문에 overwrite 한다
자료구조와의 차이
- 추상적 자료형이 정의한 연산들을 실제로 구현한 것
- 위의 예시로든 stack을 array로든, linkedlist로든 코드로써 구현할 수 있다
추상 자료형의 장점
- OOP에서 클래스 정의가 이에 해당하므로, 그 특성도 같다
- 구현 부분은 숨기고 인터페이스만 제공함으로써 캡슐화가 가능
- 핵심 기능을 선언해 제공함으로써 코드 재사용성과 가독성 증가
- 내부 구현을 사용자에게 맡김으로서 사용의 유연성 제공
코드에 대입해보면…
- class를 통해 추상 자료형을 구현
- private, protected, public 등을 사용해 캡슐화 가능
- class를 상속을 통해 재정의 가능
- interface 혹은 abstract class의 경우는 직접 구현해야 함
출처