الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مفهوم الــ OOP باستخدام PHP5

بدأه فؤاد عبد الرازق في 13 سبتمبر 2011 · 3 رد · 1,246 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم و الصلاة و السلام علي اشرف المرسلين سيدنا و نبينا النبي الامى و على اله و اصحابه اجمعين الى يوم الدين

بعد التفحيص و التمحيص في منتدنا العزيز وجدت انه يخلو من درس لشرح مفهوم الــ OOP بطريقة مستفيضة بعض الشئ فقررت انى اكتبلكوا درس كده لعل الناس ان شاء الله تستفيد و متحرمناش من دعائها

انا اسف لو انى بستخدم اللغة العربي السهلة الحلوة كده مش الفصحى علشان انا طول عمرى خايب فى العربي :) ما علينا ندخل فى المفيد

البرمجة الشيئية Object Oriented Programming

انا بحب اختصر تعريف البرمجة الشيئية فى جمله واحدة

Objects + Methods = Class And Class Mean OOP

فى مفهوم الــ OOP اى شئ بيطلق عليه كلمة Object و اللى بيتم التعامل معاهم عن طريق Method او طريقة بالعربي و ده الوصف العلمى

الوصف اللى بحبه بقه ان البرمجة الشيئية ما هى الا برمجة تخليقية

المبرمج بيخلق و يفصل الكلاس زى ما هو عايز بهدف اعداة استخدامه او اعادة صيغته مره اخري

يعنى مثال بسيط انى افصل كلاس يعمل موتور بعد كده اوظف الموتور علشان يبقى عربية او ماكينة او حتى طاروخ و طيارة

اها و ممنساش ان من كل سيارة ممكن نطلع منها موديلات كمان

نشوف مع بعض مثال حى يفهمنا مضمون الكلام

<?php
class Shape
	{
		private $color;

		public function __construct( $color )
		{
			$this->color = $color;
		}

		public function getColor()
		{
			return $this->color;
		}
	}
?>

مثال بسيط اوى و حنبدأ حالا نحلله و نشرحه واحدة واحدة

class Shape
{
}

اسم الكلاس بتاعنا Shape و ده الطريقة اللى بنبدأ بيها الـ Class فى PHP

private $color;

بنعرف متغير داخل الكلاس بتاعنا Predefined Variable و مش ننسى كلمة Private و ديه مجرد قيمة الــ Visibility للمتغير $color

و حنفهم كمان شوية الموضوع ده باستفاضة

public function __construct( $color )

الدالة البانية بس علشان جوه كلاس حنقول عليها Method ننسي كلمة دالة احنا كل شغلنا Methods مش قولنا قبل كده Methods + Objects و ديه تم اضافتها فى الاصدار 5 من PHP فقط و ممكن مش تستخدمها وتستخدم عمل شئ اساسي يبنى عليه باقى الكلاس مثلا يعنى كا مثال Creating Database Connection و يتم استخدام الــ Connection عبر باقى الكلاس يبقى ممكن نعمل الــ Construct Method لتحمل الــ Connection

$this->color = $color;

اهو لسه بنتكلم Objects فى الكود ده احنا بنعلن Object اسمه $this->color و حجيب قيمته من المتغير $color

حد بقى مناكف يقولى انت حتخنقنى ايه لزمة الــ Object ماله المتغير وحش يعنى دلوقتى ؟

حقوله طب بص المثال ده

<?php
class Math
	{
		private $num;
		private $snum;
		public $percentage ;
		public $value ;
		public function __construct($num,$snum)
		{
			$this->num = $num;
			$this->snum = $snum;
		}
		//Get Percentage
		public function getPercentage()
		{
			$this->percentage = ($this->num * 100)/$this->snum ;
			return $this->percentage ;
		}
		public function getValue()
		{
			$this->value = ($this->percentage * $this->snum)/$this->num ;
			return $this->value ;
		}
	}
$new = new Math('20','100');
echo $new->getPercentage().'% <br />';
echo $new->getValue() ;
?>

و ده المثال التانى

