ADT(Abstract Data Type, 추상 데이터 타입) 과 DS(Data Structure, 데이터 구조)

이강용·2024년 1월 4일
0

CS

목록 보기
25/109

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

설명

정의 : 추상 데이터 타입(ADT)은 데이터와 그 데이터에 대한 연산을 함께 묶어놓은 것
ADT는 데이터가 어떻게 구현되어 있는지에 대한 세부 사항은 숨기고, 데이터에 대한 타입과 해당 타입에 수행할 수 있는 연산들만을 정의함

예시 : 스택, 큐, 리스트, 트리 등은 모두 ADT의 예
예를들어, 스택 ADT는 push, pop, isEmpty 등의 연산을 정의하지만, 이러한 연산이 내부적으로 어떻게 구현되는지는 정의하지 않음

목적 : ADT는 추상화를 통해 구현 세부 사항으로부터 사용자를 분리시키는데 중점을 둠
이를통해 사용자는 복잡한 내부 구현에 신경 쓰지 않고 인터페이스만을 이용해 데이터를 다룰 수 있음

DS(Data Structure, 데이터 구조)

설명

정의 : 데이터 구조는 컴퓨터 과학에서 데이터의 조직, 관리, 저장 방식을 정의하는 것
데이터구조는 효율적인 접근과 수정을 위해 데이터의 물리적 또는 논리적 관계를 고려하여 설계됨

예시 : 배열, 연결 리스트, 해시 테이블, 힙, 그래프 등이 데이터 구조의 예
이러한 구조들은 데이터가 메모리에 어떻게 저장되고 관리될지를 구체적으로 정의함

목적 : 데이터 구조의 주된 목적은 데이터를 효율적으로 저장하고 처리하는 것. 적적한 데이터 구조의 선택은 알고리즘의 효율성을 크게 향상시킬 수 있음

💡 ADT와 DS의 차이점

  • 추상화 수준 : ADT는 데이터 구조의 논리적 특성을 정의하는데 초점을 맞추며, 구현 세부 사항은 숨김. 반면, 데이터 구조는 데이터가 실제로 어떻게 저장되고 관리되는지에 대한 구체적인 세부 사항을 다룸

  • 구현과 인터페이스 : ADT는 인터페이스에 중점을 두고 구현 세부 사항은 고려하지 않음. 데이터 구조는 실제 메모리 내에서 데이터가 어떻게 구현되는지를 포함함

  • 사용례 : ADT는 설계 시 데이터의 타입과 연산에 대한 명세에 집중함. 데이터 구조는 프로그램의 성능을 최적화하기 위해 적잘한 저장 및 관리 방식을 고려하는데 사용

결론

  • ADT와DS는 밀접하게 연결되어 있으며, 종종 함께 사용됨. ADT는 어떤 데이터 타입이 수행해야 할 연산을 정의하는 반면, 데이터 구조는 이러한 ADT가 실제로 메모리 상에서 어떻게 구현 될지를 결정함

ADT는 무엇(What)을 할 것인지에 대해 정의하고, 데이터 구조는 어떻게(How)할 것인지에 대해 정의함
👉🏻 ADT구현한 것DS라 볼 수있음

Stack<Integer> stack = new Stack<>();

  • Stack<Integer> stack : 스택 ADT의 타입
  • new Stack<>(); : ADT를 실제로 구현하는 데이터 구조

📍Quiz

  • 자바 클래스(Class)와 인터페이스(Interface)를 데이터구조(DS)와 추상 데이터 타입(ADT)이 완전 동일하다고 볼수 있는가??
class = DS (🔺)
Interface = ADT (⭕️)
  • 인터페이스(Interface) → ADT와 유사
    • 인터페이스는 Java에서 ADT와 유사한 개념을 제공함(⭕️)

      • ADT의 정의 : ADT는 데이터 타입의 추상적인 정의와 그 데이터 타입에 대해 수행할 수 있는 연산들의 집합을 제공. (단, 구현 세부 사항은 제공하지 않음)
      • 자바 인터페이스 : 인터페이스는 메서드의 시그니처(이름, 매개변수, 반환 타입)를 정의하지만, 이 메서드들이 실제로 어떻게 구현될지에 대해서는 정의하지 않음. 클래스가 이 인터페이스를 구현하도록 하여 실제 메서드의 구체적인 동작을 정의함
  • 클래스(Class) → DS와 유사하지만 완전히 동일하진 않음
    • 클래스는 Java에서 데이터 구조(DS)와 비슷한 역할을 함(🔺)
      • DS의 정의 : 데이터 구조는 데이터의 실제 저장 방식과 데이터를 조작하는 연산의 구현을 포함함
      • 자바 클래스 : 클래스는 데이터 구조의 구현을 위한 수단을 제공하며, 데이터(필드)와 데이터를 조작하는 연산(메서드)을 묶어 표현함. 클래스는 데이터 구조의 구체적인 구현체가 될 수 있지만, 모든 클래스가 데이터 구조를 나타내는 것은 아님
profile
HW + SW = 1

0개의 댓글