Step-by-Step
[자료구조] 추상 데이터 타입 본문
데이터(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 |