กลับไปหน้าบทความ

อ่าน 2 นาที

โครงสร้างข้อมูลแบบพาสซีฟ

ในวิทยาการคอมพิวเตอร์และการเขียนโปรแกรมเชิงวัตถุโครงสร้างข้อมูลแบบพาสซีฟ ( PDS ) หรือที่เรียกว่าโครงสร้างข้อมูลแบบธรรมดาหรือข้อมูลแบบธรรมดา ( POD ) คือเรคอร์ดซึ่งแตกต่างจากวัตถุ...

โครงสร้างข้อมูลแบบพาสซีฟ

ในวิทยาการคอมพิวเตอร์และการเขียนโปรแกรมเชิงวัตถุโครงสร้างข้อมูลแบบพาสซีฟ ( PDS ) หรือที่เรียกว่าโครงสร้างข้อมูลแบบธรรมดาหรือข้อมูลแบบธรรมดา ( POD ) คือเรคอร์ดซึ่งแตกต่างจากวัตถุ เป็นโครงสร้างข้อมูลที่แสดงเฉพาะชุด ค่า ฟิลด์ แบบพาสซีฟ ( ตัวแปรอินสแตนซ์ ) โดยไม่ใช้คุณสมบัติเชิงวัตถุ[ 1 ]

เหตุผล

โครงสร้างข้อมูลแบบพาสซีฟ (Passive Data Structures: PDS) เหมาะสมเมื่อมีส่วนหนึ่งของระบบที่ควรระบุอย่างชัดเจนว่าตรรกะโดยละเอียดสำหรับการจัดการและความสมบูรณ์ของข้อมูลนั้นอยู่ที่อื่น PDS มักพบได้ที่ขอบเขตของระบบ ซึ่งมีการเคลื่อนย้ายข้อมูลเข้าและออกจากระบบอื่นหรือหน่วยเก็บข้อมูลถาวร และตรรกะโดเมนปัญหาที่พบในส่วนอื่นของระบบนั้นไม่เกี่ยวข้อง ตัวอย่างเช่น PDS จะสะดวกในการแสดงค่าฟิลด์ของอ็อบเจ็กต์ที่กำลังสร้างจากข้อมูลภายนอก ในส่วนของระบบที่ยังไม่ได้ทำการตรวจสอบความหมายและการตีความที่จำเป็นสำหรับอ็อบเจ็กต์ที่ถูกต้อง

ในภาษา C++

ประเภท PDS ในC++หรือPlain Old C++ Objectถูกกำหนดให้เป็นประเภทสเกลาร์หรือคลาส PDS [ 2 ]คลาส PDS ไม่มีตัวดำเนินการกำหนดค่าสำเนาที่ผู้ใช้กำหนด ไม่มีตัวทำลายที่ผู้ใช้กำหนด และไม่มีสมาชิกข้อมูลที่ไม่ใช่แบบคงที่ที่ไม่ใช่ PDS เอง ยิ่งไปกว่านั้น คลาส PDS ต้องเป็น aggregate ซึ่งหมายความว่าไม่มีตัวสร้างที่ผู้ใช้ประกาศ ไม่มีข้อมูลที่ไม่ใช่แบบคงที่ที่เป็นส่วนตัวหรือได้รับการป้องกัน ไม่มีคลาสฐานเสมือน[ a ] ​​และไม่มีฟังก์ชันเสมือน[ 4 ]มาตรฐานประกอบด้วยข้อความเกี่ยวกับวิธีการที่ PDS ต้องทำงานใน C++ type_traitsไลบรารีในไลบรารีมาตรฐาน C++มีเทมเพลตชื่อis_podที่สามารถใช้เพื่อพิจารณาว่าประเภทที่กำหนดเป็น POD หรือไม่[ 5 ]ใน C++20 แนวคิดของ “plain old data” (POD) และโดยสิ่งนั้นis_podถูกยกเลิกและแทนที่ด้วยแนวคิดของประเภท “trivial” และ “standard-layout” [ 6 ]

ในบางบริบท C++ อนุญาตให้ใช้เฉพาะประเภท PDS เท่านั้น ตัวอย่างเช่นunionใน C++98 ยูเนียนไม่สามารถมีคลาสที่มีฟังก์ชันเสมือนหรือคอนสตรัคเตอร์หรือดีสตรัคเตอร์ที่ไม่ธรรมดาได้ ข้อจำกัดนี้เกิดขึ้นเนื่องจากคอมไพเลอร์ไม่สามารถระบุได้ว่าควรเรียกใช้คอนสตรัคเตอร์หรือดีสตรัคเตอร์ใดสำหรับยูเนียน ประเภท PDS ยังสามารถใช้สำหรับการเชื่อมต่อกับCซึ่งรองรับเฉพาะ PDS เท่านั้น

