ADT(abstract data type) 과 자료구조의 차이

Kyung yup Lee·2021년 3월 24일
0

자료구조

목록 보기
12/18

추상자료형

면접 준비를 할 동안 이해가 잘 안되는 개념이였는데, 깔끔하게 이해했다.

정의

'값'과 '연산'의 집합으로 정의되는 논리적 행동을 가지는 오브젝트 클래스

추상자료형은 "모델" 이다. 즉 실체가 없다.

나는 오브젝트 클래스라 해서 객체 클래스면 이미 실체를 가지고 있는 거 아닌가? 왜 모델이라고 하지 라고 생각했는데, 이 클래스는 추상 클래스이다.

추상 클래스는 내부에 있는 값과 메소드가 구현되어 있지 않고 객체화 할 수 없다. 이 추상 클래스를 상속하는 클래스에서 구현되는 것이다.

설명

우리는 스택을 보면 어떤 동작을 할지 예상한다. 뒤에서 들어가고 뒤에서 나오는 push 와 pop을 쉽게 생각할 수 있다. 하지만 실제로 어떤 형태와 구조로 이것이 구현되어있는지는 모른다. 이것이 추상자료형이다. 이를 실제로 배열이라는 자료구조를 사용해서 구현해내면 스택이라는 자료구조가 된다. 이 이름을 스택이라고 할 필요는 없다. 자바를 사용하고, 배열을 사용해 구현해 냈다면, java_array_stack 이라고 이름붙인 자료구조가 될 수도 있다. 하지만 그냥 추상자료형의 이름을 붙여 그대로 사용한다.

반례로 파이썬에서의 deque이라는 자료구조는 queue의 추상자료형을 구현해 놓은 것이지만 이름을 deque으로 바꾸었다.

자료구조

위에서 잠깐잠깐 나왔지만, 자료구조는 추상자료형을 "구현"(implement) 한 것이다. 때문에 자료구조는 실제로 사용될 수 있고, 객체화 할 수 있다.

profile
성장하는 개발자

0개의 댓글