سؤال

هل يمكن أن تخبرني ما هو الفرق بين التجريد و إخفاء المعلومات في تطوير البرمجيات؟

أنا في حيرة.يخفي التجريد التنفيذ التفصيلي وإخفاء المعلومات تجريد التفاصيل الكاملة لشيء ما.

تحديث: لقد وجدت إجابة جيدة لهذه المفاهيم الثلاثة. انظر الإجابة المنفصلة أدناه لعدة اقتباسات مأخوذة من هناك.

هل كانت مفيدة؟

المحلول

اذهب إلى المصدر!يقول جرادي بوش (في التحليل والتصميم الموجه للكائنات، الصفحة 49، الطبعة الثانية):

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

بعبارة أخرى:التجريد = الكائن خارجيا؛التغليف (يتم تحقيقه من خلال إخفاء المعلومات) = الكائن داخليًا،

مثال:في .NET Framework، System.Text.StringBuilder توفر الفئة تجريدًا عبر مخزن مؤقت للسلسلة.يتيح لك تجريد المخزن المؤقت هذا العمل مع المخزن المؤقت دون النظر إلى تنفيذه.وبالتالي، يمكنك إلحاق السلاسل بالمخزن المؤقت دون النظر إلى كيفية تنفيذ ذلك StringBuilder يتتبع داخليًا أشياء مثل المؤشر إلى المخزن المؤقت وإدارة الذاكرة عندما يمتلئ المخزن المؤقت (وهو ما يفعله مع التغليف عبر إخفاء المعلومات).

روبية

نصائح أخرى

قام OP بتحديث سؤاله بالعديد من الاستشهادات التي وجدها، وبالتحديد في مقال بقلم إدوارد ف.بيرارد بعنوان "التجريد والتغليف وإخفاء المعلومات".أقوم بإعادة نشر نسخة موسعة قليلاً ومُعاد تنسيقها من تحديث OP، حيث يجب أن تكون إجابة في حد ذاتها.

(جميع الاستشهادات مأخوذة من المقالة المذكورة أعلاه.)

التجريد:

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

إخفاء المعلومات:

"تم اختيار واجهته أو تعريفه ليكشف أقل قدر ممكن عن أعماله الداخلية." — [بارناس، 1972ب]

"يمكن استخدام التجريد كأسلوب لتحديد المعلومات التي يجب إخفاؤها."

"يمكن أن يحدث الارتباك عندما يفشل الناس في التمييز بين إخفاء المعلومات، والتقنية (على سبيل المثال، التجريد) المستخدمة للمساعدة في تحديد المعلومات التي يجب إخفاؤها."

التغليف:

"إنها (...) تشير إلى بناء كبسولة، في حالة وجود حاجز مفاهيمي، حول مجموعة من الأشياء." — [ويرفس-بروك وآخرون، 1990]

"كعملية، يعني التغليف عملية وضع عنصر واحد أو أكثر داخل حاوية [...].يشير التغليف، ككيان، إلى حزمة أو حاوية تحتوي (تحتوي على، ترفق) عنصرًا واحدًا أو أكثر."

"إذا كان التغليف" نفس الشيء الذي يختبئه المعلومات "، فيمكن للمرء أن يقدم حجة مفادها أن" كل ما تم تغليفه كان مخفيًا أيضًا ". من الواضح أن هذا غير صحيح ".

خاتمة:

"إن التجريد وإخفاء المعلومات والتغليف هي مفاهيم مختلفة جدًا، ولكنها مرتبطة بشكل كبير.يمكن للمرء أن يجادل بأن التجريد هو أسلوب يساعدنا في تحديد المعلومات المحددة التي يجب أن تكون مرئية، وأي المعلومات يجب أن تكون مخفية.التغليف هو تقنية تغليف المعلومات بطريقة تخفي ما ينبغي إخفاؤه، وتجعل ما هو مقصود أن يكون مرئيًا مرئيًا."

Abstraction يخفي تفاصيل التنفيذ من خلال توفير طبقة فوق الوظيفة الأساسية.

Information Hiding يخفي البيانات التي تتأثر بهذا التنفيذ.استخدام private و public يأتي تحت هذا.على سبيل المثال، إخفاء متغيرات الفئات.

Encapsulation هو مجرد وضع جميع البيانات والوظائف المماثلة في مجموعة على سبيل المثال Class في البرمجة؛ Packet في الشبكات.

من خلال استخدام الفئات، نقوم بتنفيذ جميع المفاهيم الثلاثة - Abstraction, Information Hiding و Encapsulation

من فضلك لا تعقد المفاهيم البسيطة.

التغليف :تغليف البيانات والأساليب في وحدة واحدة هو التغليف (على سبيل المثال.فصل)

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

للحصول على أمثلة ومزيد من المعلومات، انتقل إلى:

http://thecodekey.com/C_VB_Codes/Encapsulation.aspx

http://thecodekey.com/C_VB_Codes/Abstraction.aspx

التعريفات المعتمدة هنا

ملاحظة.:أتذكر أيضًا التعريف من كتاب اسمه C++ للكاتب سوميتا أرورا والذي قرأناه في الصف الحادي عشر ;)

