추상 자료형

Dora·2020년 7월 7일
0

C언어에서 제공하는 자료형

자료형

객체(object)와 이 객체간의 연산(operation)의 집합.

  • 자료형이 결정되면 해당 데이터 간에 가능한 연산도 고려해야 한다. 이 때 실행 가능한 연산이 되도록 신경 써야 한다.

  • 복잡한 자료형을 구현할 경우에는 연산이 연산자만으로 끝나지 않기 때문에 함수로 작성된다.
    ex. 스택에서 새로운 값을 추가하는 연산은 add()가 이용된다.

추상 자료형(ADT ; Abstract Data Type)

: 실제적인 구현으로부터 분리되어 정의된 자료형.

추상화(abstraction)

소프트웨어 시스템의 복잡성을 관리하기 위한 방법 중 하나.

어떤 시스템의 간략화된 기술 또는 명세로서 시스템의 정말 핵심적인 구조나 동작에만 집중하는 것.

  • 좋은 추상화 : 중요한 정보는 강조, 그 외 제거
  • 정보은닉기법에서 발전됨.

*명세 : 기술적, 공학적 기술

정의

  • 데이터나 연산이 무엇인지는 정의되지만 데이터나 연산을 어떻게 구현할 것인지는 정의되지 않음.

    👉 연산이름, 매개 변수, 반환형은 정의되지만 구체적인 코드는 X

  • 자료구조는 추상 자료형을 프로그래밍 언어로 구현한 것이라 할 수 있다.

코드적용

자연수를 나타내는 추상 자료형.
*자연수 (Natural Number)

객체 : 0 ~ INT_MAX (순서화된 정수의 부분범위)

함수 :

Nat_Number zero()	::= 0 
// 단순히 0을 반환

Nat_Number successor(x)	::= if(x == INT_MAX) return x
			    else return x + 1
// x가 INT_MAX이면 x를, 아니면 그 다음 수를 반환
                
Boolean is_zero(x)	::= if(x) return fALSE
			    else return TRUE
//??

Boolean equal(x, y)	::= if(x == y) return TRUE
			    else return FALSE
                
Boolean add(x, y)	::= if((x + y) < = INT_MAX) return x + y
			    else return INT_MAX
                
Boolean sub(x, y)	::= if(x < y) return 0
			    else return x - y;
  • "::="기호는 "~으로 정의된다"는 의미

  • ADT의 이름부터 시작되고, 그 안에는 객체와 함수들이 정의된다.

특징

구현될 때 구현세부사항을 외부에 알리지 않고 외부와의 인터페이스만을 공개하여 이용된다.
= 구현 방법을 언제든 안전하게 변경할 수 있다. (정보은닉의 기본)

👉 전체 프로그램을 변경 가능성이 있는 구현의 세부사항으로부터 보호가능.

  • ADT는 TV와 비슷하다.
    • 인터페이스(연산)이 제공하는 일만 할 수 있다.
    • 사용자는 인터페이스 사용을 이해해야한다.
    • 내부 데이터에 접근할 수 없다.
    • 세부구현과정을 몰라도 이용할 수 있다.
    • 구현방법이 변경되어도 같은 방식으로 사용할 수 있다.

객체지향언어에서는 "클래스"로 구현된다.

profile
Lv.1 개발자

0개의 댓글