أضف مشاركة إلى الموضوع: [دورة php - الدرس العشرون] - دالة بناء الصنف و مستويات الخصوصية
اضغط هنا للدخول
يمكنك إختيار أيقونة لرسالتك من هذه القائمة
سيتم تحويلها www.example.com إلى [URL]http://www.example.com[/URL].
رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية العفو صديقي Kin بس صدقا ما انتبهت إلا هسه ,, و اهلا و سهلا فيك ...
رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية
رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية وين مافي حد بدو يرددددددددددددد:too_upset:
رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية فعلن يسلموووووووووو
رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية المشاركة الأصلية كتبت بواسطة وسام المصري يسلمووووووووووووووووووووووووو العفو صديقي ..
رد: [دورة php - الدرس العشرون] - الجزء الأول : دالة بناء الصنف و مستويات الخصوصية يسلمووووووووووووووووووووووووو
[دورة php - الدرس العشرون] - دالة بناء الصنف و مستويات الخصوصية بسم الله الرحمن الرحيم السلام عليكم و رحمة الله و بركاته ,, تحدثنا في الدرس السابق عن الأصناف و الكائنات و كيفية انشائهم و التعامل معهم و كيفية التعامل مع الخواص و العمليات التابعة لنفس الصنف ,, و قد قمنا بكتابة صنف يقوم بالعمليات الحسابية الأربعة و قمنا بتطبيق ما سبق من الأفكار على هذا الصنف و بإمكانكم الإطلاع على الدرس الماضي و الدروس السابقة في الدورة عبر الفهرس التالي : [دورة php - الدرس الأول] - تحضير البرامج و كتابة اول برنامج[دورة php - الدرس الثاني] - المتغيرات و طريقة تعريفها و انواعها و التعامل معها[دورة php - الدرس الثالث] - الجزء الأول : الطباعة المدمجة و تنسيق الصفحات لعرضها[دورة php - الدرس الرابـع] - الجزء الثاني : طباعة المتغيرات في النصوص و بعض الدوال[دورة php - الدرس الخامس] - الثوابت و متغيرات النظام و دوال لا يستغني عنها اي مبرمج [دورة php - الدرس السادس] - الجزء الأول : النماذج و كيفية تصميمها و فوائدها[دورة php - الدرس السابع] - الجزء الثاني : معالجة بيانات النماذج و برمجتها[دورة php - الدرس الثامن] - الجزء الثالث : تطبيق عملي للنماذج - اتصل بن[دورة php - الدرس التاسع] - الجزء الأول : الجمل الشرطية : if وانواعها [دورة php - الدرس العاشر] - الجزء الثاني : الجمل الشرطية : جملة switch[دورة php - الدرس الحادي عشر] - الجزء الأول : جمل التكرار و الدوران : for + while[دورة php - الدرس الثاني عشر] - الجزء الثاني : تكملة جمل التكرار و تطبيقات عليها[دورة php - الدرس الثالث عشر] - الجزء الأول : المصفوفات الرقمية و تعريفها[دورة php - الدرس الرابع عشر] - الجزء الثاني : المصفوفات الحرفية و المركبة و تعريفها[دورة php - الدرس الخامس عشر] - الجزء الثالث : دوال المصفوفات[دورة php - الدرس السادس عشر] - اعادة استخدام الكود و ادراج الملفات [دورة php - الدرس السابع عشر] - انشاء و برمجة الدوال functions[دورة php - الدرس الثامن عشر] - مقدمة الى البرمجة الموجهة للكائنات [دورة php - الدرس التاسع عشر] - انشاء الأصناف classes و الكائنات objects و في درس اليوم بإذن الله سوف نتحدث عن موضوعين اساسيين في البرمجة الموجهة للكائنات و هي تعتبر صميم البرمجة الموجهة للكائنات و الموضوع الأول هو دالة بناء الصنف (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->x = $y; } } $obj = new security; $obj->x = 6; echo $obj->x;?> لاحظ ان هذا الصنف بسيط لكن لاحظ اننا قمنا بالإستغناء عن الكلمة var و استبدالها بالكلمة public و هنا نعني ان القيمة x تستطيع الكائنات الوصول اليها مباشرة و التعديل على قيمتها كما تلاحظ في السطرين الأخيرين فقد قمنا بإعطاء قيمة الخاصية x و تساوي 6 ثم قمنا بطباعة قيمة الكائن و لاحظ ايضا اننا نستطيع كتابة الكلمة public قبل اسماء الدوال لكي نجعل الكائنات التي خارج الصنف بالوصل الى بياناتها و استخدامها الآن سنغير الكلمة public في المثال السابق الى private لكي يصبح الكود كالتالي : كود PHP: <?php class security { private $x; public function edit_value($y){ $this->x = $y; } } $obj = new security; $obj->x = 6; echo $obj->x;?> تلاحظ ان المتغير x اصبح private و هذا يعني ان الكائنات التي خارج الصنف لا تستطيع الإستخدام المباشر لهذه الخاصية و استخدامها مقتصر على الدوال التي بداخل الصنف لأنها خاصة داخل الصنف فقط و لا يستطيع اي كائن استخدامها مباشرة لذلك قم بتنفيذ الكود السابق و سوف ترى انه لن يطبع اي قيمة لأن الكائن obj$ لا يستطيع التعديل على قيمة الخاصية x$ لأنها معرفة private و لكن يستطيع التعديل على القيمة بطريقة غير مباشرة و هي استخدام دالة من دوال الصنف للتعديل لأن الدوال التي بداخل الصنف لديها الصلاحيات بتعديل قيم ال private لأنها على مستوى الصنف فقط و هذا الكلام ايضا على الدوال داخل الصنف فأي دالة من الممكن ان تكون public و نستطيع الوصول لها و استخدامها من خارج الصنف او ان تكون private و في هذه الحالة لا نستطيع الوصول لها و استخدامها من خارج الصنف و استخدامها يكون فقط من قبل الدوال الأخرى داخل الصنف قبل ان انهي الدرس ان اذكر بأن دالة البناء هي دالة من نوع خاص و يجب في تعريفها ان تكون public لأنها تنفذ تلقائيا عند انشاء الكائن و اننا كتبناها private فإن برنامجنا سيتعطل بالكامل الى هنا احبتي اصل معكم الى نهاية درس اليوم و سنتحدث في الدرس القادم عن التعامل مع الملفات في php و كيفية تخزينها و الكتابة عليها و انشائها و القرائة منها ثم سنعود الى البرمجة الموجهة للكائنات و الأصناف و لكم مني اجمل تحية اخوكم : زيد مراد
[دورة 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");?>
function Car($name){ echo "car ".$name." running now<br/>"; }
$obj1 = new Car("BMW"); $obj2 = new Car("OPEL");
<?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;?>
$this->sum = 0; $this->avg = 0;
<?php class security { public $x; public function edit_value($y){ $this->x = $y; } } $obj = new security; $obj->x = 6; echo $obj->x;?>
<?php class security { private $x; public function edit_value($y){ $this->x = $y; } } $obj = new security; $obj->x = 6; echo $obj->x;?>
قوانين المنتدى