<?php
class Math
	{
		private $num;
		private $snum;
		public $percentage ;
		public $value ;
		public function __construct($num,$snum)
		{
			$num = $num;
			$snum = $snum;
		}
		//Get Percentage
		public function getPercentage()
		{
			$percentage = ($num * 100)/$snum ;
			return $percentage ;
		}
		public function getValue()
		{
			$value = ($percentage * $snum)/$num ;
			return $value ;
		}
	}
$new = new Math('20','100');
echo $new->getPercentage().'% <br />';
echo $new->getValue() ;
?>

طبعا المثال التانى مش حيشتغل حيرجع مجموعة اخطاء بس و هو ده من اجمل مفاهيم الـ OOP

الــ Object او الكائن ده بيبقى جزء لا يتجزء من جسم الــ Class

يعنى مثلا لو عملت Object سميته CarBody يعنى جسم العربية و ادتيله مثلا القيمة Red يبقى حسم عربيتى كله حيبقى Redلو استخدمت الكائن Carbody فى اي مكان او فى اي Method جوه العربية حيبقى Red لحين صدور اشعار اخر او بمعنى اصح لحين تغير قيمته

فى المثال التانى زى المثال الاول برضه حنلاقى

public function getPercentage()

و ديه Method عادية و طبعا ممكن الــ Class يضم عدد لا نهائى من الــ Methods

فى المثال التانى بقى حنلاقى حاجة جديدة شوية

public $percentage ;

و قولنا قبل كده انيه ديه قيمة الــ Visibility

يلا نشوف مع بعض قيم الــ Visibility او الــ Encapsulation يعنى الكبسلة او عمل كبسولة المتاحة و ايه الفروق بينهم

Public

سداح مداح :)

المتغيرات او الـ Methods جوه كبسولة و اللى بيها يمكن استخدامهم جوه الــ Class برة الــ Class فى اى حتة

Protected

نلم الدنيا شوية بقى كده لا يمكن استخدام كبسولة المتغيرات او الــ Methods الا داخل الــ Class او الــ Class الابن او الــ Class الاب

حد يقولى ايه يا عم شجر العيلة ديه حقولك استنى بس انت مفكر ان الــ OOP مجرد كلاسات بس لا ده لسه مفاهيم كتير اوى اوى منهم الـ inheritance او التوريث

Private

هس بس خلاص الكبسولة ديه شديدة شوية المتغيرات او الــ Methods اللى بيخدوا القيمة Private لا يمكن استخادمهم الا داخل الــ Class فقط لا غير

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

Interfaces , Inheritance , Polymorphism

ولو لقيت فعلا فيه اقبال و تفاعل حنبد مع بعض علم الــ Design Patterns

لا تنسونى بصالح الدعاء و اسف على الاخطاء الاملائية اللى عارف انها موجودة :)

2

Life is not the amount of breaths you take, it's the moments that take your breath away

#2

يعطيك العافية أخي فؤاد عبد الرزاق ..

أسلوب غريب بالشرح ليس أكاديمي ولكن جميل وأسلوب قريب للقلب ..

لم تدخل كثيرا في التفاصيل المملة .. وهذا شيء حلو .. كما يقال .. عطيتنا الزبدة ..

OOP عالم كتير جميل ورائع وأنا أنصح من لم يعمل في الــOOP فقد فاتته متعة البرمجة الحقيقية .. ولن يكتشف متعتها إلى عندما يدرس الوراثة .. فهنا المتعة ..

أشكرك أخي فؤاد عبد الرزاق على الدرس وأتمنى المتابعة لتعم الفائدة ..

أخوك لامارتير

#3

شكرا على المرور اخ لامارتير

Life is not the amount of breaths you take, it's the moments that take your breath away

#4

ما شاء الله شرح وافي وخصوصا للمبتدأين اللي تايهين

تابع اخي فؤاد وجزاك الله خيرا


مطور مواقع وتطبيقات الانترنت 


PHP

CodeIgniter , jQuery,AJAX ,CSS Coder

مطور تطبيقات الايفون والاندرويد

مدونتي الخاصة

مواضيع مشابهة