자료구조 & 알고리즘

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

memeseo 2024. 7. 25. 16:50

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


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

 

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

 

Ex.)

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

 

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

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

 

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

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