التخطي إلى المحتوى
الدرس الاول – Object-Oriented PHP
 Object-Oriented PHP

هذه بداية لكورس البرمجة الموجهة في الــPHP  على أكاديمية مايندز حيث تجد ما يناسب العقول والأفهام…!! نبدأ على بركة الله بسم الله.

سنهتم في هذا الكورس إن شاء الله بتغطية المواضع أو النقاط التالية بإذن الله
  • The Benefits of OOP  هذه سنأخذها اليوم
    • Encapsulation
    • Inheritance
    • Polymorphism
  • Key OOP Concept
    • Classes
    • Objects
    • Properties
    • Declaring Properties
    • Invoking Properties
    • Property Scopes
    • Property Overloading         
    • Setting Properties with the __set() Method
    • Getting Properties with the __get() Method
    • Creating Custom Getters and Setters
    • Constants
    • Methods
    • Invoking Methods
    • Method Scope
    • Type Hinting
  • Constructors and Destructors
    • Constructors
    • Invoking Parent Constructors
    • Invoking Unrelated Constructors
    • Destructors
  • Static Class Member
  • The instance of Keyword
  • Helper Functions
  • Auto Loading Objects
 بدأت الــ PHP  بدون تطبيق مفاهيم OOPلكن خلال تطويرها تم بذل جهود مقدرة لإلحاق هذه الخاصية وبالفعل تم إضافة جزئية مقدرة من خصائص الــ OOP الموجودة في اللغات الأخرى وقبل أن ندخل إلى هذا الموضوع نتحدث عن مميزات الــ OOP.
The Benefits of OOPفوائد  الــ
لنفهم معنى البرمجة الموجه للأشياء نتحدث عن مثال في نمذجة كيان ما فبدلا من المعاملة الفورية نتعامل مع نموذج من الشيء فبدلا من أن نوظف موظف استقبال نوظف حاسوب بمواصفات محددة تخدم الشيء ( والذي يمثل ضيف أو عميل مثلا ) يقوم المبرمج بإعطاء النموذج لهذا الحاسوب والذي يحوي أحداث وصفات محددة للعميل وهي التي تهمنا ويهمل البقية
§        الاسم
§        العنوان
§        الموضوع الذي قدم من أجله هذا الضيف أو العميل
§        رقم العميل والذي يعطيه الحاسب افتراضيا
هذه خصائص لهذا العميل وألان هنالك أعمال أو أحداث نتوقعها من هذا الرجل وهي الانتظار أو حجز موعد مثلا وغيرها من الأحداث فيمكن عمل ذلك مع النموذج بحيث نخير العميل بين الإجراءات أو نسيرها حسب ترتيب محدد والأمر في النهاية يرجع لصاحب المكان ( المستقبل أو المضيف ).
هذا بالضبط ما تمكننا البرمجة الموجه من العمل عليه فبدلا من التركيز على معاملة هذا الضيف في الاستقبال أصبح على القادم أن يتعامل هو مع النظام وإعفاء المضيف من التجاوزات والمحاباة وغيرها
ولذلك أصبح يمكننا القول انه مع ظهور الــ OOP تغيرت إستراتجية التطوير فبدلا من تركيز الجهود على منطق وخطوات البرنامج أصبح التركيز على البيانات التي تخدم التطبيق أو البرنامج بحيث أصبح من الممكن تحويل الكائنات (حية أو غير حية) إلى برنامج وذلك الأمر تجده في البرامج التي تحاكي أنماط الكائنات.
سنتطرق لثلاثة مفاهيم وهي أساسية لتكوين نماذج ( classes – models ) قوية :
1-    encapsulation
2-    inheritance
3-    polymorphism
التغليف ( التحزيم ) Encapsulation:
          قبل التعريف لهذا المفهوم نأخذ مثال؛ الراديو مثلا نسبة ضئيلة جدا من الناس تعرف السبب الحقيقي لتغير المحطة عند تحويل مفتاح ضبط التردد في الراديو ولكن هذا لا يمنع احد من الناس من سماع الراديو أيضا الحاسوب كثير من المستخدمين بل ومن المبرمجين لا يعلمون كيف يعمل الحاسوب لكن لم هذا لم يمنع من استخداما الحاسوب بالطريقة المناسبة وذلك يرجع إلى ما يسمى الواجهة ( INTERFACE ) والمهم فيها هو انك لا تدري بما يحدث خلف تلك الواجهة ولكن المهم انك تتلقى الخدمات المطلوبة كما تريد ( معرفة ما يجري في الكواليس ليس بمهم بقدر العرض نفسه ) هذا بالضبط مفهوم التغليف .
                                                    
          وهو عملية حجب المستخدم من العمليات الداخلية للتطبيق عبر واجهة مناسبة.
