حاوية (نوع بيانات مجرد)

مخطط هرمي للفئات والواجهات في إطار عمل مجموعات جافا

في علم الحاسوب ، الحاوية هي فئة أو بنية بيانات [ 1 ] [ 2 ] تتكون مثيلاتها من مجموعات من كائنات أخرى. بعبارة أخرى، تخزن الحاويات الكائنات بطريقة منظمة تتبع قواعد وصول محددة.

يعتمد حجم الحاوية على عدد العناصر التي تحتويها. قد تختلف التطبيقات الأساسية (الموروثة) لأنواع الحاويات المختلفة في الحجم والتعقيد ونوع اللغة، ولكنها في كثير من الحالات توفر مرونة في اختيار التطبيق المناسب لأي سيناريو معين.

تُستخدم هياكل بيانات الحاويات بشكل شائع في العديد من أنواع لغات البرمجة .

الوظيفة والخصائص

يمكن وصف الحاويات بالخصائص الثلاث التالية:

  • الوصول ، أي طريقة الوصول إلى كائنات الحاوية. في حالة المصفوفات، يتم الوصول باستخدام فهرس المصفوفة. في حالة المكدسات، يتم الوصول وفقًا لترتيب LIFO (آخر ما يدخل، أول ما يخرج) وفي حالة الطوابير يتم الوصول وفقًا لترتيب FIFO (أول ما يدخل، أول ما يخرج)؛
  • التخزين ، أي طريقة تخزين الأشياء الموجودة في الحاوية؛
  • الاجتياز ، أي طريقة اجتياز كائنات الحاوية.

من المتوقع أن تقوم فئات الحاويات بتنفيذ أساليب مشابهة لأساليب CRUD للقيام بما يلي:

  • إنشاء حاوية فارغة (المنشئ)؛
  • أدخل الكائنات في الحاوية؛
  • حذف الكائنات من الحاوية؛
  • حذف جميع العناصر الموجودة في الحاوية (مسح)؛
  • الوصول إلى الكائنات الموجودة في الحاوية؛
  • الوصول إلى عدد العناصر الموجودة في الحاوية (العدد).

يتم أحيانًا تنفيذ الحاويات بالتزامن مع المكررات .

الأنواع

يمكن تصنيف الحاويات إما على أنها حاويات ذات قيمة واحدة أو حاويات ترابطية .

تخزن الحاويات ذات القيمة الواحدة كل كائن بشكل مستقل. ويمكن الوصول إلى الكائنات مباشرة، أو عن طريق بنية حلقة لغوية (مثل حلقة for )، أو باستخدام مُكرِّر .

يستخدم الحاوية الترابطية مصفوفة ترابطية أو خريطة أو قاموسًا، يتألف من أزواج مفتاح-قيمة، بحيث يظهر كل مفتاح مرة واحدة على الأكثر في الحاوية. يُستخدم المفتاح للعثور على القيمة، أي الكائن، إذا كان مخزنًا في الحاوية. تُستخدم الحاويات الترابطية في لغات البرمجة كقوالب للفئات.

تشمل أنواع البيانات المجردة للحاويات ما يلي:

تشمل هياكل البيانات الشائعة المستخدمة لتنفيذ هذه الأنواع المجردة ما يلي:

حاويات رسومية

تستخدم مجموعات أدوات الأدوات أيضًا الحاويات، وهي أدوات خاصة لتجميع أدوات أخرى، مثل النوافذ واللوحات . وبصرف النظر عن خصائصها الرسومية، فإنها تتمتع بنفس نوع سلوك فئات الحاويات، حيث تحتفظ بقائمة بالأدوات الفرعية الخاصة بها ، وتسمح بإضافة الأدوات أو إزالتها أو استردادها من بين الأدوات الفرعية.

في اللغات ذات الكتابة الثابتة

يمكن كتابة تجريدات الحاويات بأي لغة برمجة تقريبًا، بغض النظر عن نظام أنواعها. [ 3 ] : 273 ومع ذلك، في لغات البرمجة الكائنية التوجه ذات الأنواع القوية، قد يكون من الصعب على المطور كتابة حاويات متجانسة قابلة لإعادة الاستخدام.

بسبب الاختلافات في أنواع العناصر، ينتج عن ذلك عملية شاقة تتمثل في كتابة مجموعة من الحاويات لكل نوع من أنواع العناصر والاحتفاظ بها. [ 3 ] : 274-276

تتسم العديد من أنواع البيانات الأساسية (مثل الأعداد الصحيحة أو الأعداد العشرية) بعدم التوافق فيما بينها بطبيعتها نظرًا لحجم الذاكرة التي تشغلها ومعناها الدلالي، وبالتالي تتطلب حاويات مختلفة (إلا إذا كانت متوافقة أو قابلة للتحويل). [ 3 ] : 274-276. وتقدم لغات البرمجة الحديثة مناهج متنوعة للمساعدة في حل هذه المشكلة: [ 3 ] : 274-281.

نوع البيانات الأساسي العالمي
نوع يمكن تعيينه عالميًا بواسطة أي نوع آخر (مثل فئة الكائن الجذرية).
هبوط الرياح ؛
استبدال الصف
تُستخدم الأساليب الثلاثة السابقة المذكورة أعلاه للغات ذات الأنواع الضعيفة؛ وعادةً ما تتضمن هذه الأساليب الوراثة وتعدد الأشكال المشتركة بين الأنواع.
أنواع الاتحاد (لغة C/C++)
يسمح بتخزين أنواع مختلفة من أحجام البيانات؛ ومع ذلك، من الصعب التأكد من النوع الذي يتم تخزينه في الاتحاد عند الاسترجاع، ويجب اتباع ذلك بعناية.
تحويل النوع
القوالب أو النماذج العامة
يضمن إعادة الاستخدام وسلامة النوع؛ ويمكن اعتباره وراثة عكسية. مع ذلك، قد يتطلب هذا النهج تطبيق تخصيص القالب ، وهي عملية تستغرق وقتًا طويلاً نظرًا لاختلاف الأنواع في أساليبها. [ 3 ] : 281

انظر أيضاً

مراجع

  1. بول إي. بلاك (محرر)، مدخل بنية البيانات في قاموس الخوارزميات وهياكل البيانات . المعهد الوطني الأمريكي للمعايير والتكنولوجيا . 15 ديسمبر 2004. تم الاطلاع عليه في 4 أكتوبر 2011.
  2. بنية بيانات المدخلفي موسوعة بريتانيكا (2009) المدخل الإلكتروني تم الوصول إليه في 4 أكتوبر 2011.
  3. 1 2 3 4 5 بود، تيموثي (1997). مقدمة في البرمجة الكائنية التوجه (  الطبعة الثانية). ريدينغ، ماساتشوستس: أديسون-ويسلي. ISBN 0-201-82419-1. OCLC 34788238 .