وضحنا في الجزء الأول التمهيدي اهمية الـ OOP و كيف ان الـ OOP تستطيع ان توفر لنا إستخداما ارقى و أفضل و أكثر إحترافية لمشروعنا البرمجي عامة، و لشفرة برمجية خاصة، و كيف ان للـ OOP ان تساعدنا كذلك على تحديث مشروعنا و تطويره دون العبث به من أول سطر الى اخره، و لا ننسى أيضا الحماية و هيكلة البيانات و إدارتها و معالجتها كذلك .
سنتحدث في الجزء الثاني عن اساس البرمجة كائنية التوجه وهو الكلاس Class، هذا الأخير هو نقطة بداية الـ OOP و هو ما يوفر لنا أولى الخطوات نحو عالم البرمجة كائنية التوجه، فدعونا نتعرف عليه أكثر، و ما الغرض منه و الهدف الذي يخدم من خلاله عالم الـ OOP، و كذلك كيفية صناعة كلاس بشكل صحيح .
ما هو الـ Class ؟
سأشرح لك الكلاس بأسهل الطرق، فنحن كما اشرنا لا نريد الولوج للتعقيدات الآن، نريد لطفل في السابعة من عمره ان يفهم الكلاس صديقي، أريدك ان تأخذ ثواني من وقتك، و ترفع رأسك قليلا و توسع مدار رُؤيتك المحِيطية، ستجد انك محاط بالعديد من " الأشياء "، على سبيل المثال في مكاني، فيوجد حاسوب أمامي، يوجد أيضا تلفاز، كذلك هاتف على سطح مكتبي، لربما أنت أيضا ترى أشياء من حولك، هذه الأشياء يمكننا تسميتها في الوقت الراهن بالـ Object .
هذا الشيئ ( و لنأخذ مثالا للحاسوب الذي أمامي ) فهو يتكون من عدة أشياء، و ليس شيئ واحد، كما يوجد عدة أنواع منه و ليس نوع واحد، فهو مثلا يتكون من لوحة أم (Motherboard)، يتكون كذلك من مساحة عشوائية (RAM)، يتكون ايضا من قرص صلب (Hard Drive) ، أيضا لحاسوبي شركة مصنعة في هذه الحالة Acer، و سأتوقف هنا حتى لا نعقد الأمر أكثر .
ليس هذا فقط، بل الشيئ الذي انا بصدد تحليله و هو الحاسوب، يستطيع فعل العديد من الأشياء، يستطيع ان يشتغل، ان ينطفئ، يستطيع كذلك تشغيل فلم، يستطيع تشغيل نظام، و غيرها ...
ان مكونات الحاسوب في البرمجة كائنية التوجه يمكننا تصنيفها على أساس خصائص / Properties / Fields، قد تختلف التسمية أحيانا، لكن مبدأها واحد، اما الأشياء التي يقوم بها الحاسوب ( اي الشيئ الخاص بنا Object ) مثل الإشتغال و غيرها تسمى بالحركات / Actions / الأفعال .
ملاحظة مهمة : لا يوجد أي علاقة بين الكلاس في الـ OOP، و بين خاصية class في لغة التنسيق HTML .
كيفية إنشاء كلاس ؟
لا تختلف طريقة إنشاء الكلاس من لغة برمجة الى اخرى الا قليلا، لكن المبدأ تابث، هذا مثال لكلاس بإستخدام لغة البرمجة الجافا :
لا تركز كثيرا بما جاء في الكلاس فسنشرح بشكل أكثر تفصيلا مستقبلا، لكن دعونا نراجع كل سطر على حدة :
1 - السطر الأول يحمل 3 كلمات، الأولى public و هو نمط من الوصول، يوجد 3 أنواع سنراجع ذلك في احد اجزاء هذه المقالات لا تقلق، اما الكلمة الثانية فهي تحمل إسم Class، و هذا يعني ان ما بصدد صناعته حاليا هو Class و ليس شيئ اخر، منطقيا في الجافا، فكل برنامج او كود برمجي يتم كتابته داخل كلاس في الأصل، يوجد لغات برمجية لا تتضمن ذلك، اما العنصر الثالث فهو إسم الكلاس الخاص بي، و هو Computer، بإستخدامك للعبارات الثلاث و فتح Brackets تجمع الكلاس كاملة، ستكون بذلك قد إستطعت إنشاء كلاس خاصة ب Computer، تغييرك لعبارة Computer يعني بدأ صناعتك لكلاس من نمط اخر، مثلا public class Car، اي كلاس خاصة بالسيارات .
- توظيف الخصائص و الأفعال في الكلاس :
بإتباع ما جاء سابقا، فقد أنشأت عمليا شيئا إسمه كلاس مخصص للحاسوب، لكن هذا الكلاس فارغ، الحاسوب مجرد بياض و فراغ لا يمكننا التعامل معه، و كما جازء الذكر، فإن الكلاس بمثابة Sheet او صفحة وصف، صفحة الوصف هذه تقوم بتخزين شيئين أساسيين و هما الخصائص و الأفعال الخاصة بذلك الشيئ ( اي الحاسوب ) .
من أجل توظيف كليهما داخل الكلاس، نبدأ بالخصائص، على كل خاصية ان تتضمن 3 أشياء ضرورية، أولا نمط الوصول، في الغالب تكون private لكن في مثالنا جعلتها Public و ذلك لأننا نريد ان نشرح هذه الأنماط لاحقا و لا نريد لخبطة الجميع بماهيتها، ثم العنصر الثاني وهو نوعه، و هذا إعتدنا عليه في جميع لغات البرمجة تقريبا، فمن أجل صناعة متغير نقوم بتحديد نوعه (int , float , double ...)، ثم أخيرا اسمه او الى ما يرمز، في حالتنا يوجد الـ id او رقم الحاسوب، ثم نوع بطاقة الرام ثم اللوحة الام و ما الى ذلك، تتغير هذه الخصائص حسب نوع " الشيئ " فإن كانت سيارة سيكون هناك خصائص أخرى مثل عدد العجلات، نوع المحرك، عدد الأبواب و غيرها .
الأفعال ليست كما الخصائص، فطريقة توظيف الأفعال تتم عبر الـ functions، نبدأ دائما بأنماط الوصول، التي تقريبا سنحتاجها في كل مرة نود صناعة كلاس، خصائص او افعال، ثم بعدها إسم الـ function او الـ Action، في المثال قمنا بصناعة أكشن من نوع TurnOn يمكن إستدعائه حين نقوم بتشغيل الجهاز على سبيل المثال، و بما انه Function و ما تعلمناه في الـ functions انه يتم ادراج قوسين في اخرها، ثم بعدها brackets، يمكننا وضع وسط الـ Brackets او عملية او سيرورة عمليات (Process) نريد، مثلا ان يطبع شيئا في الشاشة كما المثال، او ان يقوم بجمع اعداد او اي شيئ، يجوز بالذكر انه يمكن تمرير متغيرات او بيانات في الـ functions وسط القوسين بالتأكيد كما الحال بالنسبة لجميع الـ functions التي نعرفها .
- ملخص الجزء الثاني - الكلاس :
إذن ما علينا ان نعرفه في هذا الجزء، هو طريقة إنشاء و صناعة كلاس، الطريقة بسيطة، و الكلاس كما ادركنا هي بداية الـ OOP و بداية البرمجة كائنية التوجه، قد تختلف الطريقة من لغة برمجة الى لغة أخرى لكن الأساس واحد .
الكلاس تتكون من عنصرين أساسيين و هما الخصائص و الأفعال، بحث ان الخصائص يتم صناعتها بنفس طريقة صناعة المتغيرات، بينما الأكشن او الأفعال يتم صناعتها بنفس طريقة صناعة الـ functions .
في الجزء الثالث سنعالج معك مفاهيم الـ Access Modifiers التي إستخدمنا بعضها اليوم ( public ) و سنعالج كل واحدة منها على حدة و تقديم أمثلة حية لها .
أسلوب واضح ومفهوم
والله إنك رهيب ❤ شكرا كتير
ماأحبه صراحة هو استعمالكم للغة الإنجليزية في بعض المفاهيم التقانية