ในภาษาจาวา

ในJavaนักพัฒนาบางคนถือว่าแนวคิด PDS สอดคล้องกับคลาสที่มีสมาชิกข้อมูลสาธารณะและไม่มีเมธอด (Java Code Conventions 10.1) [ 7 ]กล่าวคืออ็อบเจ็กต์การถ่ายโอนข้อมูล[ 8 ]คนอื่นๆ อาจรวมถึงPlain old Java objects (POJOs) ซึ่งเป็นคลาสที่มีเมธอดแต่มีเพียง getter และ setter เท่านั้น โดยไม่มีตรรกะใดๆ และJavaBeansให้อยู่ภายใต้แนวคิด PDS หากไม่ได้ใช้การจัดการเหตุการณ์และไม่ได้ใช้งานเมธอดเพิ่มเติมใดๆ นอกเหนือจาก getter และ setter อย่างไรก็ตาม POJOs และ Java Beans มี การห่อ หุ้ม (encapsulation ) ดังนั้นจึงละเมิดคำจำกัดความพื้นฐานของ PDS

เรคอร์ด (ที่เปิดตัวใน Java 16 ในปี 2021) เป็นตัวเก็บข้อมูลที่ไม่สามารถเปลี่ยนแปลงได้ในระดับตื้น โดยไม่มีการห่อหุ้มข้อมูล ดังนั้นจึงสามารถพิจารณาได้ว่าเป็น PDS เช่นกัน

ในภาษาอื่นๆ

ในPHPอาร์เรย์แบบเชื่อมโยงและstdClassอ็อบเจ็กต์สามารถถือได้ว่าเป็น PDS (Process Data System)

รูปแบบข้อมูลที่มีโครงสร้างอื่นๆ เช่นXMLหรือJSONก็สามารถใช้เป็น PDS ได้เช่นกัน หากไม่มีข้อจำกัดด้านความหมายที่สำคัญ

ในPythonโมดูล dataclass มี dataclasses ซึ่งมักใช้เป็นคอนเทนเนอร์ที่ไม่มีพฤติกรรมสำหรับการเก็บข้อมูล พร้อมตัวเลือกสำหรับการตรวจสอบความถูกต้องของข้อมูล dataclasses ใน Python ซึ่งเปิดตัวในเวอร์ชัน 3.7 เป็นวิธีที่สะดวกในการสร้างคลาสและจัดเก็บค่าข้อมูล การใช้ dataclasses ช่วยลดโค้ดที่ซ้ำซ้อนและทำให้อ่านง่ายขึ้น[ 9 ]

ในภาษาซีโครงสร้าง (struct) ก็ถูกใช้งานในลักษณะเดียวกัน

ดูเพิ่มเติม

หมายเหตุ

  1. ^คลาส PDS สามารถมีคลาสพื้นฐานที่มีสมาชิกข้อมูลที่ไม่ใช่แบบคงที่ตัวแรกแตกต่างกันได้ [ 3 ]
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Passive_data_structure&oldid=1247022032 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ โครงสร้างข้อมูลแบบพาสซีฟ

ในวิทยาการคอมพิวเตอร์และการเขียนโปรแกรมเชิงวัตถุโครงสร้างข้อมูลแบบพาสซีฟ ( PDS ) หรือที่เรียกว่าโครงสร้างข้อมูลแบบธรรมดาหรือข้อมูลแบบธรรมดา ( POD ) คือเรคอร์ดซึ่งแตกต่างจากวัตถุ...

เหตุผล

โครงสร้างข้อมูลแบบพาสซีฟ (Passive Data Structures: PDS) เหมาะสมเมื่อมีส่วนหนึ่งของระบบที่ควรระบุอย่างชัดเจนว่าตรรกะโดยละเอียดสำหรับการจัดการและความสมบูรณ์ของข้อมูลนั้นอยู่ที่อื่น PDS มักพบได้ที่ขอบเขตของระบบ...

ในภาษา C++

ประเภท PDS ใน C++ หรือ Plain Old C++ Object ถูกกำหนดให้เป็นประเภทสเกลาร์หรือคลาส PDS [ 2 ] คลาส PDS ไม่มีตัวดำเนินการกำหนดค่าสำเนาที่ผู้ใช้กำหนด ไม่มีตัวทำลายที่ผู้ใช้กำหนด และไม่มีสมาชิกข้อมูลที่ไม่ใช่แบบคงที่ที่ไม่ใช่ PDS เอง ยิ่งไปกว่านั้น คลาส PDS...

ในภาษาจาวา

ใน Java นักพัฒนาบางคนถือว่าแนวคิด PDS สอดคล้องกับคลาสที่มีสมาชิกข้อมูลสาธารณะและไม่มีเมธอด (Java Code Conventions 10.