Step-by-Step

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

CS공부/자료구조

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

희주(KHJ) 2021. 12. 2. 17:55

데이터(data)

프로그램에서 데이터(data)는 처리의 대상이 되는 모든 것

 

데이터 타입(data type)

데이터의 집합과 데이터에 적용할 수 있는 연산의 집합

데이터 타입 = 객체(Object) + 객체 간의 연산(Operation) 이 된다

※ 예로 C언어에는 int라는 데이터 타입을 제공하는데, int 데이터 타입에서 데이터는 "정수의 집합"이고, 연산은 "정수 간 연산"을 의미한다

 

추상 데이터 타입(abstract data type; ADT)

새로운 데이터 타입을 추상적,수학적으로 정의한 것

자료 자체의 형태와 그 자료에 관계된 연산들을 "수학적으로만" 정의한 것

데이터 타입의 정의가 그 데이터 타입의 구현으로부터 분리된 데이터 타입

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

 

자료구조는 이러한 추상 데이터 타입을 프로그래밍 언어로 구현한 것이라 할 수 있다

반대로, 추상 데이터 타입은 자료구조를 추상적, 수학적으로 정의한 것이다

 

여기서 왜 추상화를 사용해야 하는지 이유를 알아야 한다

그것은 바로 '정보 은닉' 기법에 있다

 

정보은닉(Information Hiding)

다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통해 접근을 허용하는 것

클래스 외부에서 특정 정보에 접근을 막는다는 의미로, 은닉성이라고도 한다

 

컴퓨터 프로그램 안에서 추상 데이터 타입이 구현될 때 보통 구현 세부 사항은 외부에 알리지 않고 외부와의 인터페이스만을 공개하게 된다

추상 데이터 타입의 사용자는 구현 세부사항이 아닌 인터페이스만 사용하기 때문에 추상 데이터 타입의 구현은 뒤에 변경될 수 있다

여기서 인터페이스만 정확하게 지켜진다면 추상 데이터 타입이 여러 가지 방법으로 구현될 수 있게 되고, 이것이 바로 정보 은닉의 기본 개념이 된다

즉 전체 프로그램을 변경 가능성 있는 구현의 세부 사항으로부터 보호하는 것이다

 

 

 

 

'CS공부 > 자료구조' 카테고리의 다른 글

[자료구조] 큐(Queue)와 Java로 구현  (0) 2021.12.12
[자료구조] 순환  (0) 2021.12.08
[자료구조] 스택(Stack)과 Java로 구현  (0) 2021.12.08
자료구조와 알고리즘  (0) 2021.12.02
[Graph] 그래프  (0) 2021.07.05
Comments