آخـــر الـــمـــشـــاركــــات

تحميل برنامج الغاء تثبيت البرامج من الكمبيوتر Should I Remove It » آخر مشاركة: اردني وافتخر دردشة وتعليله وسواليف.. » آخر مشاركة: عاشق الحصن بريد الاعضاء » آخر مشاركة: محمد العزام اهلا بكم ..رمضان كريم » آخر مشاركة: حسان القضاة شو عم تسمع هلا » آخر مشاركة: حسان القضاة ما هو سبب تواجدك في المنتدى والى اي حدّ يستمر او ينتهي إنتسابك له ؟ » آخر مشاركة: قلعتي أبدية مرحبا » آخر مشاركة: محمد العزام " أميــــرةُ قـوسِ النَّصـــــر" » آخر مشاركة: قلعتي أبدية ~ إبريـــــــــــــــــل ~ » آخر مشاركة: حسان القضاة اسئلة مهمة بالفوتوشوب في المطابع 2019 » آخر مشاركة: المصمم يزن جبريل صاحب المركز الاول فى مجال تنزيل الملفات كامل مدي الحياة IDM 6.32 » آخر مشاركة: siiin همسات وأشوق » آخر مشاركة: حسان القضاة ""أيلـول""... » آخر مشاركة: قلعتي أبدية تبليغ عن رسالة زائر بواسطة راشد مرشد » آخر مشاركة: أميرة قوس النصر اشتقنالكم » آخر مشاركة: Mahmoud Zaben تُراهات ما قبل النوم ... » آخر مشاركة: قلعتي أبدية شو مزاجك اليوم... » آخر مشاركة: قلعتي أبدية قبول بلاغ عطل ثلاجات كلفينيتور 01092279973 & 0235700997 وكيل كلفينيتور (م .الجديدة) » آخر مشاركة: الوكيل1 قبول بلاغ عطل ثلاجات هوفر 01154008110 & 0235699066 وكيل هوفر (م.6اكتوبر) » آخر مشاركة: الوكيل1 قبول بلاغ عطل ثلاجات جنرال اليكتريك 01207619993 & 0235700997 وكيل جنرال اليكتريك (الز » آخر مشاركة: الوكيل1
+ الرد على الموضوع
النتائج 1 إلى 6 من 6

الموضوع: [دورة php - الدرس العشرون] - دالة بناء الصنف و مستويات الخصوصية

  1. #1
    عضو مؤسس الصورة الرمزية Sc®ipt
    تاريخ التسجيل
    Nov 2008
    الدولة
    There's no place like 127.0.0.1
    العمر
    36
    المشاركات
    4,003

    Q (14) [دورة php - الدرس العشرون] - دالة بناء الصنف و مستويات الخصوصية

    بسم الله الرحمن الرحيم



    السلام عليكم و رحمة الله و بركاته ,, تحدثنا في الدرس السابق عن الأصناف و الكائنات و كيفية انشائهم و التعامل معهم و كيفية التعامل مع الخواص و العمليات التابعة لنفس الصنف ,, و قد قمنا بكتابة صنف يقوم بالعمليات الحسابية الأربعة و قمنا بتطبيق ما سبق من الأفكار على هذا الصنف و بإمكانكم الإطلاع على الدرس الماضي و الدروس السابقة في الدورة عبر الفهرس التالي :




    و في درس اليوم بإذن الله سوف نتحدث عن موضوعين اساسيين في البرمجة الموجهة للكائنات و هي تعتبر صميم البرمجة الموجهة للكائنات و الموضوع الأول هو دالة بناء الصنف (constructor) و الموضوع الآخر و هو خصوصية الصنف و التحكم بمجال رؤية الصنف ,, و نبدأ على بركة الله ...

    دالة بناء الصنف Constructor

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

    كود PHP:
    <?php
        
    class Car {
            var 
    $car_color;
            var 
    $car_num;
            
            function 
    Car($name){
                echo 
    "car ".$name." running now<br/>";
            }
        }
        
        
    $obj1 = new Car("BMW");
        
        
    $obj2 = new Car("OPEL");
    ?>


    في البداية قمنا بإنشاء صنف اسميناه Car ثم قمنا بتعريف خاصيتين للصنف ثم كتبنا الدالة :

    كود PHP:
    function Car($name){
                echo 
    "car ".$name." running now<br/>";
            } 


    هذه الدالة تابعة للصنف و هي تستقبل مدخل واحد وهو name$ و داخل الدالة يتم طباعة المدخل الذي تم استقباله لكن ما هو الغريب في هذه الدالة ؟؟ ,, لاحظ يا عزيزي ان اسم الدالة هو Car اي بنفس اسم الصنف و هذه هي دالة البناء و يتم تنفيذها بمجرد انشاء كائن من الصنف Car كما سنلاحظ تاليا ,, اذا القاعدة في كتابة دالة البناء هي انها تكون بنفس اسم الصنف وهي حساسة لحالة الأحرف الصغيرة و الكبيرة ,, الآن لاحظ السطرين التاليين :

    كود PHP:
        $obj1 = new Car("BMW");
        
        
    $obj2 = new Car("OPEL"); 


    هنا قمنا بإنشاء كائنين من الصنف Car و كل كائن منهم اخذ قيمة كما عرفنا في دالة البناء و هنا عندما تنفذ هذا الكود سوف تلاحظ ان دالة البناء تقوم بتنفيذ نفسها تلقائيا بمجرد انشاء كائن من الصنف Car و ذلك بدون برمجة دالة طباعة قيم و انما دالة البناء هي التي تقوم بطباعة القيم بمجرد انشاء الكائن

    و ذكرنا ان دالة البناء تستخدم لإعطاء قيم اولية لخصائص الصنف , فمثلا لو اردنا كتابة صنف لإجراء عملية جمع و ايجاد المعدل لعلامات فإننا بالتأكيد بحاجة الى متغيرات داخل الصنف لتخزين قيمة المجموع و قيمة المعدل و يجب ان تكون قيمهم صفر لكي تكون النتائج صحيحة و نستطيع بتنفيذ هذه العملية من خلال دالة البناء لاحظ المثال التالي :
    كود PHP:
    <?php
        
    class calculateAvg {
            var 
    $sum;
            var 
    $avg;
            
            function 
    calculateAvg(){
                
    $this->sum 0;
                
    $this->avg 0;
            }
            
            function 
    getSum($m1,$m2,$m3){
                
    $this->sum $m1 $m2 $m3;
                return 
    $this->sum;
            }
            function 
    getAvg($s){
                
    $this->avg $s 3;
                return 
    $this->avg;
            }
        }
        
        
    $obj1 = new calculateAvg();
        
    $sumation $obj1->getSum(70,75,80);
        
    $av $obj1->getAvg($sumation);
        
        echo 
    "avg =".$av;
    ?>


    في داخل الصنف قمنا بتعريف المتغير sum$ و المتغير avg$ و هذه المتغيرات هي التي ستحمل قيمة مجموع العلامات و المعدل لذلك يجب ان تكون قيمتها الإبتدائية صفر ,, و ثم قمنا بكتابة دالة البناء و في داخلها كتبنا :

    كود PHP:
                $this->sum 0;
                
    $this->avg 0


    و هذا يعني اعطي القيمة صفر للخاصية sum$ و الخاصية avg$ التابعة لهذا الصنف و هذا الكلام يعني قم بتصفير القيم لهذه الخواص بمجرد انشاء كائن من هذا الصنف و باقي العمليات هي عمليات جمع للقيم و ارجاع للكائن و حساب المعدل و ارجاعه للكائن ثم طباعة الناتج ..



    الخصوصية و مجال الرؤية للأصناف visibility

    من العنوان يتضح لنا انه عبارة عن مبدأ من مبادئ البرمجة الموجهة للكائنات ,, فعلى سبيل المثال انا و المسجل في الجامعة ليس لدينا نفس الصلاحيات في نظام الجامعة الإلكتروني فأنا ليس مصرح لي إلا برؤية علاماتي فقط لكن المسجل بإمكانه رؤية علامات جميع الطلاب و هكذا ,,,

    قبل الدخول في مبدأ الخصوصية يجب ان نذكر ان لغة ال php لها عدة اصدارات و منها PHP3 و PHP4 و PHP5 و قريبا PHP6 و في كل اصدار من اصدارات هذه اللغة كانت هناك تعديلات و تحسينات , وهنا اريد ان اذكركم بأنني قلت لكم في الدرس السابق اننا عند تعريف خصائص الصنف يجب ان تكتب كلمة var و عند تعريف عملية خاصة للصنف فإننا نكتب كلمة function قبل اسم العملية ,, و هذه الأمور تعمل تماما مع الإصدار PHP4 لكن الآن اتى الإصدار PHP5 و قد اصبح هناك تحديثات على هذه الأمور و اصبح لدينا مبدأ الخصوصية ليكتمل مبدأ البرمجة الموجهة للكائنات من خلال ال (public , private , protected) و التي سنتعرف عليها الآن ...

    هناك 3 مستويات للتحكم بحماية الصنف او الوصول لبيانات الصنف و هي المستوى العام public و في هذا المستوى اذا كانت الخصائص و الدوال معرفة على انها عامة فإن كل الكائنات من هذا الصنف تستطيع الوصول لبيانات هذه الخصائص و التعديل عليها و التحكم بالدوال , و المستوى الثاني و هو ال private و هو المستوى الخاص و هنا لا يستطيع اي كائن من الصنف ان يصل لبيانات الصنف من خارج الصنف و استعمال هذه البيانات المعرفة على انها private مقتصر على الدوال المعرفة داخل الصنف و المستوى الثالث و هو المستوى المحمي protected و هو نوع خاص يستخدم بالحماية عند استخدام الوراثة في الأصناف و سنتحدث عنه في الدرس القادم ...

    الكلام مبهم نوعا ما لكن لاحظ معي المثال التالي لكي تفهم المقصود من كلامي :

    كود PHP:
    <?php
        
    class security {
            public 
    $x;
            
            public function 
    edit_value($y){
                
    $this->$y;
            }
        }
        
        
    $obj = new security;
        
        
    $obj->6;
        echo 
    $obj->x;
    ?>


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

    الآن سنغير الكلمة public في المثال السابق الى private لكي يصبح الكود كالتالي :
    كود PHP:
    <?php
        
    class security {
            private 
    $x;
            
            public function 
    edit_value($y){
                
    $this->$y;
            }
        }
        
        
    $obj = new security;
        
        
    $obj->6;
        echo 
    $obj->x;
    ?>


    تلاحظ ان المتغير x اصبح private و هذا يعني ان الكائنات التي خارج الصنف لا تستطيع الإستخدام المباشر لهذه الخاصية و استخدامها مقتصر على الدوال التي بداخل الصنف لأنها خاصة داخل الصنف فقط و لا يستطيع اي كائن استخدامها مباشرة لذلك قم بتنفيذ الكود السابق و سوف ترى انه لن يطبع اي قيمة لأن الكائن obj$ لا يستطيع التعديل على قيمة الخاصية x$ لأنها معرفة private و لكن يستطيع التعديل على القيمة بطريقة غير مباشرة و هي استخدام دالة من دوال الصنف للتعديل لأن الدوال التي بداخل الصنف لديها الصلاحيات بتعديل قيم ال private لأنها على مستوى الصنف فقط و هذا الكلام ايضا على الدوال داخل الصنف فأي دالة من الممكن ان تكون public و نستطيع الوصول لها و استخدامها من خارج الصنف او ان تكون private و في هذه الحالة لا نستطيع الوصول لها و استخدامها من خارج الصنف و استخدامها يكون فقط من قبل الدوال الأخرى داخل الصنف

    قبل ان انهي الدرس ان اذكر بأن دالة البناء هي دالة من نوع خاص و يجب في تعريفها ان تكون public لأنها تنفذ تلقائيا عند انشاء الكائن و اننا كتبناها private فإن برنامجنا سيتعطل بالكامل

    الى هنا احبتي اصل معكم الى نهاية درس اليوم و سنتحدث في الدرس القادم عن التعامل مع الملفات في php و كيفية تخزينها و الكتابة عليها و انشائها و القرائة منها ثم سنعود الى البرمجة الموجهة للكائنات و الأصناف
    و لكم مني اجمل تحية

    اخوكم : زيد مراد














    التعديل الأخير تم بواسطة Sc®ipt ; 03-03-2011 الساعة 08:49 PM

  2. #2
    عضو ذهبي الصورة الرمزية وسام المصري
    تاريخ التسجيل
    Sep 2010
    العمر
    34
    المشاركات
    406

    افتراضي رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية

    يسلمووووووووووووووووووووووووو
    منَ عجآئب آلاخلآق آلبشرية ! عندمآ نگون علىّ [ حق ] لـآ آحد يتذگر وُعندمآ نگونَ علىّ [ خطأ ] لآ آحد يـنسىّ

  3. #3
    عضو مؤسس الصورة الرمزية Sc®ipt
    تاريخ التسجيل
    Nov 2008
    الدولة
    There's no place like 127.0.0.1
    العمر
    36
    المشاركات
    4,003

    افتراضي رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية

    اقتباس المشاركة الأصلية كتبت بواسطة وسام المصري مشاهدة المشاركة
    يسلمووووووووووووووووووووووووو
    العفو صديقي ..

  4. #4
    عضو جديد
    تاريخ التسجيل
    Feb 2011
    المشاركات
    4

    افتراضي رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية

    فعلن يسلموووووووووو

  5. #5
    عضو جديد
    تاريخ التسجيل
    Feb 2011
    المشاركات
    4

    افتراضي رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية

    وين مافي حد بدو يرددددددددددددد:too_upset:

  6. #6
    عضو مؤسس الصورة الرمزية Sc®ipt
    تاريخ التسجيل
    Nov 2008
    الدولة
    There's no place like 127.0.0.1
    العمر
    36
    المشاركات
    4,003

    افتراضي رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية

    العفو صديقي Kin بس صدقا ما انتبهت إلا هسه ,, و اهلا و سهلا فيك ...

+ الرد على الموضوع

معلومات الموضوع

الأعضاء الذين يشاهدون هذا الموضوع

الذين يشاهدون الموضوع الآن: 1 (0 من الأعضاء و 1 زائر)

المواضيع المتشابهه

  1. [دورة php - الدرس الثامن عشر] - مقدمة الى البرمجة الموجهة للكائنات
    بواسطة Sc®ipt في المنتدى منتدى الدورات العلمية المتخصصه
    مشاركات: 2
    آخر مشاركة: 03-28-2011, 09:04 PM
  2. [دورة php - الدرس التاسع عشر] - انشاء الأصناف classes و الكائنات objects
    بواسطة Sc®ipt في المنتدى منتدى الدورات العلمية المتخصصه
    مشاركات: 6
    آخر مشاركة: 02-22-2011, 12:58 AM
  3. [دورة php - الدرس السابع عشر] - انشاء و برمجة الدوال functions
    بواسطة Sc®ipt في المنتدى منتدى الدورات العلمية المتخصصه
    مشاركات: 4
    آخر مشاركة: 01-28-2011, 08:22 PM
  4. [دورة php - الدرس الخامس عشر] - الجزء الثالث : دوال المصفوفات
    بواسطة Sc®ipt في المنتدى منتدى الدورات العلمية المتخصصه
    مشاركات: 3
    آخر مشاركة: 01-26-2011, 07:33 PM
  5. [دورة php - الدرس الثالث عشر] - الجزء الأول : المصفوفات الرقمية و تعريفها
    بواسطة Sc®ipt في المنتدى منتدى الدورات العلمية المتخصصه
    مشاركات: 3
    آخر مشاركة: 12-13-2010, 05:24 PM

الكلمات الدلالية لهذا الموضوع

مواقع النشر (المفضلة)

مواقع النشر (المفضلة)

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •