안 ADT(추상 데이터 유형) 데이터 구조에 대한 일련의 작업 및 동작을 정의하는 개념적 모델입니다. 이러한 작업이 어떻게 구현되는지 지정하지 않고 또는 데이터가 메모리에서 어떻게 구성되는지. ADT의 정의에서는 다음과 같은 내용만 언급합니다. 작전이 수행될 예정이다 하지만 그렇지 않다 어떻게 이러한 작업이 구현됩니다. 데이터가 메모리에서 어떻게 구성되는지, 작업을 구현하는 데 어떤 알고리즘이 사용되는지는 지정하지 않습니다. 구현에 독립적인 뷰를 제공하기 때문에 '추상'이라고 합니다.
꼭 필요한 것만 제공하고 세부적인 내용은 숨기는 과정을 가리킨다. 추출.
ADT의 특징
ADT(추상 데이터 유형)는 데이터와 해당 데이터에 대한 작업을 단일 단위로 캡슐화하는 방법입니다. ADT의 주요 기능 중 일부는 다음과 같습니다.
- 추출: 사용자는 데이터 구조의 구현을 알 필요가 없으며 필수 사항만 제공됩니다.
- 더 나은 개념화: ADT는 현실 세계에 대한 더 나은 개념을 제공합니다.
- 건장한: 이 프로그램은 강력하며 오류를 잡아내는 능력이 있습니다.
- 캡슐화 : ADT는 데이터의 내부 세부 정보를 숨기고 사용자가 데이터와 상호 작용할 수 있는 공개 인터페이스를 제공합니다. 이를 통해 데이터 구조를 더 쉽게 유지 관리하고 수정할 수 있습니다.
- 데이터 추상화 : ADT는 데이터의 구현 세부 사항에서 추상화 수준을 제공합니다. 사용자는 해당 작업이 어떻게 구현되는지가 아니라 데이터에 대해 수행할 수 있는 작업만 알면 됩니다.
- 데이터 구조 독립성 : ADT의 기능에 영향을 주지 않고 배열이나 연결 목록과 같은 다양한 데이터 구조를 사용하여 ADT를 구현할 수 있습니다.
- 정보 숨기기: ADT는 승인된 사용자 및 작업에만 액세스를 허용하여 데이터의 무결성을 보호할 수 있습니다. 이는 데이터의 오류와 오용을 방지하는 데 도움이 됩니다.
- 모듈성 : ADT는 다른 ADT와 결합하여 더 크고 복잡한 데이터 구조를 형성할 수 있습니다. 이를 통해 프로그래밍의 유연성과 모듈성이 향상됩니다.
전체 ADT는 구조적이고 효율적인 방식으로 데이터를 구성하고 조작하기 위한 강력한 도구를 제공합니다.
이 이미지는 ADT(추상 데이터 유형)가 정의된 인터페이스만 애플리케이션 프로그램에 노출하는 공개 및 비공개 함수를 사용하여 내부 데이터 구조(예: 배열 연결 목록)를 숨기는 방법을 보여줍니다.

