언어에는 다양한 자료형이 있다.
정수 자료형 int, 실수 자료형 float 등 여러가지 있지만
여기서의 자료형 의미를 우리는 대충 '데이터의 저장방식'
정도로 생각하지만 사실 자료형은 '기능' 혹은 '연산(함수 바탕의 연산)'과 관련된 내용을 명시하는 것으로 생각하면된다.
위키에도 자료형은 "객체(데이터)의 모음과 그 객체들에 대해 작동하는 연산들이다." 라고 정의되어있다.
여기서의 객체는 메모리를 차지하고 있는 모든 것을 다 객체(object)로 본다.
우리가 프로그램 개발을 위해 코딩을 하면 보통 다음 3가지 방식의 과정으로 생각한다.
1. 함수들을 정의 후 클래스나 여러가지 방식으로 연결을 해서 프로그램 구성한다!
2. 여러 데이터(ex)구조체)를 정의하고 이를 활용한 함수를 만들어서 프로그램을 구성한다!
3. 자료형 정의(데이터(ex)구조체)를 정의 하는 동시에 이를 위한 함수를 추상적으로 만들어둔다)를 한 후 함수를 구현하여 프로그램을 구성한다.
추상를 아는 사람들은 3번 방식을 사용해야한다.
경험에 의하면 유니티에서 C#으로 게임 개발할 때 이 개념을 알고 모르고의 차이가 큰 것 같다.
단순 구조체 정의를 할 때 이를 데이터 저장의 목적으로 선언하고 함수는 나중에 구현하는 식으로 해왔었다.
하지만 추상을 알고 난 후 개발 속도와 디테일은 더 커지게 되었다.
아무튼 추상 자료형을 알아보자
#1 추상 자료형
추상 자료형, 영어로는 Abstract Data Type로 줄여서 ADT라 부른다.
추상 자료형은 다음과 같이 정의 할 수 있다.
"구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것"
예를 들어 닌텐도 스위치를 사서 전원 버튼을 눌러 켰을 때
켜지는 과정에서 회로 작동이던 전기 신호이던
자세한 과정은 게이머가 알 필요가 없다.
그냥 켜지는 기능 자체만 명세하면 된다.
명세 란? ↓
명세 언어는 전산학에 쓰이는 형식 언어다.
일반적으로 직접 실행되지 않는다.
이 언어는 프로그래밍 언어보다 높은 수준에서 시스템을 기술한다.
실제로 요구 명세 내용이 필요없는 세세한 내용으로 어수선하다면 오류라고 인식할 수 있다.
그 까닭은 이러한 상세 내용이 "어떻게"가 아니라, "무엇을"을 기술하기 때문이다.
이쨋든 이 ADT는 순수하게 기능만 나열되어있기에 다른 곳(함수나 클래스)에서 미리 정의한 ADT 기능을 꺼내서 사용만 하면 된다.
이제부터 배울 자료구조에는 ADT 정의를 포함할 예정이다.
1. 자료구조의 ADT를 정의한다.
2. ADT를 근거로 자료구조를 활용하는 main 함수를 정의한다.
3. ADT를 근거로 데이터를 구현한다.
'그냥 개발글 > 자료구조 이론' 카테고리의 다른 글
3-2 리스트 (0) | 2023.01.12 |
---|---|
2-3 재귀의 활용 - 하노이 타워 (0) | 2023.01.07 |
2-2 재귀함수의 활용 (0) | 2023.01.07 |
2-1 함수의 재귀적 호출 (0) | 2023.01.05 |