자료형과 추상 자료형

CharliePark·2020년 8월 29일
0

TIL

목록 보기
15/67

자료형이란?

자료형(데이터) 객체의 모음과 그 객체들에 대해 작동하는 연산들이다.
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)

  • TV의 사용자가 내부 구조나 부품을 알 필요가 없다. 내부 구조나 부품을 캡슐화를 통해 포장해도 사용자가 사용하는 데는 문제가 없다.

추상화 (Abstraction)

  • 사용자가 TV의 사용가능한 기능은 알지만, 그 기능이 어떻게 동작하는지 구체적인 과정은 모른다. 구체적인 과정을 기능으로 추상화한 것이다.
  • 이때 기능은 명세(또는 사양, specification), 구체적인 과정은 구현(implementation)에 대응된다.

데이터 캡슐화

  • 데이터 캡슐화 (또는 정보 은닉)는 데이터 객체가 어떻게 구현되었는지 상세한 내용을 외부로부터 감추는 것이다
  • Data Encapsulation of Information Hiding is the concealing of the implementation details of a data object from the outside world.

데이터 추상화

  • 데이터 추상화는 데이터 객체의 명세와 구현을 분리하는 것이다.
  • Data Abstraction is the seperation between the specification of a data object and its implementation.
  • 데이터의 명세만 가지고 프로그램을 설계하고, 이후 따로 구현을 해나가는 방식.

캡슐화와 추상화의 장점

  • 이해하기 쉽고 수정하기 쉽다.
  • 재사용이 편리하다
  • 프로그래밍의 효율을 높여준다

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

  • 추상 자료형은 객체와 연산의 사양(specification)이 객체의 표현과 연산의 구현으로부터 분리되도록 구성된 자료형이다.
  • '어떠한 프로그래밍 언어를 사용해서, 어떠한 자료형으로 표현하고, 어떠한 연산을 통해서 구체적으로 구현할 것인지'를 빼낸다는 얘기이다.
추상 자료형 정수 목록(list)
객체들 컴퓨터로 표현 가능한 정수의 부분 집합 데이터 아이템의 목록
연산들 더하기, 빼기, 비교 출력, 삽입, 삭제, 편집, ...

 

이 표를 최상단의 자료형과 비교해보면, 추상 자료형의 이해가 가능하다.

이때 유의할 점은, 정수의 객체들은 컴퓨터로 표현 가능한 정수의 부분 집합이라는 것이다. 정수는 무한하나, 컴퓨터로 표현 가능한 범위에는 한계가 있다.

 

Interface

  • 추상 자료형과 실제 구현사이를 이어준다
  • 프로그래밍 언어로 쓰여진 자료형의 명세서
  • signature를 헤더 파일에 선언하는 형태

 

 

그렇다면 추상 자료형과 인터페이스가 필요한 이유가 뭘까?

이번 기초 자료구조 강의에서 작성한 프로그램은 영화 평점 관리 프로그램인데, 만약 성적 관리 프로그램이 필요하다면?

이때 추상 자료형을 이용하면, 새로운 프로그램을 효율적으로 작성할 수 있다.

영화 평점관리 프로그램

  • 아이템을 파일에서 읽어오기
  • 모든 아이템 출력
  • 아이템 하나를 찾아서 출력
  • 아이템 하나를 찾아서 편집
  • ...

를 추상화하면

목록의 추상 자료형

객체

  • 동일한 형식의 데이터 아이템들

연산

  • 아이템을 파일에서 읽어오기
  • 모든 아이템 출력
  • 아이템 하나를 찾아서 출력
  • ...

와 같은 식으로 일반화가 가능하다

이와 같은 추상 자료형을 자료구조와 함께 구현하면 새로운 프로그램을 작성할 때 재사용 할 수 있다.

0개의 댓글