2주차(3) - ADT
ADT(= Abstract Data Type)
Data Type
1. 어떤 데이터의 집합
2. 그 데이터에 적용할 수 있는 연산의 집합
여기서 중요한 점은 Data Type이라는 개념이 단지 어떤 데이터의 집합만을 의미하는 것이 아니라 해당 데이터에 적용할 수 있는 연산의 집합까지도 함께 포함하는 개념이라는 것이다. 그렇기 때문에 어떤 Data Type을 정의할 때에는 단순히 어떤 데이터의 집합인 지만을 명시하는 것이 아니라 해당 Data Type에 적용할 수 있는 연산의 종류들도 함께 정의해 주어야함을 의미한다. 즉, 해당 Data Type에 적용할 수 있는 연산에 대한 정의도 Data Type에 대한 정의의 일부이다.
Data Structure
데이터를 어떠한 규칙에 의해서 모아놓은 것
Data Structure는 데이터를 어떤 규칙에 의해서 모아놓은 것을 가리켜 말하는 것으로서 대표적으로 array, stack, queue, tree 등이 있다. 이와 같이 데이터를 어떤 규칙에 따라서 모아놓은 이유는 이 개념들이 어떠한 문제를 해결함에 있어서 유용하게 활용될 수 있기 때문이다. 그렇기 때문에 우리가 데이터 구조를 공부함에 있어서 해당 데이터 구조가 "어떤 데이터의 집합인지, 어떤 규칙이 적용되었는 지"를 앎과 동시에 해당 데이터 구조에 어떠한 연산을 적용하여 이를 활용할 수 있는 지도 함께 알고 공부해야할 필요성이 있는 것이다.
Abstraction
어떤 Data Type의 사용법(기능)은 명시하고 내부적인 구현 내용은 숨기는 개념
Abstraction 개념을 통해서 알 필요가 없는 개념에 대한 내용을 알지 못하도록 함으로서 개발의 효율성을 높여주게 된다. 그래서 구체적인 구현내용을 전혀 알지 못한다고 하더라도 이를 사용하는 데는 전혀 문제가 없도록 하는 개념이 바로 Abstraction이며 이를 우리말로 "추상화"라고 표현하기도 한다.
그래서 이 위에서 언급한 세 가지 개념을 모두 합쳐서 탄생한 개념이 ADT가 된다.
Abstract Data Type
Data Type에 대하여 Specification과 Implementation을 분리하여 고려하는 개념
즉, Data Object와 Operation에 대하여 specification(외부 interface)과 implementation(내부적 구현)을 분리하여 고려하는 개념으로써 더 쉽게 표현하면 "구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것"을 말한다.
그렇기 때문에 해당 자료형이 내부적으로 어떻게 구현되었는 지에 대한 내용은 알필요 없이, 단지 어떻게 사용하는 지만 알면 해당 자료형을 사용함으로서 다양한 논리를 구현할 수 있게 됨을 의미하는 것이다. 그래서 실제로도 많은 자료구조들은 직접 구현해서 사용하기 보다는 이미 잘 구현되고 검증된 자료구조들을 라이브러리 기반으로 불러와서 사용하게 된다.
'Computer Science > 자료구조' 카테고리의 다른 글
2주차(4) - 데이터 구조를 공부하기 위한 C++의 Class의 기본개념 (0) | 2021.03.01 |
---|---|
2주차(2) - Stack(1) (0) | 2021.03.01 |
2주차(1) - 알고리즘의 성능분석 (0) | 2021.03.01 |
1주차(2) - 데이터 구조 학습을 위한 C++ 언어 기초 (0) | 2021.02.24 |
1주차(1) - 알고리즘과 데이터 구조 개요 (0) | 2021.02.24 |
댓글
이 글 공유하기
다른 글
-
2주차(4) - 데이터 구조를 공부하기 위한 C++의 Class의 기본개념
2주차(4) - 데이터 구조를 공부하기 위한 C++의 Class의 기본개념
2021.03.01 -
2주차(2) - Stack(1)
2주차(2) - Stack(1)
2021.03.01 -
2주차(1) - 알고리즘의 성능분석
2주차(1) - 알고리즘의 성능분석
2021.03.01 -
1주차(2) - 데이터 구조 학습을 위한 C++ 언어 기초
1주차(2) - 데이터 구조 학습을 위한 C++ 언어 기초
2021.02.24