Content deleted Content added
m fix broken links to nist.gov/dads and switch to HTTPS |
|||
(28 intermediate revisions by 23 users not shown) | |||
Line 1:
{{Short description|Another term for record}}
{{confused|Partitioned data set}}
In [[computer science]] and [[object-oriented programming]], a '''passive data structure''' ('''PDS'''),
▲In [[computer science]] and [[object-oriented programming]], a '''passive data structure''' ('''PDS''', not to be confused with IBM's [[partitioned data set]]s; also termed a '''plain old data structure''', or '''plain old data''' ('''POD''')), is a term for a [[Record (computer science)|record]], to contrast with objects. It is a [[data structure]] that is represented only as passive collections of [[Field (computer science)|field]] values ([[instance variable]]s), without using object-oriented features.<ref name ="psd">{{cite journal |last=Black |first=Paul E. |author2=Vreda Pieterse |title=passive data structure |journal=Dictionary of Algorithms and Data Structures |year=2007 |url=https://xlinux.nist.gov/dads/HTML/passiveDataStruc.html |accessdate=11 September 2014}}</ref>
==Rationale==
Passive data structures are appropriate when there is a part of a system where it should be clearly indicated that the detailed logic for data manipulation and integrity are elsewhere. PDSs are often found at the boundaries of a system, where information is being moved to and from other systems or persistent storage and the problem ___domain logic that is found in other parts of the system is irrelevant. For example, PDS would be convenient for representing the field values of objects that are being constructed from external data, in a part of the system where the semantic checks and interpretations needed for valid objects are not applied yet.
A PDS type in [[C++]], or [[Plain Old C++ Object]], is defined as either a scalar type or a PDS class.<ref>{{cite book |author= Information Technology Industry Council |publisher= ISO/IEC |___location= Geneva |title= Programming languages — C++ |id= 14882:2003(E) |edition= Second |date= 2003-10-15}}</ref> A PDS class has no user-defined copy assignment operator, no user-defined destructor, and no non-static data members that are not themselves PDS. Moreover, a PDS class must be an aggregate, meaning it has no user-declared constructors, no private nor protected non-static data, no virtual base classes{{efn|A PDS class can have a base class whose first non-static data members differs.<ref>{{cite book |author= Bjarne Stroustrup |publisher= Pearson Education, Inc |___location= United States of America |title= The C++ programming language |
In some contexts, C++ allows only PDS types to be used. For example, a <
==In Java==
In [[Java (programming language)|Java]], some developers consider that the PDS concept corresponds to a class with public data members and no methods (Java Code Conventions 10.1),<ref name=Oracle>
==In other languages==
In [[PHP]], associative arrays and <code>stdClass</code> objects can be considered PDS.{{citation needed|date=September 2019}}
Other structured data representations such as [[XML]] or [[JSON]] can also be used as a PDS if no significant semantic restrictions are used.
In [[Python (programming language)|Python]], dataclass module provides dataclasses - often used as behaviourless containers for holding data, with options for data validation. The dataclasses in Python, introduced in version 3.7, that provide a convenient way to create a class and store data values. The data classes use to save our repetitive code and provide better readability.<ref>{{cite web | url=https://djtechnews.in/what-are-dataclasses-in-python/ | title=What are Dataclasses in Python? - DJTECHNEWS | date=30 August 2023 }}</ref>
In [[C (programming language)|C]], structs are used in the same manner.
==See also==
==Notes==
Line 23 ⟶ 33:
==References==
{{Reflist}}
▲==See also==
▲* [[Plain Old CLR Object]]
[[Category:C++]]
|