본문 바로가기

IT/자료구조

[자료구조] 추상 데이터 타입


추상 데이터 타입



안녕하세요 지토우에요.

오늘은 자료구조에서도 추상 데이터 타입에 대해 배워볼까요?

데이터, 데이터 타입, 추상 데이터 타입에 대해 알아봅시다.


1. 추상 데이터 타입


프로그램에서 데이터란 무엇일까요?

사전적으로는, " 의미 있는 정보를 가진 모든 값, 사람이나 자동 기기가 생성 또는 처리하는 형태로 표시된 것을 뜻한다. " 고 합니다.


쉽게는 처리의 대상이 되는 모든 것이라고도 볼 수 있겠네요.

정수, 문자열, 실수, 여러 가지가 합쳐진 것일 수도 있습니다.


데이터 타입이란, 데이터의 집합과 이러한 데이터에 적용할 수 있는 연산의 집합을 의미합니다.

자료 구조는 이런 추상 데이터 타입을 프로그래밍 언어로 구현한 것이라고 할 수 있지요.


추상 데이터 타입이란 자료 구조를 추상적, 수학적으로 정의한 것입니다.

추상화와 관련된 도구들이 개발되면 소프트웨어의 개발과 유지보수에 도움이 될 뿐 아니라, 그 복잡성까지도 관리가 됩니다.

그렇다면 여기서 추상적이란 무슨 뜻일까요?

추상화란, 어떤 시스템의 간략화된 기술 또는 명세로서

시스템의 정말 핵심적인 구조나 동작에만 집중하는 것입니다.

중요한 정보는 강조, 중요하지 않은 구현 세부 사항은 제거됩니다.

이를 위해 정보은닉기법 (information hiding)이 개발되었습니다.


추상 데이터 타입(abstract data type : ADT)는 데이터 타입의 정의가 그 데이터 타입의 구현으로부터 분리된 데이터 타입을 의미합니다.

추상 데이터 타입은 데이터나 연산이 무엇(what)인가는 정의되지만, 데이터나 연산을 어떻게(how) 컴퓨터 상에서 구현할지는 정의되지 않습니다.


다만, 이 방법을 사용하려면 알고리즘을 구현하고 테스트해야 합니다.

알고리즘이 단순하다면 쉽게 되겠지만, 복잡하다면 구현하는데에 어려움이 크겠지요.

또 이 방법을 이용하려면 반드시 똑같은 하드웨어를 사용해서 수행 시간을 측정해야 합니다.

슈퍼컴퓨터로 1분 걸리는 것과 일반 가정 집 컴퓨터로 1분 걸리는 것은 다르니까요.


또, 사용한 소프트웨어 환경도 중요합니다.

프로그래밍에 사용한 컴퓨터 언어에 따라 수행속도가 달라질 수도 있다는 것인데요.

C언어와 같은 컴파일 언어가 베이직 같은 인터프리트 언어를 사용했을 때 보다 수행 속도가 빠릅니다.


또한 실험에 사용했던 데이터가 아닌 다른 데이터에 대해 전혀 다른 결과가 나올 수도 있습니다.

실험되지 않은 입력에 대해서는 수행 시간을 주장할 수 없다는 것이죠.




'IT > 자료구조' 카테고리의 다른 글

원형 연결리스트 코드  (0) 2017.11.23
[자료구조] malloc을 이용한 더블포인터와 주소  (0) 2017.09.25
[자료구조] 배열  (0) 2017.08.03
자료구조와 알고리즘  (0) 2017.08.01