1. 추상적(Abstract)?
추상적이란 구체적의 반대되는 말로 "사물 전체에서 분리시켜 특성, 특징에 집중하는 것"을 말한다
구체적이란 말은 세부적인 하나하나의 특성을 모두 고려하는 것을 말한다.
추상적이란 말과 모호하다는 말이 혼동될 수 있는데, 추상적이라 함은 정말 핵심적인 특성에만 집중하는 것을 의미하고 모호하다는 것은 분명하지 않은 것을 의미한다.
2. 추상 데이터 타입(ADT)
데이터 타입은 데이터의 집합과 해당 데이터에 적용할 수 있는 연산으로 구성된다.
int | 데이터 : ..., -2, -1, 0, 1, 2, ... |
연산 : +, -, *, /, % |
ADT는 새로운 데이터 타입을 추상적으로 정의한 것을 말한다. 데이터와 연산이 정의되지만 이들을 어떻게 구현할 것인지는 정의되지 않는다. 즉, 데이터와 연산을 만족하면 구현은 정해진 방법이 없다는 것이다.
ADT를 사용하면 구현 세부사항은 외부에 알리지 않고 외부와의 인터페이스만을 제공하고 주어진 연산만을 사용할 수 있다. ADT의 사용자는 사용은 할 수 있지만 내부적으로 어떻게 구현되는지는 알 수 없다.
ADT는 일상생활에서도 생각해 볼 수 있다. 우리는 가전제품이 내부적으로 어떻게 동작하는지는 몰라도 사용가능하다. 버튼을 눌러 가전제품을 사용하는 것은 인터페이스를 이용해 ADT를 사용하는 것으로 생각할 수 있다. 또 가전제품은 만들어질 때 넣어진 기능만 사용가능하다. 이것은 주어진 연산만을 사용할 수 있는 것과 동일하다.
사용자는 ADT내부에는 접근할 수 없지만 기능은 사용할 수 있다. 그러므로 내부의 데이터를 보호할 수 있고, 처음 ADT를 만든 후 나중에 내부구현을 바꾸더라도 인터페이스만 동일하다면 사용자들은 전과 같이 ADT를 사용할 수 있다는 장점이 있다.
프로그래밍에서는 클래스를 이용해 구현할 수 있고, 접근 제어자를 이용해 외부에는 내부 데이터를 공개하지 않고 함수만 제공하여 주어진 인터페이스(연산)만을 제공할 수 있다.
'CS > 자료구조' 카테고리의 다른 글
[자료구조] 큐 (Queue) (0) | 2021.04.17 |
---|---|
[Python] 스택 구현 (0) | 2020.10.24 |
[자료구조] 스택 (Stack) (0) | 2020.10.23 |
[Python] 단순 연결리스트 구현 (0) | 2020.10.23 |
[자료구조] 연결 리스트(Linked List) (0) | 2020.10.22 |