자료구조

추상 자료형

Yeom's 2023. 3. 18. 17:22
728x90
반응형

추상 자료형 개념

  • 추상 데이터 타입(Abstract Data Type)
  • 프로그램의 대상이 되는 사물이나 현상을 추상적으로 정의
  • 보다 일반화된 내용으로 정의
  • 사용자와 구현자를 분리

사용자 관점과 구현자 관점

사용자 관점의 추상 자료형 구현자 관점의 추상 자료형
작업명과 용도 1) 작업의 구체적 구현방법 
2) 구현을 위한 데이터 집합

 

C에서의 추상자료형 구현

인터페이스 파일과 구현파일의 분리

  • 인터페이스 파일 : 헤더파일(.h)
  • 구현 파일 : 소스파일(.c)

헤더 파일

  • 함수 프로토타입만 보여줌
  • 블랙 박스(정보의 은닉, 구현을 볼 수 없음)
  • 계약서 역할(작업의 정의를 자세하고 정확하게 기술)

절차적 언어

  • 독자적인 추상 자료형을 인정하지 않음
  • 따라서 추상 자료형 자체를 선언할 수 없음
  • 결국, 필요한 작업명과 작업이 가해지는 데이터 타입만을 명시하는 차원에서 그침

C++에서의 추상 자료형 구현

개념적 일치

  • 사용과 구현의 분리
  • 작업을 기준으로 정의된 데이터 타입
  • 사용자에게 구현 방법을 숨김

선언의 일치

  • 추상 자료형 선언 = 클래스 선언
  • 추상 자료형의 작업 = 클래스의 메시지

인캡슐레이션(Incapsulation)

첫 번째 의미

  • 캡슐 벽 때문에 밖에서 안을 들여다 볼 수 없음(정보의 은닉)
  • 객체 밖의 사용자가 객체 안의 구현방법이나 자료구조를 알 수 없음
  • 캡슐 외부와 내부 사이에 열린 유일한 창구는 메시지

두 번째 의미

  • 하나 이상의 요소를 캡슐이 둘러싸고 있음
  • 작업 구현방법과 자료구조를 묶어서 캡슐화
  • 작업을 떠나서 자료구조를 생각할 수는 없기 때문에 묶어서 정의

객체지향 관련 용어 정리

 

추상 자료형 ADT = Operation + Collection of Data
일반 용어 Program = Algorithm + Data Structure
객체지향 방법론 Class = Message(Interface View) or
Method(Implementation View)
+ State Variable or
Instance Variable
C++  Class = Member Function + Member Data

 

728x90
반응형