ADT를 사용하는 이유는 무엇입니까?
Java에서 ADT를 사용하는 주요 이유는 다음과 같습니다.
- 캡슐화: 깔끔한 인터페이스 뒤에 복잡한 구현 세부 정보를 숨깁니다.
- 재사용성 : 외부 사용법을 변경하지 않고도 다양한 내부 구현(예: 배열 또는 연결 목록)을 허용합니다.
- 모듈성: 로직을 분리하여 유지 관리 및 업데이트를 단순화합니다.
- 보안: 버그와 의도하지 않은 변경을 최소화하여 직접 액세스를 방지하여 데이터를 보호합니다.
추상화의 예
예를 들어, 이러한 데이터 유형이 구현 세부 사항에 대한 지식 없이도 작동하고 수행될 수 있다는 점을 이해하고 int float 및 char과 같은 기본 값을 사용합니다. ADT는 다음을 정의하여 유사하게 작동합니다. 구현을 자세히 설명하지 않고도 어떤 작업이 가능한지.
ADT와 UDT의 차이점
아래 표는 ADT와 UDT의 차이점을 보여줍니다.
foreach 자바
측면 | ADT(추상 데이터 유형) | 사용자 정의 데이터 유형(UDT) |
|---|---|---|
정의 | 구현 세부 사항을 지정하지 않고 예상 동작(의미론)과 함께 객체에 대해 수행할 수 있는 작업과 객체 클래스를 정의합니다. 마두발라 | 구조와 연산을 모두 지정하는 기존 기본 유형을 결합하거나 확장하여 생성된 사용자 정의 데이터 유형입니다. |
집중하다 | 허용되는 작업과 구현 방법을 지정하지 않고 작동하는 방식입니다. | 데이터가 메모리에 구성되는 방식과 작업이 실행되는 방식입니다. |
목적 | 개념적인 방식으로 데이터 구조를 정의하는 추상 모델을 제공합니다. | 프로그래머가 기본 유형을 사용하여 데이터 구조의 구체적인 구현을 만들 수 있습니다. |
구현 세부정보 | 작업 구현 방법이나 데이터 구성 방법을 지정하지 않습니다. | 구조를 구현하기 위해 데이터 유형을 생성하고 구성하는 방법을 지정합니다. |
용법 | 데이터 구조를 설계하고 개념화하는 데 사용됩니다. | ADT에서 정의한 추상 개념을 실현하는 데이터 구조를 구현하는 데 사용됩니다. |
예 | ADT 스택 ADT 큐 ADT를 나열합니다. | 구조 클래스 열거 레코드. |
ADT의 예
이제 세 가지 일반적인 ADT인 목록 ADT 스택 ADT와 대기열 ADT를 살펴보겠습니다.
1. ADT 상장
목록 ADT(추상 데이터 유형)는 일련의 작업을 지원하는 요소의 순차적 모음입니다. 내부 구현을 지정하지 않고 . 이는 액세스를 저장하고 데이터를 수정하는 정렬된 방법을 제공합니다.
디렉토리 이름 바꾸기
목록 조회운영:
List ADT는 필요한 데이터를 순서대로 저장해야 하며 다음 작업을 수행해야 합니다. :
- 얻다(): 주어진 위치에 있는 목록의 요소를 반환합니다.
- 끼워 넣다(): 목록의 임의 위치에 요소를 삽입합니다.
- 제거하다(): 비어 있지 않은 목록에서 첫 번째로 나타나는 요소를 제거합니다.
- 제거(): 비어 있지 않은 목록에서 지정된 위치에 있는 요소를 제거합니다.
- 바꾸다(): 임의의 위치에 있는 요소를 다른 요소로 교체합니다.
- 크기(): 목록의 요소 수를 반환합니다.
- 비어있음(): 목록이 비어 있으면 true를 반환하고, 그렇지 않으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
- 전체(): 목록이 가득 차면 true를 반환하고 그렇지 않으면 false를 반환합니다. 고정 크기 구현(예: 배열 기반 목록)에만 적용 가능합니다.
2. 스택 ADT
스택 ADT는 LIFO(Last In First Out) 원칙을 따르는 선형 데이터 구조입니다. 스택의 상단이라고 불리는 한쪽 끝에서만 요소를 추가하고 제거할 수 있습니다.
스택보기운영:
Stack ADT에서는 삽입 및 삭제 순서가 FILO 또는 LIFO 원칙을 따라야 합니다. 요소는 스택의 상단이라고 불리는 동일한 끝에서 삽입되고 제거됩니다. 또한 다음 작업도 지원해야 합니다.
- 푸시(): 스택의 한쪽 끝에 top이라는 요소를 삽입합니다.
- 팝(): 비어 있지 않은 경우 스택 맨 위에 있는 요소를 제거하고 반환합니다.
- 몰래 엿보다(): 스택이 비어 있지 않으면 스택의 맨 위에 있는 요소를 제거하지 않고 반환합니다.
- 크기(): 스택의 요소 수를 반환합니다.
- 비어있음(): 스택이 비어 있으면 true를 반환하고, 그렇지 않으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
- 전체(): 스택이 가득 차면 true를 반환하고, 그렇지 않으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다. 고정 용량 스택(예: 어레이 기반)에만 해당됩니다.
3. 큐 ADT
큐 ADT는 FIFO(선입선출) 원칙을 따르는 선형 데이터 구조입니다. 이를 통해 요소를 한쪽 끝(후면)에 삽입하고 다른 쪽 끝(전면)에서 제거할 수 있습니다.
대기열 보기운영:
큐 ADT는 스택 ADT와 유사한 설계를 따르지만 삽입 및 삭제 순서가 FIFO로 변경됩니다. 요소는 한쪽 끝(후면이라고 함)에 삽입되고 다른 쪽 끝(전면이라고 함)에서 제거됩니다. 다음 작업을 지원해야 합니다.
우분투 빌드 필수
- 대기열에 넣기(): 대기열 끝에 요소를 삽입합니다.
- 따라서(): 큐가 비어 있지 않으면 큐의 첫 번째 요소를 제거하고 반환합니다.
- 몰래 엿보다(): 큐가 비어 있지 않으면 큐의 요소를 제거하지 않고 반환합니다.
- 크기(): 큐에 있는 요소의 수를 반환합니다.
- 비어있음(): 큐가 비어 있으면 true를 반환하고, 그렇지 않으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
ADT의 장점과 단점
추상 데이터 유형(ADT)에는 소프트웨어 개발에 사용하기로 결정할 때 고려해야 할 몇 가지 장점과 단점이 있습니다. ADT 사용의 주요 장점과 단점은 다음과 같습니다.
이점:
장점은 다음과 같습니다.
- 캡슐화 : ADT는 데이터와 작업을 단일 단위로 캡슐화하여 데이터 구조를 더 쉽게 관리하고 수정할 수 있는 방법을 제공합니다.
- 추출 : ADT를 사용하면 사용자는 프로그래밍을 단순화하고 오류를 줄일 수 있는 구현 세부 사항을 알 필요 없이 데이터 구조로 작업할 수 있습니다.
- 데이터 구조 독립성 : ADT는 다양한 데이터 구조를 사용하여 구현될 수 있으므로 변화하는 요구 사항과 요구 사항에 더 쉽게 적응할 수 있습니다.
- 정보 은폐 : ADT는 액세스를 제어하고 무단 수정을 방지하여 데이터의 무결성을 보호할 수 있습니다.
- 모듈성 : ADT는 다른 ADT와 결합하여 프로그래밍의 유연성과 모듈성을 높일 수 있는 보다 복잡한 데이터 구조를 형성할 수 있습니다.
단점:
단점은 다음과 같습니다.
- 간접비 : ADT를 구현하면 성능에 영향을 미칠 수 있는 메모리 및 처리 측면에서 오버헤드가 추가될 수 있습니다.
- 복잡성 : ADT는 특히 크고 복잡한 데이터 구조의 경우 구현하기가 복잡할 수 있습니다.
- 학습 곡선: ADT를 사용하려면 구현 및 사용법에 대한 지식이 필요하므로 배우는 데 시간과 노력이 필요할 수 있습니다.
- 제한된 유연성: 일부 ADT는 기능이 제한되거나 모든 유형의 데이터 구조에 적합하지 않을 수 있습니다.
- 비용 : ADT를 구현하려면 추가 리소스와 투자가 필요할 수 있으며 이로 인해 개발 비용이 증가할 수 있습니다.