ومعنى التجريد الذي قدمه قاموس أكسفورد الإنجليزي (OED) الأقرب إلى المعنى المقصود هنا هو "فعل الانفصال في الفكر".قد يكون التعريف الأفضل هو "تمثيل السمات الأساسية لشيء ما دون تضمين الخلفية أو التفاصيل غير الضرورية".

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

يحرر:يبدو لي أن التجريد هو عملية لتحديد أجزاء التنفيذ التي ينبغي أن تكون مختفي.

لذلك ليس التجريد مقابل إخفاء المعلومات.إنها معلومات تخفي تجريد VIA.

التجريد

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

التغليف

يشرح التغليف ربط أعضاء البيانات والأساليب في وحدة واحدة.إخفاء المعلومات هو الغرض الرئيسي من التغليف.يتم تحقيق التغليف باستخدام محددات الوصول مثل خاص، عام، محمي.يتم جعل متغيرات أعضاء الفصل خاصة بحيث لا يمكن الوصول إليها مباشرة من قبل العالم الخارجي.يركز التغليف على الرؤية الداخلية.بمعنى آخر، التغليف هو أسلوب يستخدم لحماية المعلومات الموجودة في كائن ما من الكائن الآخر.

التجريد يخفي تفاصيل التنفيذ كما تقول.

أنت تقوم بتجريد شيء ما إلى نقطة عالية بما يكفي بحيث لن يتعين عليك سوى القيام بشيء بسيط جدًا لتنفيذ إجراء ما.

إخفاء المعلومات هو إخفاء تفاصيل التنفيذ.البرمجة صعبة.يمكن أن يكون لديك الكثير من الأشياء للتعامل معها والتعامل معها.يمكن أن تكون هناك متغيرات تريدها/تحتاج إلى متابعتها عن كثب.يضمن إخفاء المعلومات عدم قيام أي شخص بكسر شيء ما عن طريق الخطأ باستخدام متغير أو طريقة كشفتها علنًا.

يرتبط هذان المفهومان ارتباطًا وثيقًا ببعضهما البعض في البرمجة الموجهة للكائنات.

التجريد - إنها عملية تحديد الخصائص الأساسية لكائن دون تضمين التفاصيل غير ذات الصلة والمملة.

التغليف - هي عملية تجميع البيانات والوظائف التي تعالج هذه البيانات في وحدة واحدة.

التجريد والتغليف هما مفهومان مرتبطان ولكن متكاملان.

  1. التجريد هو العملية.التغليف هو الآلية التي يتم من خلالها تنفيذ التجريد.

  2. يركز التجريد على السلوك الملحوظ للكائن.يركز التغليف على التنفيذ الذي يؤدي إلى هذا السلوك.

إخفاء المعلومات - هي عملية إخفاء تفاصيل تنفيذ كائن ما.إنها نتيجة للتغليف.

التغليف:يسمى ربط أعضاء البيانات ووظائف الأعضاء معًا بالتغليف.يتم التغليف من خلال الفصل.التجريد:يُسمى إخفاء استخدام نموذج تفاصيل التنفيذ أو من العرض بالتجريد.السابق:كثافة العمليات س؛لا نعرف كيف سيعمل int داخليًا.لكننا نعلم أن int سيعمل.هذا هو التجريد.

التجريد : التجريد هو المفهوم/التقنية المستخدمة لتحديد ما ينبغي أن يكون المنظر الخارجي لكائن ما.إتاحة الواجهة المطلوبة فقط.

إخفاء المعلومات : وهو مكمل للتجريد، إذ من خلال إخفاء المعلومات يتحقق التجريد.إخفاء كل شيء آخر ما عدا المنظر الخارجي.

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

راجع مشاركة جويل حول قانون التجريدات المتسربة

JoelOnsoftware

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

أما بالنسبة لإخفاء المعلومات، فأنا أتفق مع التشويش.

يتيح لك التجريد التعامل مع العملية المعقدة كعملية بسيطة.على سبيل المثال، يتعامل تجريد "الملف" القياسي مع الملفات على أنها مصفوفة متجاورة من البايتات.لا يتعين على المستخدم/المطور حتى التفكير في مشكلات المجموعات والتجزئة.(يظهر التجريد عادةً كفئات أو إجراءات فرعية.)

يهدف إخفاء المعلومات إلى حماية تجريداتك من المستخدمين الضارين/غير الأكفاء.ومن خلال تقييد التحكم في بعض الحالات (تخصيصات محرك الأقراص الثابتة، على سبيل المثال) للمطور الأصلي، تصبح كميات هائلة من الأخطاء في معالجة الأخطاء زائدة عن الحاجة.إذا لم يتمكن أي شخص آخر إلى جانب برنامج تشغيل نظام الملفات من الكتابة على القرص الصلب، فإن برنامج تشغيل نظام الملفات يعرف بالضبط ما تمت كتابته على القرص الصلب وأين.(المظهر المعتاد لهذا المفهوم هو private و protected الكلمات الرئيسية بلغات OO.)

