불투명 데이터 유형
Opaque data type![]() |
컴퓨터 과학에서 불투명 데이터 유형은 인터페이스에서 구체적인 데이터 구조가 정의되지 않은 데이터 유형입니다.이 값은 누락된 정보에 액세스할 수 있는 서브루틴을 호출하는 것만으로 조작할 수 있기 때문에 이 명령어는 정보를 숨깁니다.유형의 구체적인 표현은 사용자에게 숨겨져 있으며, 가시적인 구현이 불완전합니다.표현을 볼 수 있는 데이터 유형을 [1]투명이라고 합니다.불투명 데이터 유형은 추상 데이터 유형을 구현하는 데 자주 사용됩니다.
불투명한 데이터 유형의 일반적인 예로는 운영 체제에서 애플리케이션 소프트웨어에 제공하는 리소스 핸들을 들 수 있습니다.예를 들어 스레드의 POSIX 표준은 스레드 또는 동기 프리미티브(뮤텍스 또는 조건 [2]변수 등)를 나타내는 여러 불투명한 유형을 기반으로 애플리케이션 프로그래밍 인터페이스를 정의합니다.
불투명 포인터는 불투명 데이터 유형의 특수한 경우로, 지정되지 않은 데이터 유형의 레코드 또는 데이터 구조에 대한 포인터로 선언되는 데이터 유형입니다.예를 들어, C 프로그래밍 언어 사양의 일부를 구성하는 표준 라이브러리는 "pointer" 유형의 값을 반환하거나 가져오는 파일 입력 및 출력 함수를 제공합니다.FILE
파일 스트림을 나타냅니다(C 파일 입력/출력 참조).다만, 그 타입의 구체적인 실장은,FILE
를 [3]지정하지 않았습니다.
다양한 언어로 사용
C와 같은 일부 언어에서는 클라이언트로부터 크기와 필드가 숨겨져 있는 불투명한 레코드(구조)를 선언할 수 있습니다.이러한 유형의 오브젝트로 클라이언트가 할 수 있는 유일한 것은 메모리주소를 취득하여 불투명 포인터를 생성하는 것입니다.
인터페이스에 의해 제공되는 정보가 유형의 크기를 결정하기에 충분한 경우 클라이언트는 변수, 필드 및 해당 유형의 배열을 선언하고 값을 할당하고 동일한지 여부를 비교할 수 있습니다.이것은 보통 불투명 포인터의 경우입니다.
Java와 같은 일부 언어에서 제공되는 불투명 유형은 불투명 포인터뿐입니다.실제로 Java(및 다른 여러 언어)에서는 레코드는 항상 포인터를 통해 처리됩니다.
일부 언어에서는 부분적으로 불투명한 유형이 허용됩니다. 예를 들어, 레코드에는 일부 공개 필드가 있으며, 모든 클라이언트가 알고 액세스할 수 있으며, 일부 숨겨진 필드는 인터페이스에 표시되지 않습니다.이러한 유형은 객체 지향 프로그래밍에서 기본적인 역할을 합니다.
인터페이스에 없는 정보는, 실장 또는 다른 「친구 전용」인터페이스로 선언할 수 있습니다.이 두 번째 옵션을 사용하면 숨겨진 정보를 두 개 이상의 모듈에서 공유할 수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Friedman, Daniel P.; Wand, Mitchell; Haynes, Christopher T. (2001). Essentials of Programming Languages (2nd ed.). MIT Press. p. 42. ISBN 978-0-262-06217-6.
- ^ Butenhof, David R. (1997). Programming with POSIX Threads. Addison-Wesley. p. 31. ISBN 978-0-201-63392-4.
- ^ Kernighan, Brian W.; Ritchie, Dennis M. (1988). The C Programming Language (2nd ed.). Prentice Hall. ISBN 0-13-110362-8.