اگر در دنیای برنامه‌نویسی زندگی می‌کنید، احتمالا با عباراتی نظیر class و یا object برخورد کرده باشید. اما مفهوم این عبارات در برنامه‌نویسی شی‌گرا در PHP چیست؟ به طور کلی برنامه‌نویسی شی‌گرا به چه معنی است؟

مفهوم class و object در برنامه‌نویسی شی‌گرا در PHP
مفهوم class و object در برنامه‌نویسی شی‌گرا در PHP

اگر به دنبال پاسخ‌ برای سوالات خود در این زمینه هستید، تا انتهای این بخش از مقالات، همراه ما باشید.

برنامه‌نویسی شی‌گرا به چه معنی است؟!

اگر تمایل دارید با نوشتن اپلیکیشن‌های پیچیده‌تر سروکار داشته باشید، باید با برنامه‌نویسی شی‌گرا نیز آشنایی پیدا کنید. OOP یا برنامه‌نویسی شی‌گرا روشی است که برای کمک به ما در نوشتن برنامه‌های پیچیده، سهولت در نگه‌داری آن‌ها و همچنین قیاس‌پذیر بودنشان در طولانی مدت طراحی شده است. در این رویکرد، نوشتن کد‌ها به گونه‌ای انجام می‌شود که بخش‌های مشابه بتوانند در کلاس‌ها به صورت گروهی قرار بگیرند.

از جمله مزیت‌هایی که می‌توان برای سبک شی‌گرا نام برد، این است که شما در این سبک می‌توانید تنها کدی را که مد نظر دارید تغییر داده و یا به روز رسانی کنید. جالب است بدانید که برنامه‌نویسی شی‌گرا به گونه‌ای طراحی شده است که با دنیای واقعی همسانی زیادی دارد. این مسئله باعث قابل فهم‌تر شدن کدنویسی‌های این حوزه شده‌ است.

منظور از شبیه‌سازی این رویکرد با دنیای واقعی را می‌توان این‌ گونه‌ تعبیر کرد که دنیا، مملو از اشیایی است که ماهیت متفاوتی از یکدیگر دارند. اشیا می‌توانند با داشتن خاصیت‌هایی که مختص خود آن‌هاست از یکدیگر متمایز شوند. چیزی که باعث ارتباط آن‌ها با یکدیگر می‌شود، فرستادن پیغام بین‌ آن‌ها است.

این مفاهیم، به صورت مشابه در شیوه برنامه‌نویسی شی‌گرا نیز مورد استفاده قرار می‌گیرد که در ادامه به بررسی بیشتر آن‌ها و همچین توضیح مفاهیم کلیدی این رویکرد می‌پردازیم.

تعریف کلاس ، صفت ، شی و متد

قبل از هر چیز احتمالا لازم است که درباره دو عبارت شی (object) و کلاس (class) بیشتر صحبت کنیم. این دو عبارت در بسیاری از مواقع توسط برنامه‌نویسان به اشتباه استفاده می‌شود. اگر بخواهیم کلاس و شی را از طریق مثال توضیح دهیم، می‌توانیم از مثال نقشه یک ساختمان و خود ساختمان استفاده کنیم. ما برای ساختن یک ساختمان به یک نقشه احتیاج داریم که روش ساختن را برای ما مشخص کند. این نقشه مانند کلاس عمل می‌کنند. در واقع کلاس ساختار داده‌ها و همچنین عملکرد مرتبط با آن‌ها را در گروه‌های مشابه قرار می‌دهد. علاوه بر این، از داده‌ها و اطلاعاتی که کلاس به ما می‌دهد می‌توانیم در راه ساخت شی بهره ببریم.

تعریف کلاس، صفت، شی و متد
تعریف کلاس، صفت، شی و متد

در مقایسه با توضیح و مثال کلاس، ما باید از مثال خود ساختمان استفاده کنیم. در یک ساختمان از اشیا و ابزار واقعی استفاده شده است. هرچند که برای ساخت آن از یک پلن اولیه  بهره برده شده باشد، باز هم خود ساختمان یک نمونه واقعی است. بنابراین می‌توان گفت شی یا object نمونه‌ای واقعی است که بر اساس کارکرد کلاس ساخته شده است. این داده‌ها علاوه بر اینکه واقعی هستند، مشابه با اصول کلاس رفتار خواهند کرد.

اگر بخواهیم متد‌ها (methods) را شرح دهیم، باید از توابع و عناصر موجود در یک نقشه، یاد کنیم. در واقع methods عناصری هستند که کلاس را تشکیل می‌دهند و بر همین مبنا رفتار شی را شکل می‌دهند.

همچنین صفت (property) نیز خصوصیاتی است که می‌توان در شی پیدا کرد. در واقع خصوصیات و صفت‌های اشیا را property و رفتار‌های اشیا را methods تعیین می‌کند.

سطح دسترسی خصوصی و عمومی

از دیگر عباراتی که در برنامه‌نویسی شی‌گرا لازم است بدانید، سطوح دسترسی و انواع آن است. به طور کلی سطوح دسترسی به چه معناست؟!

زمانی که می‌خواهیم متد‌های یک کلاس را تعریف کنیم، باید از طریق یکی از انواع سطوح اینکار را انجام دهیم. سطح عمومی (public)، سطح خصوصی (private) و نهایتا سطح حفاظت شده (protected) انواع سطوحی است که در برنامه‌نویسی شی‌گرا‌ کاربرد دارد. در ادامه به توضیح دسترسی خصوصی و عمومی می‌پردازیم.

  • سطح دسترسی عمومی:

