بنية البيانات السلبية
في علوم الحاسوب والبرمجة كائنية التوجه ، تُعرف بنية البيانات السلبية ( PDS )، والتي تُسمى أيضًا بنية البيانات البسيطة أو البيانات البسيطة ( POD )، بأنها سجل ، على عكس الكائنات. وهي بنية بيانات تُمثل فقط كمجموعات سلبية من قيم الحقول ( متغيرات النسخة )، دون استخدام خصائص البرمجة كائنية التوجه. [ 1 ]
الأساس المنطقي
تُعدّ هياكل البيانات السلبية مناسبةً عندما يكون هناك جزء من النظام يتطلب توضيحًا دقيقًا بأنّ منطق معالجة البيانات وسلامتها موجود في مكان آخر. غالبًا ما توجد هذه الهياكل على حدود النظام، حيث تُنقل المعلومات من وإلى أنظمة أخرى أو وحدات تخزين دائمة، ويكون منطق مجال المشكلة الموجود في أجزاء أخرى من النظام غير ذي صلة. على سبيل المثال، تُعدّ هياكل البيانات السلبية ملائمةً لتمثيل قيم حقول الكائنات التي تُنشأ من بيانات خارجية، في جزء من النظام لم تُطبّق فيه بعدُ عمليات التحقق والتفسير الدلالية اللازمة للكائنات الصالحة.
في لغة C++
يُعرَّف نوع PDS في لغة C++ ، أو كائن C++ العادي ، إما كنوع عددي أو كفئة PDS. [ 2 ] لا تحتوي فئة PDS على مُعامل إسناد نسخ مُعرَّف من قِبل المستخدم، ولا مُدمِّر مُعرَّف من قِبل المستخدم، ولا أعضاء بيانات غير ثابتة ليست PDS بحد ذاتها. علاوة على ذلك، يجب أن تكون فئة PDS مُجمَّعة، أي أنها لا تحتوي على مُنشئات مُعلنة من قِبل المستخدم، ولا بيانات غير ثابتة خاصة أو محمية، ولا فئات أساسية افتراضية [ a ] ، ولا دوال افتراضية. [ 4 ] يتضمن المعيار بيانات حول كيفية عمل PDS في C++. توفر type_traitsالمكتبة في مكتبة C++ القياسية قالبًا يُسمى is_podيمكن استخدامه لتحديد ما إذا كان نوع مُعين هو POD. [ 5 ] في C++20، تم إهمال مفهوم "البيانات العادية القديمة" (POD) is_podواستُبدل بمفهوم أنواع "التافهة" و"التخطيط القياسي". [ 6 ]
في بعض السياقات، لا تسمح لغة C++ إلا باستخدام أنواع PDS. على سبيل المثال، unionلا يمكن أن يحتوي عنصر في C++98 على فئة تتضمن دوالًا افتراضية أو دوال إنشاء أو تدمير غير تافهة. يُفرض هذا القيد لأن المُصرّف لا يستطيع تحديد دالة الإنشاء أو التدمير التي يجب استدعاؤها عند إنشاء اتحاد. يمكن أيضًا استخدام أنواع PDS للتفاعل مع لغة C ، التي تدعم أنواع PDS فقط.
في لغة جافا
في لغة جافا ، يرى بعض المطورين أن مفهوم PDS يُشير إلى فئة تحتوي على أعضاء بيانات عامة ولا تحتوي على أي توابع (اتفاقيات كود جافا 10.1)، [ 7 ] أي كائن نقل بيانات . [ 8 ] بينما يُضيف آخرون كائنات جافا العادية (POJOs)، وهي فئة تحتوي على توابع ولكن فقط دوال جلب وتعيين، بدون أي منطق، بالإضافة إلى JavaBeans، إلى مفهوم PDS إذا لم تستخدم معالجة الأحداث ولم تُنفذ توابع إضافية بخلاف دوال الجلب والتعيين. مع ذلك، فإن كائنات POJOs وJavaBeans تُطبق مبدأ التغليف ، وبالتالي تُخالف التعريف الأساسي لمفهوم PDS.
السجلات (التي تم تقديمها في Java 16، في عام 2021) هي ناقلات بيانات غير قابلة للتغيير بشكل سطحي بدون تغليف، وبالتالي يمكن اعتبارها أيضًا PDS.
بلغات أخرى
في لغة PHPstdClass ، يمكن اعتبار المصفوفات الترابطية والكائنات بمثابة مجموعات بيانات قابلة للبرمجة (PDS).
يمكن أيضًا استخدام تمثيلات البيانات المهيكلة الأخرى مثل XML أو JSON كـ PDS إذا لم يتم استخدام قيود دلالية كبيرة.
في بايثون ، توفر وحدة dataclass فئات البيانات (dataclasses) - والتي تُستخدم غالبًا كحاويات غير سلوكية لتخزين البيانات، مع خيارات للتحقق من صحة البيانات. وقد تم تقديم فئات البيانات في بايثون في الإصدار 3.7، وهي توفر طريقة سهلة لإنشاء فئة وتخزين قيم البيانات. تُستخدم فئات البيانات لتوفير التعليمات البرمجية المتكررة وتحسين قابلية قراءة الكود. [ 9 ]
في لغة C ، يتم استخدام الهياكل بنفس الطريقة.
انظر أيضاً
ملحوظات
مراجع
- ↑ بلاك، بول إي.؛ فريدا بيترس (2007). "بنية البيانات السلبية" . قاموس الخوارزميات وهياكل البيانات . تم الاسترجاع في 11 سبتمبر 2014 .
- ↑ مجلس صناعة تكنولوجيا المعلومات (15-10-2003). لغات البرمجة - سي++ ( الطبعة الثانية). جنيف: المنظمة الدولية للمقاييس/اللجنة الكهروتقنية الدولية. 14882:2003(هـ).
- ↑ بيارن ستروستروب (يونيو 2013). لغة البرمجة C++ ( الطبعة الرابعة). الولايات المتحدة الأمريكية: بيرسون إديوكيشن، إنك. ISBN 978-0-321-56384-2.
- ↑ والتر إي. براون (29 سبتمبر 1999). "ملاحظة حول لغة C++: أنواع البيانات البسيطة" . مختبر فيرمي الوطني للمسرعات . مؤرشف من الأصل في 3 ديسمبر 2016. تم الاطلاع عليه في 6 ديسمبر 2016 .
- ↑ "مرجع is_pod بلغة C++" . cplusplus.com . تم الاطلاع عليه بتاريخ 6 ديسمبر 2016 .
- ↑ "P0767R1: إيقاف استخدام POD" . www.open-std.org . تم الاطلاع عليه بتاريخ 20 يناير 2020 .
- ↑ "اتفاقيات كود جافا 10.1" . أوراكل . تم الاطلاع عليه بتاريخ 6 ديسمبر 2016 .
- ↑ "هياكل بيانات لغة جافا" . اتفاقيات ترميز صن/أوراكل. 20 أبريل 1999. تم الاطلاع عليه في 6 ديسمبر 2016 .
- ↑ "ما هي فئات البيانات في بايثون؟ - دي جيه تيك نيوز" . 30 أغسطس 2023.
- لغة سي++
- أنواع البيانات المركبة
