logo

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

ان نوع البيانات المجردة (ADT) هو نموذج مفاهيمي يحدد مجموعة من العمليات والسلوكيات لبنية البيانات دون تحديد كيفية تنفيذ هذه العمليات أو كيفية تنظيم البيانات في الذاكرة. تعريف ADT يذكر فقط ما العمليات التي يتعين القيام بها ولكن لا كيف سيتم تنفيذ هذه العمليات. ولا يحدد كيفية تنظيم البيانات في الذاكرة وما هي الخوارزميات التي سيتم استخدامها لتنفيذ العمليات. يطلق عليه اسم "مجرد" لأنه يوفر وجهة نظر مستقلة عن التنفيذ.

تُعرف عملية توفير الأساسيات فقط وإخفاء التفاصيل باسم التجريد.

مميزات ADT



أنواع البيانات المجردة (ADTs) هي طريقة لتغليف البيانات والعمليات على تلك البيانات في وحدة واحدة. تتضمن بعض الميزات الرئيسية لـ ADTs ما يلي:

  • التجريد: لا يحتاج المستخدم إلى معرفة تنفيذ بنية البيانات، حيث يتم توفير الأساسيات فقط.
  • تصور أفضل: توفر لنا ADT تصورًا أفضل للعالم الحقيقي.
  • قوي: البرنامج قوي ولديه القدرة على اكتشاف الأخطاء.
  • التغليف : تخفي أدوات ADT التفاصيل الداخلية للبيانات وتوفر واجهة عامة للمستخدمين للتفاعل مع البيانات. وهذا يسمح بسهولة صيانة وتعديل بنية البيانات.
  • تجريد البيانات : توفر ADTs مستوى من التجريد من تفاصيل تنفيذ البيانات. يحتاج المستخدمون فقط إلى معرفة العمليات التي يمكن إجراؤها على البيانات وليس كيفية تنفيذ تلك العمليات.
  • استقلالية بنية البيانات : يمكن تنفيذ ADTs باستخدام هياكل بيانات مختلفة مثل المصفوفات أو القوائم المرتبطة دون التأثير على وظيفة ADT.
  • إخفاء المعلومات: يمكن لـ ADTs حماية سلامة البيانات من خلال السماح بالوصول فقط للمستخدمين والعمليات المصرح لهم. وهذا يساعد على منع الأخطاء وإساءة استخدام البيانات.
  • نمطية : يمكن دمج أدوات التكيف الرقمية مع أدوات التكيف الرقمية الأخرى لتكوين هياكل بيانات أكبر وأكثر تعقيدًا. وهذا يسمح بمزيد من المرونة والنمطية في البرمجة.

توفر أدوات ADT بشكل عام أداة قوية لتنظيم البيانات ومعالجتها بطريقة منظمة وفعالة.

توضح هذه الصورة كيف يخفي نوع البيانات المجردة (ADT) هياكل البيانات الداخلية (مثل القوائم المرتبطة بالمصفوفات) باستخدام الوظائف العامة والخاصة التي تعرض فقط واجهة محددة لبرنامج التطبيق.

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

لماذا نستخدم أدوات المساعدة الإضافية؟

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

  • التغليف: يخفي تفاصيل التنفيذ المعقدة خلف واجهة نظيفة.
  • قابلية إعادة الاستخدام : يسمح بتطبيقات داخلية مختلفة (مثل المصفوفة أو القائمة المرتبطة) دون تغيير الاستخدام الخارجي.
  • نمطية: يبسط الصيانة والتحديثات عن طريق فصل المنطق.
  • حماية: يحمي البيانات عن طريق منع الوصول المباشر إلى الحد الأدنى من الأخطاء والتغييرات غير المقصودة.

مثال على التجريد

على سبيل المثال، نستخدم القيم البدائية مثل int float وchar مع إدراك أن أنواع البيانات هذه يمكن تشغيلها وتنفيذها دون أي معرفة بتفاصيل تنفيذها. تعمل ADTs بالمثل من خلال تحديد ما هي العمليات الممكنة دون تفصيل تنفيذها.

