![[자료구조] 추상 자료형 (ADT)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXbAdB%2FbtrMXIjZI3s%2F1y5Cz2q5LS78J0re5z5Kjk%2Fimg.png)
[자료구조] 추상 자료형 (ADT)CSE/자료구조 (data structure)2022. 9. 18. 00:00
Table of Contents
추상 자료형 (ADT; Abstract Data Type)
자료형
말 그대로 데이터의 종류입니다. 프로그래밍 언어가 기본적으로 제공합니다. ex) 정수, 실수, 문자, 배열 등…
추상 자료형
실제적인 구현으로부터 분리되어 정의된 자료형입니다. ex) 자료구조
특징
- 구현과 분리해 자료형을 추상적(수학적)으로 정의했습니다.
- 데이터나 연산이 무엇(what)인지는 정의되지만 어떻게(how) 컴퓨터 상에서 구현할 것인지는 정의되지 않습니다.
- 자바에서 사용하는 interface도 추상 자료형을 나타내기 위한 방법입니다.
::=
’~으로 정의된다’를 의미합니다.
예시 1. ADT 표기
자료구조 중 스택을 ADT로 표기해보겠습니다. ::=
기준으로, l-value에는 정의할 메소드명을 기입해주고 r-value에는 어떻게 동작하는지 기입해주면 됩니다.
create(size) ::= 크기가 size인 스택 생성
is_full(s) ::= if(스택(s)의 원소 수 == size) return true; else return false;
is_empty(s) ::= if(s의 원소 수 == 0) return true; else return false;
push(s, item) ::= if(is_full(s)) return FULLSTACK_ERROR; else stack 맨 위에 item 추가
pop(s) ::= if(is_empty(s)) return EMPTY_ERROR; else stack 맨 위 item 제거 및 반환
예시 2. 코드 작성
실제 코드로는 어떻게 사용할 수 있는지 자바로 예시를 들어보겠습니다. interface를 통해 추상 자료형을 만들고 class로 구현한 코드 입니다.
@Getter
@Setter
public interface student {
private int age;
private String name;
private int grade;
public void hello();
}
public class SchoolEx {
public static void main(String[] args) {
Freshman f1 = new Freshman();
Undergraduate u1 = new Undergraduate();
f1.hello();
u1.hello();
}
}
public Freshman implements student {
public void hello() {
System.out.println("Hello!");
}
}
public Undergraduate implements student {
public void hello() {
System.out.println("Hell.....lo...");
}
}
728x90
반응형
'CSE > 자료구조 (data structure)' 카테고리의 다른 글
[자료구조] 덱 (Deque) (0) | 2022.10.06 |
---|---|
[자료구조] 원형 큐 (Circular Queue) (0) | 2022.10.05 |
[자료구조] 큐 (Queue) (2) | 2022.10.04 |
[자료구조] 스택 (stack) (2) | 2022.10.01 |
[자료구조] 재귀 (recursion) (2) | 2022.09.24 |
@junyeokk :: 나무보다 숲을
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!