추상화 (Abstraction)
추상화는 복잡한 시스템이나 개념에서 핵심적인 부분만을 선별하여 표현하는 과정입니다. 이를 통해 세부적인 구현이나 복잡성을 감추고, 사용자나 개발자가 필요한 기능이나 인터페이스에만 집중할 수 있습니다.
예시
- 자동차 운전자는 엔진의 내부 작동 방식을 알 필요 없이, 핸들과 페달 등 기본 조작에만 집중합니다.
- 프로그래밍에서 함수나 클래스를 사용할 때, 내부 구현보다는 입력과 출력에만 관심을 가집니다.
추상 자료형 (Abstract Data Type, ADT)
추상 자료형은 데이터와 그 데이터에 적용할 수 있는 연산을 수학적으로 정의한 모델입니다. 구체적인 구현 방법은 감추어져 있으며, 외부에서는 정의된 인터페이스를 통해서만 접근할 수 있습니다.
특성
- 인터페이스 정의: 어떤 연산들이 가능한지 명시합니다.
- 구현의 은닉: 실제로 어떻게 구현되는지는 감춥니다.
- 데이터와 연산의 결합: 데이터와 그 데이터에 대한 연산이 하나의 단위로 묶여 있습니다.
예시
- 스택(Stack): 후입선출(LIFO) 구조로, push, pop 등의 연산이 정의됩니다.
- 큐(Queue): 선입선출(FIFO) 구조로, enqueue, dequeue 등의 연산이 정의됩니다.
- 리스트(List): 순차적으로 데이터를 저장하며, 삽입, 삭제, 검색 등의 연산이 가능합니다.
자료구조 (Data Structure)
자료구조는 데이터를 저장하고 조직화하는 구체적인 방식이나 구조를 말합니다. 효율적인 데이터 접근과 수정을 가능하게 하며, 추상 자료형의 실제 구현체로서 기능합니다.
종류
(선형적 관계)
- 배열(Array): 동일한 타입의 요소를 연속된 메모리 공간에 저장
- 연결 리스트(Linked List): 각 요소가 다음 요소에 대한 참조를 가지고 있는 구조
(계층적 관계)
- 트리(Tree): 계층적인 관계를 나타내는 비선형 구조
(연결 관계)
- 그래프(Graph): 노드와 노드 간의 관계를 나타내는 구조
(기타 관계)
- 해시 테이블(Hash Table): 키를 이용하여 데이터에 빠르게 접근할 수 있는 구조
특성:
- 시간 및 공간 복잡도: 데이터의 삽입, 삭제, 검색 등의 연산에 대한 효율성이 중요합니다.
- 구현 방식: 프로그래밍 언어나 목적에 따라 다양한 방식으로 구현될 수 있습니다.
자료구조 : 추상 자료형를 실제로 구현한 것
- 추상화는 복잡한 시스템을 이해하기 쉽게 만들기 위한 일반적인 개념으로, 추상 자료형과 자료구조 모두 추상화의 원칙을 따릅니다.
- 추상 자료형(ADT)은 데이터와 그에 대한 연산을 정의한 수학적 모델로, 구현을 숨기고 인터페이스만을 제공합니다. 이는 추상화의 적용으로, 사용자에게 필요한 기능만을 노출합니다.
- 자료구조는 추상 자료형을 실제로 구현한 것입니다. 즉, 추상 자료형에서 정의된 연산과 데이터를 실제 프로그래밍 환경에서 구현하여 사용할 수 있게 합니다.
예시
- 스택(추상 자료형): 후입선출 구조를 가진 추상 자료형이며, push, pop 등의 연산이 정의되어 있습니다.
- 자료구조로서의 스택 구현: 배열이나 연결 리스트를 사용하여 스택을 실제로 구현합니다.
- 배열 기반 스택: 배열을 사용하여 스택을 구현하며, 크기가 고정됩니다.
- 연결 리스트 기반 스택: 연결 리스트를 사용하여 스택을 구현하며, 동적으로 크기가 조절됩니다.
'IT 일반 > 자료구조(개념) - [인강] 코드잇, [대학원] 전공 수업' 카테고리의 다른 글
| [코드잇-자료구조1 : 기본 자료구조들] 5. 해시 테이블 (3) | 2024.10.04 |
|---|---|
| [코드잇-자료구조1 : 기본 자료구조들] 4. 링크드 리스트 (0) | 2024.10.04 |
| [코드잇-자료구조1 : 기본 자료구조들] 3. 배열 (0) | 2024.10.04 |
| [코드잇-자료구조1 : 기본 자료구조들] 2. 컴퓨터가 데이터를 저장하는 법 (4) | 2024.10.04 |
| [코드잇-자료구조1 : 기본 자료구조들] 1. 자료구조란? (3) | 2024.10.04 |