본문으로 바로가기

자료형(Data Type)

말 그대로 데이터의 종류(형식)를 말한다. 정수, 실수, 문자열 등이 기초적인 자료형의 예

 

자료형의 3가지 형태

기초 자료형 파생 자료형 사용자 정의 자료형 
char Array(배열) Struct(구조체)
int Pointer(포인터) 공용체
Float . 클래스
Double, Long


....
. .

기초 자료형 : 일반적으로 우리가 프로그래밍을 사용할떄 사용되는 자료의 타입

파생 자료형 : 기초자료형을 이용해서 약간의 그룹을 이루게 하거나 주소를 가리키는등의 약간의 확장이 된 자료의 타입

사용자 정의 자료형 : 간단히 설명하면 기초 자료형 + 파생 자료형 = 사용자 정의 자료형 이라 볼 수 있다. 사용자가 입맛에 맞추어서 정의 시킨 자료형이다.

 

데이터 집합과 연산의 집합

자료형은 데이터의 집합 + 연산의 집합으로 볼 수 있다.

int 자료형 속 데이터의 예시 : -INT_MIN ,......,INT_MAX

int 자료형 속 연산의 예시 : +, -, *, /, %, == ............

 

아직 이 수업에선 나오지 않았지만 다른수업인 객체지향 프로그래밍 에선 클래스(사용자 정의 자료형)라는걸 배우게 되는데 여기서는 사용자가 정의한 자료형, 파생자료형말고도 안에 정의된 연산 방법인 메소드 또한 포합이 된다.

추상 데이터 타입(ADT : Abstract Data Type)

객체지향 프로그램에서 가장 중요한 개념, 자료구조에선 데이터 타입을 추상적으로 정의한 것.

데이터나 연산이 무엇(What)인가는 정의 되지만,

데이터나 연산을 어떻게(How) 컴퓨터 상에서 구현할 것인지 정의 되지 않는 것

 

ex) 인간이란 단어를 들었을때 우리가, 사람의 형체를 생각하지, 그안에 들어간 단백질 구조, 수분량, 장기기관의 소화 과정, 두뇌의 인식 과정을 생각하지 않는 것을 추상 데이터 타입으로 이해할 수 있다.

 

추상 데이터 타입의 유래

추상화 -> 정보은닉기법 -> 추상 자료형

추상화는 사용자에게 중요한 정보는 강조하되, 중요하지 않은 세부 구현 사항을 생략 하는것.

      ex) 응용프로그램 <-----------> ADT(공용 인터페이스) <------------> 구현코드

 

객체 : 0에서 시작해서 INT_MAX까지 순서화된 정수의 부분 범위

함수 :
Nat_Number Successor(x)::= if(x == INT_MAX) return x else return x+1
Boolen Equal(x,y) ::= if(x==y) return True else retrun false
Nat_Number add(x,y) ::= if (x+y) <= INT_MAX) retrun x+y else return INT_MAX
Nat_Number sub(x,y) ::= if (x<y) return 0 else return x-y
독자가 만약 0에서 끝까지에 정수 부분을 입력 받아서 그걸 생각해 냈다면 머릿속에서 저 함수가 실행된것이다. 이것이 추상화
정리하는 필자도 말하면서 햇갈린다. 예시와 경험을 통해서 감각적으로 이해하는걸 추천한다.
위에 코드는 내가 수업도중에 교수님이 보여주신 예시중 하나이므로 앞선 강의에 유사코드 방식일 수 있으니 직접 구현시 오류가 날 수 있다.

 

추상 데이터 타입을 TV에 빗대어서 표현 하였을때

우리가 일반적으로 아는 TV이미지

TV 추상 데이터 타입(ADT)
TV의 인터페이스가 제공하는 기능만 이용가능 사용자들은 ADT가 제공하는 연산만 이용가능
사용자는 TV의 내부를 뜯어볼 수 없다 사용자들은 ADT 내부의 데이터에 접근 할 수 없다.
TV 내부에서 무엇이 일어나는지 알 수 없어도 사용이 가능하다. 사용자들은 ADT 가 어떻게 구현되었는지 모르더라도 사용이 가능하다
처음에 무슨말을 하는지 모르는 사람은 일상생활에 빗대어서 이해해보자. 우리는 이미 추상이란걸 알고 있다.

이번 수업을 마치고 느낀점 : 자료형의 3가지와 추상 데이터를 알려주는 수업이였다. 가장 중요한 내용인 추상 데이터는 객체지향 프로그래밍에서도 다루니 어느정도 이해해 두는것이 중요하다. 분명이거 시험에 나올거 같다.