본문 바로가기
자료구조 & 알고리즘

추상 데이터 타입(Abstract Data Type, ADT)

by memeseo 2024. 7. 25.

추상 데이터 타입(Abstract Data Type, ADT)?


추상 데이터 타입은 데이터 타입을 정의하는 것이다. 이때, 데이터 타입을 정의하는 것을 데이터 추상화 혹은 추상 데이터 타입이라고 한다. 사용자는 원하는 대로 데이터 타입을 만들어 낼 수 있다. 이를 통해 사용자는 데이터를 더욱 구체적으로 표현하고 쉽게 사용할 수 있게된다. 

 

추상 데이터 타입은 데이터가 구체적으로 어떻게 표현되어 있는지를 사용자가 알 수 없도록 숨기기 때문에 사용자는 데이터의 구체적인 표현 방식을 몰라도 된다. 이는 데이터를 더욱 안전하게 보호할 수 있게 해준다.

 

Ex.)

Conuter() 카운터를 생성합니다.
increment():void 카운터의 값을 증가시킵니다.
reset():void 카운터의 값을 0으로 초기화 합니다.
current():number 현재 카운터의 값을 반환합니다.

 

📌 추상 데이터 타입을 사용하는 이유.

  • 내부를 몰라도 사용할 수 있다.
    • 추상 데이터 타입은 내부 데이터 표현 방식을 외부 클라이언트로부터 숨긴다.
  • 복잡한 시스템을 다룰 수 있게 해준다.
    • 프로그램을 디자인할 때 세부 사항을 숨길 수 있기 때문에 복잡한 시스템을 다룰 수 있다.
  • 독립적으로 개선이 가능하다.
    • 클라이언트 코드와 데이터 처리를 구현하는 코드가 분리되어 있어서 독립적으로 개선할 수 있다. 또한, 알고리즘을 데이터 구조와 API의 구현으로 설명하기 때문에 클라이언트 코드를 수정하지 않고도 같은 문제에 대해서 서로 다른 알고리즘을 쉽게 적용할 수 있다.
  • 데이터 자체의 응집성을 확보한다.
    • 클라이언트 입장에서는 세부 데이터 값이 어떻게 표현되는지 알 필요가 없다. 따라서 데이터를 하나의 객체로 만들어서 하나의 대상으로 취급할 수 있다. 이렇게 하면 데이터의 표현 방식으로부터 독립적이면서 데이터 자체의 응집성을 유지할 수 있다. 즉, 추상 데이터 타입을 만들 때는 데이터에만 집중해서 만들 수 있다.

 

📌 추상 데이터 타입을 구현하는 방법

  •  API 정하기
    • API의 목적은 클라이언트 코드와 데이터 타입 코드를 서로 독립적이게 만들어서 모듈러 프로그래밍을 가능하게 하는 것이다. API를 정할 때에는 두 가지 목표가 있다.
      (1) 클라이언트 코드를 명확하고 올바르게 하는 것.
      (2) 구현 가능한 API를 정의하는 것.
  • 사용자 입장 고려하기
    • 필요한 것은 무엇인지, 그리고 어떻게 사용할지, 왜 이러한 API가 필요한지 명확해야 한다.
  • API에 맞게 구현하기
    • 정해진 API에 맞게 추상 데이터 타입을 구현해야 한다.
  • 검증하기
    • 사용자가 원하는 대로 구현이 되었는지 검증한다.