قبل أن نعرف نوع البيانات المجردة، يجب أن نعرف ما هي بنية البيانات.
ما هي بنية البيانات؟
بنية البيانات هي تقنية لتنظيم البيانات بحيث يمكن استخدام البيانات بكفاءة. هناك طريقتان لعرض بنية البيانات:
لماذا بنية البيانات؟
فيما يلي مزايا استخدام بنية البيانات:
- هذه هي المكونات الأساسية المستخدمة لإنشاء خوارزميات سريعة وقوية.
- أنها تساعدنا على إدارة وتنظيم البيانات.
- تجعل هياكل البيانات الكود أكثر وضوحًا وأسهل للفهم.
ما هو نوع البيانات المجردة؟
نوع البيانات المجردة هو تجريد لبنية البيانات التي توفر فقط الواجهة التي يجب أن تلتزم بها بنية البيانات. لا تقدم الواجهة أي تفاصيل محددة حول شيء ما يجب تنفيذه أو بأي لغة برمجة.
بمعنى آخر، يمكننا القول أن أنواع البيانات المجردة هي الكيانات التي تمثل تعريفات للبيانات والعمليات ولكن ليس لديها تفاصيل التنفيذ. في هذه الحالة، نحن نعرف البيانات التي نقوم بتخزينها والعمليات التي يمكن إجراؤها على البيانات، لكننا لا نعرف تفاصيل التنفيذ. سبب عدم وجود تفاصيل التنفيذ هو أن كل لغة برمجة لها استراتيجية تنفيذ مختلفة على سبيل المثال؛ يتم تنفيذ بنية بيانات C باستخدام الهياكل بينما يتم تنفيذ بنية بيانات C++ باستخدام الكائنات والفئات.
على سبيل المثال، القائمة هي نوع بيانات مجردة يتم تنفيذه باستخدام مصفوفة ديناميكية وقائمة مرتبطة. يتم تنفيذ قائمة الانتظار باستخدام قائمة انتظار مرتبطة قائمة، وقائمة انتظار قائمة على المصفوفة، وقائمة انتظار قائمة على المكدس. يتم تنفيذ الخريطة باستخدام خريطة الشجرة أو خريطة التجزئة أو جدول التجزئة.
نموذج نوع البيانات المجردة
قبل أن نعرف نموذج نوع البيانات المجردة، يجب أن نعرف عن التجريد والتغليف.
np.random.rand
التجريد: هو أسلوب إخفاء التفاصيل الداخلية عن المستخدم وإظهار التفاصيل الضرورية فقط للمستخدم.
التغليف: هو أسلوب يجمع البيانات ووظيفة العضو في وحدة واحدة ويعرف بالتغليف.
يوضح الشكل أعلاه نموذج ADT. هناك نوعان من النماذج في نموذج ADT، أي الوظيفة العامة والوظيفة الخاصة. يحتوي نموذج ADT أيضًا على هياكل البيانات التي نستخدمها في البرنامج. في هذا النموذج، يتم تنفيذ التغليف الأول، أي يتم تغليف كافة البيانات في وحدة واحدة، أي ADT. ومن ثم يتم إجراء التجريد يعني إظهار العمليات التي يمكن إجراؤها على بنية البيانات وما هي هياكل البيانات التي نستخدمها في البرنامج.
دعونا نفهم نوع البيانات المجردة بمثال واقعي.
إذا نظرنا إلى الهاتف الذكي. ونستعرض المواصفات العالية للهاتف الذكي مثل:
- 4 جيجابايت من ذاكرة الوصول العشوائي
- معالج سنابدراجون 2.2 جيجا هرتز
- شاشة ال سي دي 5 بوصة
- كاميرا مزدوجة
- أندرويد 8.0
المواصفات المذكورة أعلاه للهاتف الذكي هي البيانات، ويمكننا أيضًا إجراء العمليات التالية على الهاتف الذكي:
الهاتف الذكي هو كيان وردت بياناته أو مواصفاته وعملياته أعلاه. العرض والعمليات المجردة/المنطقية هي العروض المجردة أو المنطقية للهاتف الذكي.
أسئلة المقابلة في لغة جافا
طريقة عرض التنفيذ للعرض التجريدي/المنطقي أعلاه موضحة أدناه:
class Smartphone { private: int ramSize; string processorName; float screenSize; int cameraCount; string androidVersion; public: void call(); void text(); void photo(); void video(); }
الكود أعلاه هو تنفيذ المواصفات والعمليات التي يمكن إجراؤها على الهاتف الذكي. يمكن أن يختلف عرض التنفيذ نظرًا لاختلاف بناء جملة لغات البرمجة، لكن العرض المجرد/المنطقي لبنية البيانات سيظل كما هو. لذلك، يمكننا القول أن العرض المجرد/المنطقي مستقل عن عرض التنفيذ.
ملاحظة: نحن نعرف العمليات التي يمكن إجراؤها على أنواع البيانات المحددة مسبقًا، مثل int وfloat وchar وما إلى ذلك، لكننا لا نعرف تفاصيل تنفيذ أنواع البيانات. لذلك يمكننا القول أن نوع البيانات المجردة يعتبر بمثابة المربع المخفي الذي يخفي كافة التفاصيل الداخلية لنوع البيانات.
مثال على بنية البيانات
لنفترض أن لدينا مصفوفة فهرس بحجم 4. لدينا موقع فهرس يبدأ من 0، 1، 2، 3. المصفوفة عبارة عن بنية بيانات حيث يتم تخزين العناصر في موقع مجاور. عنوان ذاكرة العنصر الأول هو 1000، والعنصر الثاني 1004، والعنصر الثالث 1008، والعنصر الرابع 1012. وبما أنه من النوع الصحيح فإنه سيشغل 4 بايت والفرق بين عناوين كل عنصر هو 4 بايت. القيم المخزنة في المصفوفة هي 10 و20 و30 و40. هذه القيم ومواضع الفهرس وعناوين الذاكرة هي التطبيقات.
يمكن ذكر العرض المجرد أو المنطقي لمصفوفة الأعداد الصحيحة على النحو التالي:
- يقوم بتخزين مجموعة من العناصر من النوع الصحيح.
- يقرأ العناصر حسب الموضع، أي الفهرس.
- يقوم بتعديل العناصر حسب الفهرس
- يقوم بالفرز
عرض تنفيذ مجموعة الأعداد الصحيحة:
a[4] = {10, 20, 30, 40} cout<< a[2] a[3] = 50