패시브 데이터 구조

Passive data structure

컴퓨터 과학과 객체 지향 프로그래밍에서, PDS(Passive Data Structure, PDS, 일명 플레인데이터 구조, 또는 플레인 데이터, POD)는 사물과 대조되는 레코드를 일컫는 말이다.객체 지향적 특징을 사용하지 않고 필드 값(인스턴스 변수)의 수동적 집합으로만 표현되는 데이터 구조다.[1]

이론적 근거

수동적 데이터 구조는 데이터 조작과 무결성에 대한 상세한 논리가 다른 곳에 있다는 것을 명확하게 표시해야 하는 시스템의 부분이 있을 때 적합하다.PDS는 흔히 시스템의 경계에서 발견되는데, 다른 시스템이나 지속적인 스토리지로 정보가 이동되고 있고 시스템의 다른 부분에서 발견되는 문제 영역 논리는 관련이 없다.예를 들어 PDS는 유효한 객체에 필요한 의미적 확인과 해석이 아직 적용되지 않는 시스템의 일부에서 외부 데이터로부터 구성되고 있는 객체의 필드 값을 나타내는데 편리할 것이다.

C++인

C++ 또는 PLAME Old C++ Object의 PDS 형식은 스칼라 형식 또는 PDS 클래스로 정의된다.[2]PDS 클래스는 사용자 정의 복사 할당 연산자, 사용자 정의 소멸자, 그리고 PDS가 아닌 정전기 데이터 멤버가 없어야 한다. 더욱이 PDS 클래스는 사용자 선언 생성자, 비공개 또는 보호되는 정전기 데이터[a], 가상 기반 클래스 및 가상 기능이 없음을 의미하는 Aggregate여야 한다.[4]이 표준은 PDS가 C++에서 어떻게 동작해야 하는지에 대한 문구를 포함한다.type_traitsC++ Standard 라이브러리의 라이브러리에서 이름이 지정된 템플릿 제공is_pod특정 유형이 POD인지 여부를 결정하는 데 사용될 수 있다.[5]C++20에서 "구 데이터 저장" 개념(POD) 및 그에 따른 개념is_pod사용되지 않고 "표준" 유형과 "표준-표준" 유형의 개념으로 대체된다.[6]

어떤 맥락에서 C++는 PDS 유형만 사용하도록 허용한다.예를 들어 aunionC++98에서는 가상 기능이나 비경쟁 생성자 또는 소멸자가 있는 클래스를 포함할 수 없다.이 제한은 컴파일러가 연합을 위해 어떤 시공자 또는 파괴자를 호출해야 하는지를 결정할 수 없기 때문에 부과된다.PDS 유형은 PDS만 지원하는 C와의 인터페이스에도 사용할 수 있다.

자바에서

자바에서 일부 개발자들은 PDS 개념이 공공 데이터 구성원이 있는 클래스에 해당하며 메서드(Java Code Convention 10.1),[7]데이터 전송 객체가 없는 것으로 간주한다.[8]그 밖에 방법은 있으나 게터 및 세터만 논리적으로 존재하는 클래스인 플레인 자바 객체(POJOs)와 이벤트 처리를 사용하지 않고 게터 및 세터 이상의 추가 방법을 구현하지 않는 경우 자바 빈즈가 PDS 개념에 속할 수 있다.[citation needed]그러나, POJO와 자바 빈즈는 캡슐화가 되어 있어, PDS의 기본적인 정의를 위반한다.

기록(Java 16, 2021년 자바 16에서 소개)은 캡슐화되지 않은 얕은 불변의 데이터 전달자여서 PDS라고도 할 수 있다.

다른 언어의 경우

PHP에서 연관 배열과 stdClass 객체는 PDS로 간주할 수 있다.[citation needed]

유의미한 의미 제한이 사용되지 않는 경우 XML이나 JSON과 같은 다른 구조화된 데이터 표현도 PDS로 사용할 수 있다.

참고 항목

메모들

  1. ^ PDS 클래스는 정적이 아닌 첫 번째 데이터 구성원이 다른 기본 클래스를 가질 수 있다.[3]

참조

  1. ^ Black, Paul E.; Vreda Pieterse (2007). "passive data structure". Dictionary of Algorithms and Data Structures. Retrieved 11 September 2014.
  2. ^ Information Technology Industry Council (2003-10-15). Programming languages — C++ (Second ed.). Geneva: ISO/IEC. 14882:2003(E).
  3. ^ Bjarne Stroustrup (June 2013). The C++ programming language (Fourth ed.). United States of America: Pearson Education, Inc. ISBN 978-0-321-56384-2.
  4. ^ Walter E. Brown (September 29, 1999). "C++ Language Note: POD Types". Fermi National Accelerator Laboratory. Archived from the original on 3 December 2016. Retrieved 6 December 2016.
  5. ^ "is_pod C++ Reference". cplusplus.com. Retrieved 6 December 2016.
  6. ^ "P0767R1: Deprecate POD". www.open-std.org. Retrieved 2020-01-20.
  7. ^ "Java Code Conventions 10.1". Oracle. Retrieved 6 December 2016.
  8. ^ "Java Language Data Structures". Sun/Oracle Code Conventions. April 20, 1999. Retrieved 6 December 2016.