در سطح دسترسی عمومی، شما می‌توانید هر جا که تمایل دارید، متد را تعریف کنید؛ به طوری که حتی در خارج از کلاس نیز قابلیت دسترسی و تغییر داشته باشد.

  • سطح دسترسی خصوصی:

اگر متد شما در سطح دسترسی خصوصی اعلان شود، شما فقط قادر خواهید بود در داخل همان کلاس به آن، دسترسی داشته باشید. بنابراین شما اگر تمایل داشته باشید متدی را خارج از کلاس مذکور مورد بررسی قرار دهید، با خطا روبرو خواهید بود.

سازنده‌ها در کلاس PHP

لازم است بدانید که اولین متدی که در کلاس‌ها معرفی می‌شوند، سازنده‌ها (constructors) هستند. سازنده‌ها زمانی که شی از روی یک کلاس ساخته می‌شود به صورت خودکار اجرا خواهند شد. بنابراین در صورتی که این سازنده‌ها در یک کلاس ساخته شده باشند، به سرعت فراخوانی می‌شوند.

سازنده‌ها در کلاس PHP
سازنده‌ها در کلاس PHP

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

تابع عضو خصوصی

همانطور که در مطالب فوق ذکر کردیم، در برنامه‌‌نویسی شی‌گرا، در یک کلاس ممکن است متد‌ها به صورت عمومی و یا خصوصی اعلان شوند. زمانی توابع در یک کلاس به صورت خصوصی تعریف می‌شوند که احتیاج به کاربردهای خاصی داریم. اگر ما احتیاج نداشته باشیم که تابعی خارج از یک کلاس استفاده شود، از توابع عضو خصوصی بهره می‌بریم. فراموش نکنید که از چنین تابع‌هایی فقط در درون کلاس مورد نظر و به عنوان توابع کمکی بهره برده می‌شود.

عضو ایستا در کلاس

زمانی یک عضو را در کلاس به عنوان‌ عضو ایستا (static member) تعریف می‌کنیم که هیچ عضوی از کلاس وجود نداشته باشند، اما همچنان تمایل داشته باشیم که به اعضای یک کلاس دسترسی داشته باشیم. در واقع عضو ایستا کاملا مستقل است و هیچ وابستگی به شی ندارد.

اگر بخواهیم واضح‌تر توضیح دهیم، باید بگوییم که برای دسترسی به دیگر متد‌های یک کلاس، باید حتما شی را در اختیار می‌داشتیم. در عضو‌‌‌ ایستا، منحصرا احتیاجی به شی نداریم، چرا که این عضو مستقلا از عضو عمل خواهد کرد‌.

کپسوله‌سازی در PHP

از جمله مواردی که حتما در زمینه برنامه‌نویسی شی‌گرا باید بدانید، مسئله کپسوله‌سازی است. اگر بخواهیم این مسئله را به زبان ساده توضیح دهیم، باید به عبارت پنهان‌سازی اشاره کنیم. کپسوله‌سازی در واقع برای حفظ امنیت و همچین احترام به حریم خصوصی صورت می‌گیرد. در برنامه‌نویسی PHP شما از طریق کپسوله‌سازی می‌توانید جزئیاتی را که در یک شی وجود دارد به گونه‌ای ببندید ‌که دسترسی منابع دیگر به آن غیر ممکن باشد. این امر چگونه صورت می‌پذیرد؟!

کپسوله‌سازی در PHP
کپسوله‌سازی در PHP

این امر از ترکیب کردن متغیر‌های داده‌ای، کلاس‌ها و همچنین توابع عضو صورت می‌گیرد. آن‌ها می‌توانند با هم در یک کلاس مجرد کار کنند؛ یا به عبارتی یک شی مجزا را تشکیل دهند.

چندریختی

آیا تا کنون درباره عبارت چندریختی چیزی شنیده‌اید؟!

چندریختی مفهوم ساده‌ای است که در برنامه‌بنویسی شی‌گرا می‌توانید از آن استفاده کنید. این عبارت را می‌توان به این صورت تعبیر کرد که شی بتواند صورت‌های مختلفی به خود بگیرد. این اتفاق زمانی می‌افتد که یک متد رفتار‌های متفاوتی را بروز دهد. این امر در واقع به ما این امکان را می‌دهد که بر مبنای نوع محتوای یک متغیر، بتوانیم تفسیر‌هایی مختلف را ارائه دهیم.

وراثت

به عنوان آخرین نکته در مورد برنامه‌نویسی شی‌گرا، باید به عبارتی تحت‌ عنوان وراثت بپردازیم. اگر ما بتوانیم از روی یک کلاس که در اختیار داریم، کلاس‌‌های جدیدی را تولید کنیم، می‌توان گفت که از وراثت بهره برده‌ایم. کلاس‌های فرزند باید در متد و صفت‌ها از کلاس مادر پیروی داشته باشند. علت استفاده از وراثت و تولید کلاس‌های فرزند این است که از این راه شما می‌توانید در زمان خود صرفه‌جویی کرده و ‌با روش کدنویسی مشترک، مجددا عمل کدنویسی را انجام ندهید.

با تشکر برای همراهی تا انتهای این مطلب، برای استفاده از مطالب بیشتر در این زمینه برنامه‌نویسی PHP می‌توانید مطالب دیگر سایت‌ ما را مطالعه کنید.