کلاسهای abstract یا انتزاعی در PHP

کلاسهای abstract در اکثر زبان های شئ گرا وجود دارند. کلاسهایی هستند که قابل نمونه گیری نیستند ، و سایر کلاسها فقط میتوانند از آنها ارث بری کنند.

فرض کنید که شما یک کلاس animal دارید و میخواهید همه حیوانات از آن کلاس یا شئ مشتق شوند ، خود کلاس animal به تنهایی قابل نمونه گیری نیست. چون ما موجود حیون نداریم و مثلا گربه با به ارث بردن بخشی از ویژگی های حیوان به موجودیت میرسد . پس دلیل اینکه اسم این نوع کلاسها را abstact گذاشته اند هم قابل درک هست…

کاربرد کلاسهای abstract

حتما الان این سوال براتون پیش اومده که ” چه کاریه از abstract استفاده کنیم ؟ کلاس معمولی درست میکنیم ، ازش ارثم میبریم 🙂 ”

سوال به جایی هم هست ، در پروژه های بزرگ برای خوانایی برنامه از abstract ها استفاده میکنند . شما وقتی یک کلاس abstract رو میبینید ، خیلی راحت میفهمید که این تابع قابل نمونه گیری نیست و یک کلاس برای ارث برده شدن هست. در پروژه های کوچیک این مسئله زیاد خودش رو نشون نمیده ولی در پروژه های بزرگ خیلی کاربرد داره. مثلا همین فریمورک لاراول خودمون خیلی جاها از همین نوع کلاسها استفاده کرده…

کاربرد دیگه ی کلاسهای abstract این هست که شما با این نوع کلاسها میتونید نویسنده های کلاسهای فرزند رو وادار کنید که برخی توابع رو بازنویسی کنند( در ادامه بیشتر متوجه این موضوع میشید).

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

برای تعریف یک کلاس انتزاعی از کلمه کلیدی abstract  قبل از class  استفاده میکنیم :

الان اگه شما از کلاس بالا نمونه بگیرید با اررور مواجه میشید. طبیعی هم هست دیگه 🙂

یادتون باشه درون کلاس abstractتون میتونید متد هایی رو تعریف کنید و از اونها استفاده کنید و اون متد ها میتونن abstract باشن یا نه…

اگه متدی رو از نوع abstract تعریف کردید ، توسعه دهنده های دیگه رو مجبور میکنید : در صورتی که از کلاس شما کلاسی رو به ارث بردن ، حتما نابع رو دوباره بنویسن. مثلا هر کلاسی که از کلاس بالا مشتق بشه ، باید متد Greet رو دوباره بنویسه.

و یادتون باشه که متد های انتزاعی فقط درون کلاسهای انتزاعی قابل نوشته شدن هستند.

کلاس زیر از کلاس بالا مشتق شده :

همونطور که میبینید ما مجبور بودیم که متد  Greet()  رو بازنویسی کنیم. حالا میتونیم از کلاس Dog بصورت زیر نمونه بگیریم :

خیلی واضح و cool 🙂

امیدوارم کمکتون کرده باشم

 

یک دیدگاه بر “کلاسهای abstract یا انتزاعی در PHP
  1. امین گفت:

    مطلب بسیار خوب و مفیدی هست. درباره کلاس abstract مطلب فارسی تقریبا وجود نداره!

  2. اعظم گفت:

    عالی بود. کاملا مفهومی

  3. محمد گفت:

    بسیار مفید ، مخصوصا اینکه با زبان ساده و روان گفته شده

  4. حسین گفت:

    منظور از نمونه گیری چیه ؟

  5. نرجس گفت:

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

    • حمید گفت:

      sublime و phpstorm بهترین ها میتونن باشن… پیشنهاد میکنم روی یکی از توزیع های لینوکس و با یه ایبوک که از پایه همه چیو گفته باشه شروع کنید… پروژه ای کار کردن خوبه ولی بعضی جاها ممکنه به خاطر عدم نیاز تو پروژه، بعضی چیزا نادیده گرفته بشه و بعدن گریبان گیرتون بشه…
      موفق باشید

  6. ali گفت:

    سلام دست شما درد نکنه ،خیلی خوب توضیح دادین.

  7. مهم نی گفت:

    حاجی خیلی دمت گرم 🙂 من تو هیج سایتی حوصله نمیکنم نظر بدم، ولی خیلی گلی!!!
    انصافا بدون اینکه از کلمات آکادمیک و اونجورکی استفاده کنی حق مطلبو ادا کردی!!
    یعنی اینایی که میزنی دقیقا اون چیزیه که نیازه نه اون چیزایی که کلیه و جز فهرست کتابا!!!

    مرسیییی!!!

  8. مهدی بشیرپور گفت:

    باسلام و عرض خسته نباشید
    من بیش از یک ساعت است که سایت شما رو میگردم همه مطالب بلااستثنا گویا و بدرد بخور و قابل فهم بودن.

    از مدیریت این سایت بسیار بسیار متشکرم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*