자료형은 (데이터) 객체의 모음과 그 객체들에 대해 작동하는 연산들이다.
A data type is a collection of objects and a set of operations that act on those objects.
자료형에는 char, float 등의 기본 자료형과 이를 조합해서 만들 수 있는 user-defined 자료형이 있다.
또한, 자료형에는 객체를 다룰 수 있는 연산도 포함된다.
자료형 | int | 영화 평점 목록(list) |
객체들 | {0, +1, -1, +2, -2, ..., INT_MAX, INT_MIN | 영화 이름(문자열)과 평점(float) 쌍의 목록 |
연산들 | +, -, *, /, ... | 출력, 삽입, 삭제, 편집, ... |
상단 표에서 int형은 쉽게 이해가 가능하다.
이를 영화 평점 목록이라는 user-defined 자료형으로 확대해보면 (저기서의 list는 linked list를 지칭하는 말은 아니고, 단순히 목록을 말한다), 목록에 해당하는 연산인 출력, 삽입, 삭제, 편집 등도 모두 자료형에 포함된다는 것이다.
캡슐화 (Encapsulation)
추상화 (Abstraction)
데이터 캡슐화
데이터 추상화
캡슐화와 추상화의 장점
추상 자료형 (Abstract Data Type; ADT)
추상 자료형 | 정수 | 목록(list) |
객체들 | 컴퓨터로 표현 가능한 정수의 부분 집합 | 데이터 아이템의 목록 |
연산들 | 더하기, 빼기, 비교 | 출력, 삽입, 삭제, 편집, ... |
이 표를 최상단의 자료형과 비교해보면, 추상 자료형의 이해가 가능하다.
이때 유의할 점은, 정수의 객체들은 컴퓨터로 표현 가능한 정수의 부분 집합이라는 것이다. 정수는 무한하나, 컴퓨터로 표현 가능한 범위에는 한계가 있다.
Interface
이번 기초 자료구조 강의에서 작성한 프로그램은 영화 평점 관리 프로그램인데, 만약 성적 관리 프로그램이 필요하다면?
이때 추상 자료형을 이용하면, 새로운 프로그램을 효율적으로 작성할 수 있다.
영화 평점관리 프로그램
를 추상화하면
목록의 추상 자료형
객체
연산
와 같은 식으로 일반화가 가능하다
이와 같은 추상 자료형을 자료구조와 함께 구현하면 새로운 프로그램을 작성할 때 재사용 할 수 있다.