مستخدم:Wafaa Alsharif/ملعب

من ويكيبيديا، الموسوعة الحرة

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

في لغات البرمجة، يتم استخدام التغليف للإشارة إلى واحد من اثنين من المفاهيم ذات الصلة ولكنها متمايزة، وأحيانا إلى الجمع [1] [2] منها:

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

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

محتويات

المعلومات تختبئ آليا[عدل]

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

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

تقريبا دائما، هناك طريقة لتجاوز هذه الحماية - عادة عن طريق API تفكير (روبي، جافا، C #، الخ)، وأحيانا عن طريق آلية مثل اسم تغيير اسم (بايثون)، أو استخدام الكلمة خاص مثل صديق في C ++.

أهمية تاريخية[عدل]

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

تعريف عام[عدل]

بشكل عام، التغليف هي واحدة من الأسس الأربعة OOP (البرمجة الشيئية). يشير التغليف لتجميع البيانات مع الأساليب التي تعمل على تلك البيانات. ويستخدم [7] تغليف لإخفاء القيم أو حالة كائن البيانات المهيكلة داخل فئة، ومنع الوصول المباشر لهم الأطراف غير مصرح بها ". علنا وتقدم عموما طرق الوصول إليها في فئة (ما يسمى حاصل على واضعة) للوصول إلى القيم، والطبقات الأخرى المتعاملة معها وتدعو هذه الأساليب لاسترجاع وتعديل القيم داخل الكائن.

هذه الآلية ليست فريدة من نوعها في البرمجة الشيئية. تطبيقات أنواع البيانات المجردة، على سبيل المثال وحدات، وتقديم نموذج مماثل من التغليف. وينبع هذا التشابه من حقيقة أن كلا من المفاهيم تعتمد على نفس قاعدة مبدأ رياضي من نوع وجوديا. [8]

الوصلات الخارجية[عدل]

SOA Patterns.org

المراجع[عدل]

  1. ^ Michael Lee Scott, Programming language pragmatics, Edition 2, Morgan Kaufmann, 2006, ISBN 0-12-633951-1, p. 481: "Encapsulation mechanisms enable the programmer to group data and the subroutines that operate on them together in one place, and to hide irrelevant details from the users of an abstraction."
  2. ^ Nell B. Dale, Chip Weems, Programming and problem solving with Java, Edition 2, Jones & Bartlett Publishers, 2007, ISBN 0-7637-3402-0, p. 396
  3. ^ John C. Mitchell, Concepts in programming languages, Cambridge University Press, 2003, ISBN 0-521-78098-5, p.522
  4. ^ Pierce, Benjamin (2002). Types and Programming Languages. MIT Press. ISBN 0-262-16209-1. p. 266
  5. ^ Wm. Paul Rogers, Encapsulation is not information hiding, JavaWorld.com, 05/18/01
  6. ^ Thomas M. Connolly, Carolyn E. Begg, Database systems: a practical approach to design, implementation, and management, Edition 4, Pearson Education, 2005, ISBN 0-321-21025-5, Chapter 25, "Introduction to Object DMBS", section "Object-oriented concepts", p. 814
  7. ^ Rodgers, Wm. Paul. "Encapsulation is not information hiding". JavaWorld. Retrieved 2014-03-15.
  8. ^ Pierce (2002), Section 24.2 "Data Abstraction with Existentials"