public وprivate

أتذكر عندما قلت في الفصل 1 أنني سأشرح سبب وجود كلمة public قبل العملية main؟ أخيراً، آن الأوان لذلك.
تعني كلمة public إمكانية استدعاء العملية من الأصناف الأخرى. الكلمة البديلة لهذه هي private، التي تعني أن استدعاء العملية ممكن فقط داخل الصنف الذي عرّفت فيه.
يمكن أن تكون متغيرات الحالة عامة (public) أو خاصة (private) أيضاً: متغير الحالة الخاص لا يمكن الوصول إليه إلا داخل الصنف الذي عرّف فيه.
السبب الرئيسي لجعل العمليات ومتغيرات الحالة خاصة هو الحد من التعاملات بين الأصناف المختلفة في سبيل التحكم بالتعقيد.
مثلاً، يبقي صنف Location متغيرات حالاته خاصة. لديه عمليات وصول (accessor methods) مثل getRow وgetCol، لكنه لا يوفر أية عمليات للتعديل على متغيرات حالاته (his instance variables). بالتالي، كائنات Location غير قابلة للتحوير، أي أننا نستطيع مشاركتها بدون أن نقلق بخصوص أشياء غير متوقعة تنتج عن تعدد الأسماء (aliasing).
إن تخصيص العمليات يساعد على تبسيط واجهة برمجة التطبيقات API. غالباً ما تتضمن الأصناف عمليات مساعِدة تُستخدَم لتنفيذ عمليات أخرى، لكن جعل هذه الأخيرة جزءاً من الAPI سيكون غير ضروري ومسبباً للأخطاء.
العمليات ومتغيرات الحالة الخاصة هما ميزتان لغويتان تساعد المبرمجين على ضمان تغليف البيانات
(data encapsulation)، الذي يعني عزل الكائنات الموجودة في أحد الأصناف عن الأصناف الأخرى.

تمرين 16.2

أصبحت تعرف الآن ما يكفي لقراءة الجزء 3 من دليل الطالب لبرنامج gridworld وحل التمرينات الموجودة فيه.


lk ;jhf ;dt jt;v ;uhgl ;lfd,jv gyi [hth hgsh]s uav GridWorld: hg[.x hgehge : public ,private hgehge hg[.x hgsh]s jt;v gridworld [hth public uav ,private ;lfd,jv ;jhf ;dt