با استفاده از oop میتوان برای قسمت های مختلف پروژه مدنظر خود نقشه و قالب مشخص تعریف کنیم تا با این کار در هنگام کارکردن و توسعه برنامه از اضافه نویسی و تعریف چندباره کدنویسی قسمتهای پروژه جلوگیری کنیم.

مثال:

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

 

ماژولار بودن و منعطف بودن قالب یا نقشه

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

 

امکان توسعه یک برنامه بصورت انفرادی و گروهی

با استفاده از oop می توان برنامه خود را به قسمت های کوچکتر تقسیم کرده و هر قسمت توسط یک توسعه دهنده پیاده سازی شود.همچنین می توان مجموعه کدی را تهیه کرد تا در پروژه های دیگر مورد استفاده قرار بگیرد.

 

عیوب برنامه نویسی شی گرا

توسعه یک پروژه بصورت شی گرا در کنار تمام مزایایی که در بالا به آن اشاره کردیم دارای عیب های کمی هم هست.

یکی از آنها سرعت اجرای برنامه است که کمی کند است اما با کدنویسی اصولی می توان آن را به حداقل رساند.

عیب دیگر آن این است که برای پروژه های کوچک مناسب نیست.برای پروژه های کوچک توصیه می شود از روش رویه ای استفاده کنیم.

 

مفاهیم اصلی شی گرایی

کلاس در شی گرایی نقش همان نقشه کلی را دارد که تمامی موارد را در خود در نظر گرفته است. از روی کلاس میتوان نمونه های مختلف ایجاد کرد. کلاس اولیه معمولا خیلی کلی است.

 

نحوه تعریف کلاس

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

نحوه نوشتن:

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

 

مفهوم اشیا یا آبجکت

آبجکت ها از روی کلاس ها ساخته می‌شود و یک آبجکت با آبجکت دیگر یکسان نیست.

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

 

سطح دسترسی خصوصیات کلاس

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

نمونه دیگر این سطح دسترسی را میتوان به شکل زیر توضیح داد:

راننده یک خودرو در هنگام رانندگی به یک پدال و چندتا پدال نیاز دارد و نیازی به این ندارد که بداند موتور به چه شکل کار میکند. بنابراین سازنده خودرو امکان دسترسی به موتور را برای راننده محدود می‌کند و سایر دسترسی ها را می دهد.

 

نحوه تعریف یک خصوصیت

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

  • حالت public یا عمومی
  • حالت protected یا محافظت شده
  • حالت private یا خصوصی

 

حالت public یا عمومی

در این حالت خصوصیات خود را در کلاس بصورت عمومی و قابل دسترس تعریف میکنیم. از این حالت خیلی کمتر در پروژه ها استفاده میشود. بعد از نوشتن واژه public نام خصوصیت خود را مانند تعریف متغیر قرار میدهیم. نام خصوصیت تعیین شده توسط ما بهتر است مرتبط با خصوصیت موردنظر باشد.

مثال:

در هنگام تعریف متغیر می‌توان همان لحظه آن را مقدار دهی کرد. این بسته به نوع کاری دارد که قرار است انجام دهید. برای مقدار دهی یک = قرار داده و مقدار خود را که از هر نوعی است تعریف میکنیم.

مثال:

تعداد خصوصیت های یک کلاس می‌تواند بیشمار باشد و محدودیتی در تعریف خصوصیت ها وجود ندارد.

مثال:

 

حالت protected یا محافظت شده

در این حالت قبل از خصوصیات موردنظر خود از واژه protected استفاده میکنیم. خصوصیاتی که با protected تعریف شوند از بیرون کلاس و هنگام ساخت آبجکت قابل دسترسی نیستند. بلکه کلاس های دیگری که از کلاس خصوصیت protected ارث بری کرده است میتواند از خصوصیت استفاده کند.

 

حالت private یا خصوصی

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

 

متدها در شی گرایی

به توابع عادی که در php تعریف میکردیم،اگر درون کلاس تعریف شود متد گفته میشود.
متدها می‌توانند مانند خصوصیات دارای سطح دسترسی باشند. متدها می‌توانند در انتها مقداری را برگشت دهند و پارامترهایی را دریافت کنند.

مثال:

 

دسترسی به خصوصیات درون کلاس

گاهی اوقات نیاز است درون یک متد در کلاس خود به مقادیر خصوصیات همان کلاس یا کلاس دیگر دسترسی پیدا کنیم. برای اینکار درون متد از کلمه ای به نام this$ استفاده میکنیم. پس از این دستور یک علامت <- قرار داده و نام خصوصیت را بدون علامت $ در نظر میگیریم.

مثال:

دیدگاه خود را بیان کنید

این ایمیل برای عموم منتشر نمی شود