الفرق بين ADTs وUDTs

يوضح الجدول أدناه الفرق بين ADTs وUDTs.

الصلات وأنواع الصلات

وجه

أنواع البيانات المجردة (ADTs)

أنواع البيانات المعرفة من قبل المستخدم (UDTs)

تعريف

يحدد فئة الكائنات والعمليات التي يمكن إجراؤها عليها مع سلوكها المتوقع (دلالاتها) ولكن دون تحديد تفاصيل التنفيذ.

نوع بيانات مخصص يتم إنشاؤه عن طريق دمج أو توسيع الأنواع الأولية الموجودة التي تحدد البنية والعمليات.

ركز

ما هي العمليات المسموح بها وكيف تتصرف دون إملاء كيفية تنفيذها.

كيف يتم تنظيم البيانات في الذاكرة وكيفية تنفيذ العمليات.

غاية

يوفر نموذجًا مجردًا لتحديد هياكل البيانات بطريقة مفاهيمية.

يسمح للمبرمجين بإنشاء تطبيقات ملموسة لهياكل البيانات باستخدام الأنواع البدائية.

تفاصيل التنفيذ

الماسح الضوئي في جافا

لا يحدد كيفية تنفيذ العمليات أو كيفية تنظيم البيانات.

يحدد كيفية إنشاء وتنظيم أنواع البيانات لتنفيذ البنية.

الاستخدام

تستخدم لتصميم وتصور هياكل البيانات.

يستخدم لتنفيذ هياكل البيانات التي تحقق المفاهيم المجردة التي تحددها ADTs.

مثال

قائمة ADT المكدس ADT قائمة الانتظار ADT.

جافا المسح الضوئي.nextstring

سجلات تعداد فئات الهياكل.

أمثلة على ADTs

الآن دعونا نفهم ثلاث أدوات ADT شائعة: List ADT Stack ADT وQueue ADT.

1. قائمة ADT

قائمة ADT (نوع البيانات المجردة) هي مجموعة متسلسلة من العناصر التي تدعم مجموعة من العمليات دون تحديد التنفيذ الداخلي . يوفر طريقة مرتبة لتخزين الوصول وتعديل البيانات.

أنواع البيانات المجردةمناظر القائمة

العمليات:

تحتاج قائمة ADT إلى تخزين البيانات المطلوبة بالتسلسل ويجب أن تتضمن العمليات التالية :

  • يحصل(): إرجاع عنصر من القائمة في أي موضع محدد.
  • إدراج (): إدراج عنصر في أي موضع في القائمة.
  • يزيل(): إزالة التواجد الأول لأي عنصر من القائمة غير الفارغة.
  • إزالة في (): قم بإزالة العنصر الموجود في موقع محدد من قائمة غير فارغة.
  • يستبدل(): استبدال عنصر في أي موضع بعنصر آخر.
  • مقاس(): إرجاع عدد العناصر في القائمة.
  • فارغ (): يُرجع صحيحًا إذا كانت القائمة فارغة؛ وإلا العودة كاذبة.
  • كامل (): يُرجع صحيحًا إذا كانت القائمة ممتلئة، وإلا يُرجع خطأ. ينطبق فقط على التطبيقات ذات الحجم الثابت (مثل القوائم المستندة إلى المصفوفة).

2. كومة ADT

Stack ADT عبارة عن بنية بيانات خطية تتبع مبدأ LIFO (آخر ما يدخل أولاً يخرج). يسمح بإضافة العناصر وإزالتها فقط من طرف واحد يسمى الجزء العلوي من المكدس.

أنواع البيانات المجردةعرض المكدس

العمليات:

في Stack ADT، يجب أن يكون ترتيب الإدراج والحذف وفقًا لمبدأ FILO أو LIFO. يتم إدراج العناصر وإزالتها من نفس النهاية التي تسمى الجزء العلوي من المكدس. ويجب أن يدعم أيضًا العمليات التالية:

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

