CH 03 - 1 추상 자료형

honeyricecake·2022년 1월 26일
0

자료구조

목록 보기
6/36

이 게시글은 윤성우 선생님의 자료구조 강의를 수강 후 나름대로의 내용 정리를 한 것임을 미리 밝힙니다.
스스로의 복습을 위해 작성한 글이므로 심층있는 학습을 위해서는 책의 구매 및 강의수강을 권장합니다.

추상자료형이란?

구체적인 기능의 완성 과정을 언급하지 않고 순수하게 기능이 무엇인지를 나열한 것

기능을 나열한 것이 왜 자료형인가 궁금할 수 있으나 강하게는 이렇게도 말할 수 있다.
"자료형은 기능이다."

ex. 지갑의 추상 자료형
카드의 삽입/추출
동전의 삽입/추출
지폐의 삽입/추출

이 때 주목할 것은 기능의 완성과정을 언급하지 않았다는 것이다.

기능의 완성과정 언급의 예 -
카드의 삽입 : 지갑의 버튼을 열고 지갑을 벌린 후 빈 칸에 카드를 삽입

int라는 우리에게 익숙한 자료형 역시 ADT로 나타내보자.

  1. 초기화할 때 대입연산자
  2. +라는 기호를 이용해 덧셈가능
  3. -라는 기호를 이용해 뺼셈가능
    ......

우리는 정수라는 자료형이 어떻게 프로그램 내에서 정의되는지 보다 이런 기능을 중점으로 활용해온 경험이 있을 것이다.

즉, 자료형에서 중요한 것은 기능이고 자료형의 정의로 인식되기 위해서는 관련이 있는 '연산'이 함께 정의되어야 한다.

C언어에서 프로그램을 짤 때도 그러하다.
결국 구조체로 자료형을 정의하면 그를 활용할 함수를 함께 정의하고, 이후 다른 함수들을 정의하여 이를 main함수에서 정의하여 프로그램을 완성하는 것이다.

잠시 정수의 덧셈을 생각해보자.
우리는 정수가 메모리에서 이진수가 되어 정수의 덧셈이 어떻게 이진수 단위에서 구현되는지 알고 쓰는가? 전혀 그렇지 않다.

즉, 기능만 제대로 정의하면 구조체의 정의는 굳이 필요하지 않다.
따라서 왠만해서는 ADT에 구조체의 정의는 포함하지 않는 것이 좋다.

따라서 ADT를 학습한 후 자료구조 학습의 옳은 순서는 다음의 예시와 같을 것이다.

  1. 리스트 자료구조의 ADT를 정의
  2. ADT를 근거로 리스트 자료구조를 활용하는 main함수를 정의
  3. ADT를 근거로 리스트 구현

2.과정이 필요한 이유는 자료구조의 목적을 훨씬 명쾌하게 알게 되어 ADT를 보고 구현하는게 훨씬 명확해진다는 것이다.

(강의 수강 후 나의 의견)

자료구조의 ADT만으로 어떻게 활용할지 확신이 안서는 경우는 위의 학습과정을 따라봐야겠다는 생각이 들었다.

그리고 스스로 코드를 짤 때도 main함수 내에서는 구조체의 정의는 최대한 끌어오지 않고 코드를 짜도록 노력해봐야겠다.

0개의 댓글