رمز فتح مرحلة هذا الدرس في تطبيق طورني : RSJ
تَعلُمُ البرمجةِ للمبتدئينَ كلياً بواسطةِ #C – التغليف Encapsulation
ما معنى Encapsulation ؟ و كيف يمكننا حماية اسطر برمجية معينة من التحكم بها و من القراءة بها ؟ ما هي درجات كلمات private و public ؟
تكلمنا سابقاً عن البرمجة كائنية التوجه أن لها ميزات و خصائص معينة و من ضمنها التغليف Encapsulation ، مفهوم Encapsulation ببساطة هو حماية أجزاء معينة من الكود من الوصول إليها من قبل المبرمجين أو الزبائن ، لنعطي مثالاً واقعيا بسيطاً بحيث نوضح موضوع Encapsulation ، تخيل أنك تجلس أمام التلفاز و بيدك جهاز التحكم ، بإمكانك ببساطة الضغط على أحد الازرار ليحدث شيء معين (رفع الصوت ، تغيير القناة ، تغيير الإضاءة ) ، هذه الامور تقسم إلى قسمين :
– القسم الأول هو شيء public و هو متاح لك ، و هو الازرار الموجودة على جهاز التحكم
– القسم الثاني هو private و هو كيفية عمل الأزرار ، عندما نضغط على زر يحدث أمر معين ، نحن لا ندري ما الذي حدث ، فهو قسم مخفي يستخدمه الصانعين
إذا لدينا قسمين ، قسم متاح ، و قسم غير متاح ، نأخذ الآن كود سريع لنوضح الفكرة . نقوم بتعريف كلاس جديد باسم something و نعرف داخله دالتين :
Public void DoSomething() { } Private void HelperMethod() { }
في الدالة الـ private سنقوم بطلب طباعة Hello world! ، و في الدالة الـ public سوف نقوم باستدعاء الدالة الـ private
الآن لدي في التطبيق الخاص بي عندما أقوم بتعريف متغير أو object من النوع something
Something s1 = new Something();
لاحظوا إذا كتبت s1 و قمت بالضغط على dot سيعطيني الدالة التي اسمها DoSomething و ليس لدي إمكانية التعامل مع الدالة HelperMethod لأن هذ شيء خاص و داخلي لا يمكنني الوصول إليه، الآن لو تابعنا
S1.DoSomething();
Condole.ReadLine();
و حاولنا تشغيل التطبيق سنلاحظ أنه سيقوم بطباعة الجملة الموجودة في HelperMethod
إستخدام التغليف لتطوير التطبيق
من الممكن أن نرغب بمعرفة عدد ضغطات المستخدم أو معرفة ما قام الزبون باستدعائه ، هنا سنقوم بتعريف متغير من النوع int باسم clickCount ، و نقوم بجعلها في الدالة private
clickCount ++;
لتعتبر الزيادة ، مثلاً عندما يقوم بعمل شيء معين أو يستدعي أداة معينة يزداد هذا العداد بدون معرفة الزبون ، فهو أمر غير مهم بالنسبة له ، كل ما يهتم به هو النتيجة النهائية ، أما أنا كمطور قد يهمني معرفة هذه الأمور و ربما أرغب بعمل تحليل للبرنامج الخاص بي
هناك أنواع أخرى غير public و private و هي protected و internal ، و هما متقدمين على هذه الدورة ، و بإمكانك البحث عنهما بشكل موسع
هذا كان بشكل سريع شرح لدرس اليوم encapsulation و نلقاكم في درس قادم إن شاء الله
الأسطر البرمجية التي قمنا بتنفيذها في هذا الدرس
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PrivatePublic { class Program { private static string k = ""; static void Main(string[] args) { Something s1 = new Something(); s1.DoSomething(); Console.ReadLine(); } } class Something { static int clickCount; public void DoSomething() { HelperMethod(); } private void HelperMethod() { Console.WriteLine("Hello World!"); } } }