سؤال

ما هو أفضل وسيلة لوضع الطبقة الحاوية أو بعض فئة أخرى داخل فئة أنها خاصة أو أحد أفراد الجمهور؟

والمتطلبات:

و1.Vector داخل صفي

واجهة

وهناك حاجة 2.Add وعدد من ناقلات

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

المحلول

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

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

نصائح أخرى

وسواء أعلن عضو خاص أو يعتمد ملفه تماما على التطبيق الخاص بك. هل يمكن أن تعطي المزيد من التفاصيل؟

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

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

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

وثمة بديل قابل للتطبيق لكشف عضو vector هو خلق وظيفة الزائر (أو مكرر الداخلي). وبهذه الطريقة يمكنك اطاعة القانون ديميتر أفضل:

class ContWrapper {
    std::vector<int> _ints;
public:
    class Action {
    public: 
        virtual void accept( int i ) = 0;
    };
    void each_int( Action& a );
};

ويمكن أيضا حذرا جدا عند التصدير على سبيل المثال وstd::vector<T> من مكتبة، أيضا: رمز العميل قد لا تستخدم تنفيذ STL نفسه كما فعلت، وبالتالي فإن تخطيط هذه المتغيرات عضو قد تختلف

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

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

وإذا كان هذا هو الجديد الجديد لديك للقراءة من: HTTP: // en.wikipedia.org/wiki/Encapsulation_(classes_-_computers)

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

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

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