자료구조

자료구조와 추상데이터타입 (feat 자바와 함께하는 자료구조의 이해)

매일_공부 2023. 1. 23. 23:25
반응형

자료구조 = 일련의 동일한 타입의 데이터를 정돈하여 저장한 구성체

 

쉽게 이해하기 위해 같은 타입의 데이터가 정돈되어서 모여있는 것 정도로 이해했다.

 

 

 

그렇다면 자료구조를 왜 하는가? == 왜 데이터를 같은 타입으로 정돈하는가?

답은 프로그램에서 저장하는 데이터에 대해 탐색, 삽입, 삭제 등의 연산을 효율적으로 수행하기 위함 ( 한마디로 연산효율적으로 하기 위해!)

 

 

자료구조를 프로그램으로 구현할 때에는 

1. 데이터를 저장할 구조를 생성한다.

2. 실제 저장되는 데이터를 처리하기 위한 연산을 정의한다.

이때 데이터와 그 데이터에 대한 추상적인 연산으로 구성되는 것을 추상데이터타입이라 한다.

 

추상데이터타입(Abstract Data Type)은 컴퓨터 과학에서 자료들과 그 자료들에 대한 연산들을 명기한 것이다. 

여기서 '추상'의 의미는 연산을 구체적으로 어떻게 구현하여야 한다는 세부적인 명세를 포함하지 않는 것을 의미한다.

즉, 실제 추상적인 연산을 구체적으로 구현하지 않는다는 점에서 자료구조와 차이를 보인다.

 

예시로서 자료구조와 추상데이터타입은 건물과 건축설계도의 관계로 비교한다.

 

건물의 용도에 따라 건물의 형상과 구조를 그린 도면은 추상데이터 타입

실제 건축자가 건축설계도에 따라 건축한 건물은 자료구조에 해당된다.

 

추상데이터타입은 자바 언어와 같은 객체지향 언의 인터페이스(Interface)의 개념과 유사하다. 자바의 인터페이스의 메소드는 선언되어있고 실제로 구현은 되어있지 않는 맥락과 같다.

 

실제로 자주 사용되는 여러 자료구조를 사용하여 문제를 해결하는 알고리즘을 설계할 수 있는데, 이때 데이터와 관련된 연산들의 관계를 개념적으로 정리해주는 추상데이터타입을 선언한 후 이에 기반하여 자료구조를 만들어야 효율적인 알고리즘의 설계가 가능하다.

 

 

 

 

정리

자료구조 = 일련의 동일한 타입의 데이터를 정돈하여 저장한 구성체 (연산을 효율적으로 하기 위해)

추상데이터타입(Abstract Data Type) =  컴퓨터 과학에서 자료들과 그 자료들에 대한 연산들을 명기한 것  (객체지향언어의 인터페이스와 유사)

프로그램을 설계할 때, 추상데이터타입에 기반한 설계가 효율적인 설계를 만들어준다.

반응형