لتجريد شيء ما نحتاج إلى إخفاء التفاصيل أو إخفاء تفاصيل شيء نحتاج إلى تجريده.ولكن يمكن تحقيق كلاهما عن طريق التغليف.

لذا، إخفاء المعلومات هدف، والتجريد عملية، والتغليف تقنية.

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

مجرد إضافة المزيد من التفاصيل حولها إخفاء المعلومات, ، وجد هذا الرابط هو مصدر جيد حقا مع الأمثلة

إخفاء المعلومات هي فكرة وجوب إخفاء قرار التصميم عن بقية النظام لمنع الاقتران غير المقصود.إخفاء المعلومات هو مبدأ التصميم. إخفاء المعلومات ينبغي إبلاغ الطريق لك تغليف أشياء، ولكن بالطبع ليس من الضروري أن تفعل ذلك.

التغليف هي ميزة لغة البرمجة.

أنا أيضًا كنت في حيرة من أمري بشأن مفهومي التجريد والتغليف.ولكن عندما رأيت مقالة مجردة على موقع myjavatrainer.com، أصبح من الواضح لي أن التجريد والتغليف هما التفاح والبرتقال، ولا يمكنك مقارنتهما حقًا لأن كلاهما مطلوب.

التغليف هو كيفية إنشاء الكائن، والتجريد هو كيفية رؤية الكائن في العالم الخارجي.

بعد قراءة جميع الإجابات المذكورة أعلاه واحدًا تلو الآخر، لا أستطيع منع نفسي من نشر ذلك

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

التغليف واضح تمامًا من الأعلى ولكن ->

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

مرجع ويكي

التغليف: البيانات الملزمة والأساليب التي تعمل عليها.وهذا يسمح بإخفاء البيانات من جميع الطرق الأخرى في الفئات الأخرى.مثال: MyList الفئة التي يمكن أن تضيف عنصرًا ، وإزالة عنصر ، وإزالة جميع العناصر الطرق add, remove, ، و removeAll التصرف في القائمة (مصفوفة خاصة) التي لا يمكن الوصول إليها مباشرة من الخارج.

التجريد: يخفي السلوك والبيانات غير ذات الصلة.إن كيفية تخزين العناصر أو إضافتها أو حذفها مخفية (مجردة).قد يتم الاحتفاظ ببياناتي في مصفوفة بسيطة، مثل ArrayList وLinkedList وما إلى ذلك.كما أن كيفية تنفيذ الأساليب تكون مخفية من الخارج.

التغليف - فرض الوصول إلى البيانات الداخلية بطريقة خاضعة للرقابة أو منع الأعضاء من الوصول إليها مباشرة.

التجريد - يُعرف إخفاء تفاصيل تنفيذ طرق معينة بالتجريد

دعونا نفهم بمساعدة مثال:-

class Rectangle
{
private int length;
private int breadth;// see the word private that means they cant be accesed from 
outside world.
 //now to make them accessed indirectly define getters and setters methods
void setLength(int length)
{  
// we are adding this condition to prevent users to make any irrelevent changes 
  that is why we have made length private so that they should be set according to 
   certain restrictions
if(length!=0)
{
 this.length=length
 }
void getLength()
{
 return length;
 }
 // same do for breadth
}

الآن بالنسبة للتجريد ، تحدد طريقة لا يمكن الوصول إليها إلا ولا يعرف المستخدم ما هو جسم الطريقة وكيف يعمل ، دعنا ننظر في المثال أعلاه ، يمكننا تحديد منطقة الطريقة التي تحسب مساحة المستطيل.

 public int area()
 {
  return length*breadth;
 }

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

تجدر الإشارة إلى أن هذه المصطلحات لها تعريفات موحدة لـ IEEE، والتي يمكن البحث فيها https://pascal.computer.org/.

التجريد

  1. عرض كائن يركز على المعلومات ذات الصلة لغرض معين ويتجاهل بقية المعلومات
  2. عملية صياغة وجهة النظر
  3. عملية قمع التفاصيل غير ذات الصلة لإنشاء نموذج مبسط، أو نتيجة تلك العملية

إخفاء المعلومات

  1. تقنية تطوير البرمجيات التي تكشف فيها واجهات كل وحدة أقل قدر ممكن عن الأعمال الداخلية للوحدة ويتم منع الوحدات الأخرى من استخدام معلومات حول الوحدة غير الموجودة في مواصفات واجهة الوحدة
  2. احتواء قرار التصميم أو التنفيذ في وحدة واحدة بحيث يكون القرار مخفيًا عن الوحدات الأخرى

التغليف

  1. تقنية تطوير البرمجيات التي تتكون من عزل وظيفة النظام أو مجموعة من البيانات والعمليات على تلك البيانات داخل وحدة نمطية وتوفير مواصفات دقيقة للوحدة
  2. مفهوم أن الوصول إلى أسماء ومعاني وقيم مسؤوليات الطبقة منفصل تمامًا عن الوصول إلى تحقيقها
  3. فكرة أن الوحدة لها مظهر خارجي مختلف عن الداخل، وأن لها واجهة خارجية وتنفيذًا داخليًا
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top