3. قائمة الانتظار ADT

Queue ADT عبارة عن بنية بيانات خطية تتبع مبدأ FIFO (أولاً ما يدخل أولاً يخرج أولاً). يسمح بإدراج العناصر من أحد الطرفين (الخلفي) وإزالتها من الطرف الآخر (الأمامي).

أنواع البيانات المجردةعرض قائمة الانتظار

العمليات:

يتبع Queue ADT تصميمًا مشابهًا لـ Stack ADT لكن ترتيب الإدراج والحذف يتغير إلى FIFO. يتم إدخال العناصر من أحد الطرفين (يسمى الجزء الخلفي) وإزالتها من الطرف الآخر (يسمى الجزء الأمامي). يجب أن يدعم العمليات التالية:

نظام الملفات في لينكس
  • قائمة الانتظار (): أدخل عنصرًا في نهاية قائمة الانتظار.
  • وفقاً لذلك(): قم بإزالة العنصر الأول من قائمة الانتظار وإعادته إذا لم تكن قائمة الانتظار فارغة.
  • نظرة خاطفة (): قم بإرجاع عنصر قائمة الانتظار دون إزالته إذا لم تكن قائمة الانتظار فارغة.
  • مقاس(): إرجاع عدد العناصر في قائمة الانتظار.
  • فارغ (): يُرجع صحيحًا إذا كانت قائمة الانتظار فارغة؛ وإلا العودة كاذبة.

مزايا وعيوب ADT

تتمتع أنواع البيانات المجردة (ADTs) بالعديد من المزايا والعيوب التي يجب أخذها في الاعتبار عند اتخاذ قرار باستخدامها في تطوير البرمجيات. فيما يلي بعض المزايا والعيوب الرئيسية لاستخدام ADTs:

ميزة:

المزايا مذكورة أدناه:

  • التغليف : توفر ADTs طريقة لتغليف البيانات والعمليات في وحدة واحدة مما يسهل إدارة بنية البيانات وتعديلها.
  • التجريد : تتيح أدوات ADT للمستخدمين العمل مع هياكل البيانات دون الحاجة إلى معرفة تفاصيل التنفيذ مما قد يؤدي إلى تبسيط البرمجة وتقليل الأخطاء.
  • استقلالية بنية البيانات : يمكن تنفيذ أدوات تطوير التكنولوجيا باستخدام هياكل بيانات مختلفة مما يسهل التكيف مع الاحتياجات والمتطلبات المتغيرة.
  • إخفاء المعلومات : يمكن لتقنيات ADT حماية سلامة البيانات من خلال التحكم في الوصول إليها ومنع التعديلات غير المصرح بها.
  • نمطية : يمكن دمج أدوات ADT مع أدوات ADT الأخرى لتكوين هياكل بيانات أكثر تعقيدًا والتي يمكن أن تزيد من المرونة والنمطية في البرمجة.

العيوب:

العيوب مذكورة أدناه:

  • النفقات العامة : يمكن أن يؤدي تطبيق ADTs إلى زيادة الحمل من حيث الذاكرة والمعالجة مما قد يؤثر على الأداء.
  • تعقيد : يمكن أن تكون تقنيات ADT معقدة في التنفيذ خاصة بالنسبة لهياكل البيانات الكبيرة والمعقدة.
  • تعلُّم المنحنى: يتطلب استخدام أدوات التكنولوجيا المتقدمة معرفة كيفية تنفيذها واستخدامها، الأمر الذي قد يستغرق وقتًا وجهدًا للتعلم.
  • مرونة محدودة: قد تكون بعض أدوات ADT محدودة في وظائفها أو قد لا تكون مناسبة لجميع أنواع هياكل البيانات.
  • يكلف : قد يتطلب تنفيذ أدوات تطوير التكنولوجيا موارد واستثمارات إضافية يمكن أن تزيد من تكلفة التطوير.
إنشاء اختبار