آموزش شی گرایی / OOP در PHP (تعریف کلاس)

صفحه اصلی » انجمن ها
« در صورت وجود هرگونه اشکال در این مطلب لطفا گزارش اشکال آن را ارسال نمایید »

شی گرایی / OOP مخفف Object Oriented Programming است که یک سبک برای کدنویسی در زبان های برنامه نویسی می باشد. این سبک باعث می شود مدیریت و توسعه کدها راحتتر و سریعتر صورت بگیرد. همچنین شی گرایی از تکراری شدن کدهای مشابه جلوگیری می کند. شی گرایی باعث سهولت کد نویسی خواهد شد و برای پروژه های تیمی امری مهم و ضروری است.

مقالات و آموزش
بیشتر بخوانید
زبان PHP نیز مانند اکثر زبان های دیگر از شی گرایی پشتیبانی می کند و ما با هر بخش مانند یک شی برخورد می کنیم که در PHP این "شی ها" با "کلاس (Class)" ایجاد می شود.
هر کلاس از دو قسمت "متود (Method)" و "خصوصیت (Property)" تشکیل شده است. "خصوصیت" به متغیر های هر کلاس و "متود" به توابع آن کلاس گفته می شود.
هر متود و خصوصیت با سه سطح دسترسی protected یا public یا private نوشته می شود.
معرفی انواع سطح دسترسی
محافظت شده (protected): این نوع سطح دسترسی باعث می شود دسترسی به متود یا خصوصیت فقط از همان کلاس قابل دست یابی باشد. خصوصی (private): دسترسی به متودها یا خصوصیت های private فقط از همان کلاس یا کلاس های ارث برده شده قابل انجام است. عمومی (public): دسترسی به این متود یا خصوصیت از همه جا قابل انجام است.
توضیحات کاملتر روش های نام گذاری در جلسات بعدی به طور کامل آموزش داده خواهد شد.
ساختار کلی کلاس ها در PHP مانند کد زیر می باشد:
class Name {
        // Properties
        public $variable1;
        protected $variable2;
        private $variable3;

        // Methods
        public function name($value){
                // Code ...
        }

        protected function family($value){
                // Code ...
        }

        private function getAge(){
                // Code ...
        }
}
بررسی یک مثال واقعی
فرض کنید ما یک کارخانه خودرو سازی داریم. طبیعتا برای هر خودرو نباید کارخانه جدا تاسیس کنیم، چون خودرو ها ساختاری یکسان دارند اما دارای خصوصیات متفاوتی هستند.
مثلا کارخانه ما دو خودرو تولید می کند: پراید و سمند
این دو خودرو خصوصیات مشترک زیادی دارند مانند اینکه هردو چهار چرخ دارند، ۴ درب دارند، آینه بغل و ... دارند.
اما تفاوت هایی نیز دارند مانند اینکه سمند سایز بزرگتری دارد، رنگ متفاوتی دارد، شیشه برقی دارد و ... که اینها را پراید ندارد یا اگر دارد به روشی دیگر پیاده سازی شده.
با این توصیف کارخانه ما معادل Class در PHP می باشد که نام آن را Car می گذاریم:
class Car {
        // Code ...
}
این کلاس برای هر خودرو خصوصیاتی تعریف می کند مانند رنگ، قیمت، میزان سوخت و ... که در PHP معادل Property ها می باشد:
class Car {
        public $color;
        public $fuel;
        public $price;
                
        // Code ...
}
در ادامه باید برای کلاس توابعی تعریف کنیم که هر کدام اعمال روی خودرو ها را انجام دهد مانند ترمز کردن، گاز دادن و ... که معادل Method می شود:
class Car {
        public $color;
        public $fuel;
        public $price;

        public function brake(){
                // Code...
        }

        public function drag(){
                // Code...
        }

        public function park(){
                // Code...
        }
}
برای هر متود می توانیم مقادیری تعیین کنیم که پس از صدا زدن آن متود، مقدار مورد نظر ما چاپ شود.
در نهایت کد ما به شکل زیر می آید.
نمونه یک کلاس شامل ۳ خصوصیت و ۳ متود:
class Car {
        public $color;
        public $fuel;
        public $price;

        public function brake(){
                echo 'Car braked!';
        }

        public function drag(){
                echo 'Car dragged!';
        }

        public function park(){
                echo 'Car parked!';
        }
}
حالا در کارخانه ای‌ (کلاس) که ساخته ایم می خواهیم خودروهایی (شی/ Object) تولید کنیم.
برای ساخت "شی" جدید از کلمه کلیدی New و سپس نام کلاس استفاده می کنیم:
$pride = new Car();
با دستور بالا، ما یک "شی" جدید ساختیم که هم اکنون می توانیم به متودها و خصوصیت های آن "شی" دست پیدا کنیم.
فرض کنید می خواهیم "متود brake" را فراخوانی کنیم.
جهت دست یابی به متودها و خصوصیت ها باید به شیوه زیر عمل کرد:
$pride = new Car();
$pride->park(); // Output: Car parked!
پس از اجرای کد بالا، مقدار "Car parked" برای ما در صفحه چاپ خواهد شد.
حالا فرض کنید می خواهیم مقدار رنگ آبی برای پرایدمان قرار دهیم. برای این کار کافی است مانند کد زیر عمل کنیم:
$pride = new Car();
$pride->color = 'blue';
echo $pride->color; // Output: blue
همانطور که دیدید مقدار blue را برای رنگ پراید قرار دادیم و سپس آن را چاپ کردیم.
برای درک بیشتر این موضوع، علاوه بر "شی" پراید، یک "شی" دیگر نیز ایجاد می کنیم و آن ها را نیز مقدار دهی می کنیم:
$pride = new Car();
$pride->color = 'blue';

$samand = new Car();
$samand->color = 'red';

echo $pride->color; // Output: blue
echo $samand->color; // Output: red
در مثال بالا ما دو "شی" ایجاد کردیم به نام های samand و pride و هر کدام را مقدار دهی جداگانه کردیم و سپس مقدار هر کدام را نیز چاپ کردیم.
در این نوع "شی گرایی" می بینید که هیچ تداخلی در روند مقدار دهی متغیر ها ایجاد نشده است و هر "شی" مقدار خاص خودش را در خروجی چاپ می کند.

اشتراک گذاری مطلب

این مطلب را با دوستانتان در شبکه های اجتماعی به اشتراک بگذارید و معرفی نمایید

لطفا جهت ثبت نظر یا پرسش و پاسخ ابتدا وارد سایت شوید یا ثبت نام نمایید
مــطالب مــرتبط با این مــوضـوع

دیگر مطالب خواندنی

آخرین اخبار تکنولوژی، آموزش برنامه نویسی، توسعه زبان ها و ... را در وبلاگ آکادمی فیداکسو دنبال کنید
همچنین از آخرین خبرها و تخفیفات سایت نیز اینجا آگاه شوید