ساختار داده منفعل

در علوم کامپیوتر و برنامه نویسی شی گرا ، یک ساختار داده غیرفعال ( PDS ) که به آن ساختار داده قدیمی ساده یا داده قدیمی ساده ( POD ) نیز گفته می شود، برخلاف اشیا یک رکورد است. این ساختار داده ای است که تنها به صورت مجموعه های غیرفعال مقادیر فیلد ( متغیرهای نمونه )، بدون استفاده از ویژگی های شی گرا نمایش داده می شود. [1]

بنیاد و پایه

ساختارهای داده غیرفعال زمانی مناسب هستند که بخشی از سیستم وجود داشته باشد که باید به وضوح نشان داده شود که منطق دقیق دستکاری و یکپارچگی داده در جای دیگری است. PDS ها اغلب در مرزهای یک سیستم یافت می شوند، جایی که اطلاعات به و از سیستم های دیگر یا ذخیره سازی دائمی منتقل می شود و منطق حوزه مشکل که در قسمت های دیگر سیستم یافت می شود نامربوط است. به عنوان مثال، PDS برای نمایش مقادیر میدان اشیایی که از داده های خارجی ساخته می شوند، در بخشی از سیستم که بررسی های معنایی و تفسیرهای مورد نیاز برای اشیاء معتبر هنوز اعمال نشده اند، مناسب است.

در C++

یک نوع PDS در C++ ، یا Plain Old C++ Object ، به عنوان یک نوع اسکالر یا یک کلاس PDS تعریف می‌شود. [2] یک کلاس PDS هیچ عملگر انتساب کپی تعریف شده توسط کاربر، هیچ تخریب کننده تعریف شده توسط کاربر، و هیچ عضو داده غیراستاتیکی که خود PDS نیستند، ندارد. علاوه بر این، یک کلاس PDS باید یک انبوه باشد، به این معنی که هیچ سازنده اعلام شده توسط کاربر، هیچ داده غیر ایستا خصوصی یا محافظت شده، هیچ کلاس پایه مجازی [a] و هیچ توابع مجازی ندارد. [4] این استاندارد شامل عباراتی در مورد نحوه رفتار PDS در C++ است. کتابخانه type_traitsموجود در کتابخانه استاندارد C++ الگویی به نام ارائه می‌کند is_podکه می‌توان از آن برای تعیین اینکه آیا یک نوع معین POD است استفاده کرد. [5] در C++20 مفهوم «داده‌های قدیمی ساده» (POD) is_podمنسوخ شده و با مفهوم انواع «بی‌اهمیت» و «طرح‌بندی استاندارد» جایگزین شده است. [6]

در برخی زمینه ها، C++ اجازه می دهد فقط از انواع PDS استفاده شود. برای مثال، a unionدر C++98 نمی‌تواند شامل کلاسی باشد که دارای توابع مجازی یا سازنده‌ها یا مخرب‌های غیرمعمول است. این محدودیت به این دلیل اعمال می شود که کامپایلر نمی تواند تعیین کند که کدام سازنده یا تخریب کننده باید برای یک اتحاد فراخوانی شود. از انواع PDS نیز می توان برای رابط با C استفاده کرد که فقط از PDS پشتیبانی می کند.

در جاوا

در جاوا ، برخی از توسعه دهندگان معتقدند که مفهوم PDS با یک کلاس با اعضای داده عمومی و بدون روش مطابقت دارد (معاملات کد جاوا 10.1)، [7] به عنوان مثال، یک شی انتقال داده . [8] سایر موارد نیز شامل اشیاء قدیمی جاوا (POJOs) هستند، کلاسی که متدهایی دارد اما فقط گیرنده‌ها و تنظیم‌کننده‌ها، بدون منطق، و JavaBeans که در صورت استفاده نکردن از مدیریت رویداد و پیاده‌سازی موارد اضافه شده، تحت مفهوم PDS قرار می‌گیرند. روش هایی فراتر از گیرنده ها و تنظیم کننده ها [ نیازمند منبع ] با این حال، POJO ها و جاوا Beans دارای کپسوله سازی هستند ، و بنابراین تعریف اساسی PDS را نقض می کنند.

رکوردها (معرفی شده در جاوا 16، در سال 2021) حامل های کم عمقی غیرقابل تغییر داده ها بدون کپسوله سازی هستند و بنابراین می توان آنها را نیز PDS در نظر گرفت.

در زبان های دیگر

در PHP ، آرایه های انجمنی و اشیاء stdClass را می توان PDS در نظر گرفت. [ نیازمند منبع ]

در صورت عدم استفاده از محدودیت معنایی قابل توجه ، سایر نمایش داده های ساختار یافته مانند XML یا JSON نیز می توانند به عنوان PDS استفاده شوند.

در پایتون ، ماژول کلاس داده، کلاس‌های داده را فراهم می‌کند - اغلب به عنوان محفظه‌های بدون رفتار برای نگهداری داده‌ها، با گزینه‌هایی برای اعتبارسنجی داده‌ها استفاده می‌شود. کلاس‌های داده در پایتون، که در نسخه 3.7 معرفی شده‌اند، راه مناسبی برای ایجاد کلاس و ذخیره مقادیر داده ارائه می‌دهند. کلاس های داده برای ذخیره کدهای تکراری ما و ارائه خوانایی بهتر استفاده می کنند. [9]

در C ، ساختارها به همین ترتیب استفاده می شوند.

همچنین ببینید

یادداشت

  1. ^ یک کلاس PDS می تواند یک کلاس پایه داشته باشد که اولین اعضای داده غیراستاتیک آن متفاوت است. [3]

منابع

  1. ^ بلک، پل ای. وردا پیترز (2007). "ساختار داده منفعل". فرهنگ لغت الگوریتم ها و ساختارهای داده . بازبینی شده در 11 سپتامبر 2014 .
  2. ^ شورای صنعت فناوری اطلاعات (2003-10-15). زبان های برنامه نویسی - C++ (ویرایش دوم). ژنو: ISO/IEC. 14882:2003 (E).
  3. بیارن استروستروپ (ژوئن ۲۰۱۳). زبان برنامه نویسی C++ (ویرایش چهارم). ایالات متحده آمریکا: Pearson Education, Inc. ISBN 978-0-321-56384-2.
  4. والتر ای. براون (۲۹ سپتامبر ۱۹۹۹). "نکته زبان C++: انواع POD". آزمایشگاه ملی شتاب دهنده فرمی . بایگانی شده از نسخه اصلی در 3 دسامبر 2016 . بازبینی شده در 6 دسامبر 2016 .
  5. ^ "is_pod C++ Reference". cplusplus.com . بازبینی شده در 6 دسامبر 2016 .
  6. «P0767R1: POD منسوخ شود». www.open-std.org . بازیابی شده در 2020-01-20 .
  7. «کنوانسیون کد جاوا 10.1». اوراکل . بازبینی شده در 6 دسامبر 2016 .
  8. «ساختارهای داده زبان جاوا». قراردادهای کد Sun/Oracle. 20 آوریل 1999 . بازبینی شده در 6 دسامبر 2016 .
  9. ^ https://djtechnews.in/what-are-dataclasses-in-python/
برگرفته از "https://en.wikipedia.org/w/index.php?title=Passive_data_structure&oldid=1179631182"