سؤال

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

هل يمكنك أن تريني بعض بقوة أمثلة مقنعة فوائد التغليف من خلال المعلومات يختبئ ؟

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

المحلول

المثال المذكور في أول OO الدرجة:

تخيل لاعب وسائل الاعلام.ذلك الملخصات مفاهيم اللعب ، والتوقف السريع, إعادة توجيه المكالمات, الخ.كمستخدم يمكنك استخدام هذا لتشغيل الجهاز.

VCR تنفيذ هذه الواجهة ، اختبأ أو مغلفة تفاصيل الميكانيكية محركات الأقراص و الأشرطة.

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

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

نصائح أخرى

على *nix مجردة من حرف تيارات (ملفات القرص, الأنابيب, مأخذ, ttys ، إلخ.) في كيان واحد ("كل شيء هو ملف") نموذج يسمح مجموعة واسعة من الأدوات التي يمكن تطبيقها على مجموعة واسعة من مصادر البيانات / المصارف في الطريقة التي ببساطة لن يكون ممكنا من دون تغليف.

وبالمثل ، فإن مفهوم تيارات في مختلف اللغات ، التلخيص على قوائم, صفائف, ملفات, الخ.

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

أنا أعلم أن هناك بالفعل قبول الجواب ، ولكن أردت أن رمي أكثر واحد هناك:برنامج OpenGL/DirectX

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

بطاقة البائعين هي تلك التي توفر تنفيذ (سائق) عن بطاقة معينة ، والتي في كثير من الحالات هو غاية معينة من الأجهزة, ولكن كما يحتاج المستخدم يهمني أبدا أن واحدا المستخدم هو تشغيل GeForce ABC وغيرها Radeon XYZ لأن التنفيذ الدقيق مخفيا بعيدا وراء ارتفاع مستوى API.لم يكن, سوف تحتاج إلى أن يكون مسار رمز في ألعاب لكل بطاقة في السوق التي أردت أن الدعم الذي من شأنه أن يكون لا يمكن السيطرة عليها تماما من يوم 1.آخر زائد كبيرة لهذا النهج هو أن Nvidia/ATI يمكن الإفراج عن أحدث وأكثر كفاءة إصدار برامج التشغيل الخاصة بهم و الاستفادة تلقائيا مع أي جهد على الجزء الخاص بك.

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

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

تقريبا كل Java, C#, C++ رمز قاعدة في العالم إخفاء المعلومات:انها بسيطة مثل القطاع الخاص:أقسام الطبقات.

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

ماذا ؟ كنت غير مقتنع حتى الآن ؟

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

أيضا, لا يمكنك حقا مجردة شيئا إن كل قطعة من التعليمات البرمجية في العالم من الممكن أن يعتمد على تنفيذ محددة فئات محددة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top