ADT
- Abstract Data Type 의 약자로 추상화된 데이터 타입이라는 의미를 가지고 있습니다.
- 가령 이 데이터 타입은 어떤 속성과 어떤 메서드를 가지고 있는지, 그리고 이 메서드는 무엇을 하는 건지 정의만 합니다.
- 실제로 이 데이터 타입이 내부적으로 어떤 자료 구조로 구현되어 있고 어떻게 동작하는지에 대해서는 논의하지 않습니다.
- 정의, 구현을 분리하면 사용자는 굳이 어떻게 구현되어 있는지 알 필요 없이 데이터 타입을 사용하는데 아무런 문제가 없습니다.
- 그저 사용자는 ADT에서 정의된 기능을 사용하기만 하면 되고 구현은 개발자가 알아서 하면 됩니다.
- 설사 데이터 타입의 구현 방법이 바뀌더라도 정의만 그대로라면 기존 사용자는 아무런 변경 없이 동일하게 데이터 타입을 사용할 수 있습니다.
- Java 에서 Interface 를 ADT 라고 말할 수 있습니다. 그 이유는 Interface 를 통해 어떤 속성과 메서드가 정의되어 있는지 알 수 있지만 어떻게 구현되어 있는지는 알 수 없기 때문입니다.
Data Structure
- ADT 에서 한 걸음 더 나아가 이 데이터 타입의 구현체는 무엇이고 어떻게 구현하는지에 대해서 논의합니다.
- Java 에서 Class 를 ADT 라고 말할 수 있습니다. 그 이유는 Class 는 구현체이며 어떤 속성과 메서드가 정의되어 있는지를 비롯해 내부적으로 어떻게 구현되어 있고 동작하는지 알 수 있기 때문입니다.
ADT 와 Data Structure 는 어디에 사용할 수 있는가?
ADT, Data Structure 의 관점은 프로젝트 협업 시 한 사람은 class 나 method 구현에 집중하고, 다른 사람들은 한 사람이 구현한 class 나 method 를 사용하기만 하면 되기 때문에 원활한 업무 분담을 하는 데 도움을 줄 수 있습니다.
마치며
ADT 와 Data Structure 의 개념을 잘 알지 못해 영상을 보게 되었는데, 여기에서 그치지 않고 프로젝트 시 백엔드 개발자 간 협업 관점을 바꿀 수 있었습니다. 아직 시도해보지 않았지만 프로젝트 투입 시 이 관점으로 업무 분담을 한다면 좋겠다는 생각이 들었습니다.
참조
쉬운코드 Youtube Channel : https://www.youtube.com/watch?v=QcsQKgXemtA