The practice of separating the user from the true inner workings of an application through well-known interfaces is known as encapsulation.
البرمجة الموجهة للأشياء تتبنى نفس المنهجية في إخفاء تفاصيل البرامج بتوفير الواجهة المناسبة والتي تخدم التطبيق بتوفير وصول كامل لكل المكونات سواء كانت خصائص أو عمليات.
          هذا الأمر أخرجنا من التورط في التفاصيل الدقيقة بالإضافة وذلك بسبب إمكانية إعادة استخدام الكود في مناطق أو برامج أخرى ليس ذلك فقط بل إن المطور يستطيع تجميع مكونات الكود مثل ألعاب التجميع بدلا من عمليات الربط الثقيلة بين الأكواد العادية. الآن هذه المكونات نسميها OBJECTS وهي مكونة من قالب محدد يسمى CLASSيحدد نوع البيانات التي يتعامل معها الــ Object  و سلوك أو الأحداث التي ينفذها الــ Object.
          وفر هذا الأمر إمكانية تغيير التطبيق بدون التأثير على المعاملات التي يتلقاها المستخدم خلال الواجهة. بالإضافة لتقليل الأخطاء التي يقع فيها المستخدم (المستخدم هنا غالبا ما يكون كود برمجي لأنه هو الذي يستخدم الــ CLASSESويمكن اعتبار المبرمج مستخدم أيضا لأنه ينظر للكائن من وجه نظر الكود الذي يستخدم الكائن (يحتاج الأمر لبعض الخيال J)) لأن الواجهة ابسط بكثير مما يكون خلفها من الأكواد.
الوراثة Inheritance:
          يتعلق الأمر هنا بالمشابهة الجزئية ( هل يمكن أن تكون مشابهة كاملة؟ ) في الصفات؛ يعني الاشتراك في الخصائص والسلوك أو التصرف من قبل شيء ما . نعط مثال قبل التعريف: (روح جيب القهوة والله انأ جاد)
          الموظفون هو كائن يندرج تحته الكثير من الكيانات أو الأشياء التي تسمى بموظف ( محاسب – مهندس – نادل  ) كما يمكن أن تكون هنالك مناطق أخرى بين الموظفين والموظف الذي ينتمي لهذا الكيان ( دوام جزئي – دوام كامل – دوام ليلي – نهري وغيرها الكثير من الأبعاد ) لكن في النهاية هم موظفين فهم مشتركون في أنهم موظفين (اسم عام) لهم ( رقم – اسم – مرتب – طريقة الدفع ) ويشتركون مثلا في النشاطات( تسجيل حضور – تسجل انصراف – راحة للطعام ) طيب يمكن أن يكون الكائن الأب ( موظفون ) وهذا يحتوي على هذه الصفات المشتركة وأيضا لتوفير التباين المطلوب في شركة مثلا في المعاملات ( المادية والمعنوية ) بين الموظفين نوفر كائنات أخرى (مدير – محاسب – غفير وغيرهم ) وريثة للأب تأخذ كل الصفات أعلاه لكن يتفرد كل منها بشيء غير موجود في الآخرين وقد تتفق في الخصائص وتختلف في التصرفات والتي تمثل الدوال والعكس. طبعا وفر ميزة وهي إعادة استخدام النماذج المتشابهة في الخصائص في أماكن غير التي صممت لها.
          طيب يمكن أن نقول أن الوراثة في البرمجة الموجهة هي عملية اخذ كائنات أو أشياء ( محاسب – مبرمج – بواب )  اسم لشيء أخر ( موظف ) بالإضافة لخواص وسلوكيات هذا الكائن ( المشتركة (الاشتراك يكون بين الوارث والمورث (مبرمج يشابه موظف في الخصائص والتصرفات أو السلوك))).
Inheritance In object-oriented terms, these various employee types inherit the general employee definition, including all of the characteristics and behaviors that contribute to this definition.
تعدد الأشكال Polymorphism:
          كلمة إغريقية وتعني “ having multiple forms” ويتضح معنى الخاصية قبل تعريفها بالمثال التالي:
في النقطة السابقة قرأت أن الموظف يسجل دخول. لكن كيف؟ الإجابة يختلف حسب المؤسسة وحسب طبيعة العمل هنالك أسلوب الطابعة الزمنية ( مثل الطابعة البريدية يفترض أن نقول المطبوعة الزمنية ) طيب Time stampوهي تقيد الزمن الذي تم فيه الدخول في لحظتها مستخدم بكثرة في بطاقات الموظف يعرض الموظف البطاقة على جهاز محدد فيأخذ بيانات الموظف والزمن.
هنالك أسلوب آخر مثلا بدخول جهازك على شبكة العمل أو بالورقة والقلم وغيرها هذا التعدد في الأساليب  ولد لنا اختلافين في العملية ( اختلاف في عمل الدالة وثبوت البراميترات التي تدخل للنظام أو الكلاس + اختلاف في عدد البراميترات التي تدخل للنظام )
قد تستخدم شركتين نفس النظام لكن إحداهما تأخذ بيانات أكثر عند التسجيل + قد تأخذ نفس البيانات عند التسجيل لكن تختلف عملية التسجيل نفسها في الشركتين وهذا هو المقصد من تعدد الأشكال.
وبذلك يكمن أن نعرف هذه الخاصية بإمكانية إعادة تعريف الخصائص والسلوكيات للكلاس حسب الحالة والمتطلبات
Polymorphism, defines OOP’s ability to redefine, or morph, a class’scharacteristic or behavior depending upon the context inwhich it is used.
 
 
إلى هنا انتهى الدرس الاول من البرمجة الموجهة في PHPانتظرونا في السبت القادم  مع الدرس الثاني توضيح للمفاهيم السابقة عمليا،

عن الكاتب

التعليقات

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Shares