Setare Behzadi
Setare Behzadi
خواندن ۳ دقیقه·۵ سال پیش

تعریف abstract class در شی گرایی

برای شروع تعاریف قبلش باید با مفاهیم method signature و method implementation آشنا باشیم که ابتدا به این موارد میپردازم و سپس به کلاس های مذکور.

کد زیر را در نظر بگیرید:

public static int sum(int a,int b,int c) // به این قسمت میگن method signature // int is format of output { //از اینجا این میشه method implemantation return a+b+c ; }

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

1-method signature

2-method body(implementation body)

این تعریف زمانیکه میخواهیم abstract class رو توضیح دهیم به درد میخورد.

تعریف abstract method

در زبان فارسی abstract به معنی خلاصه است و متد Abstract متدی است که بخش بدنه(body) را ندارد.

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

نمونه ای از تعریف کردن abstract متدها
نمونه ای از تعریف کردن abstract متدها


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

اگر قبل از کلاس ایجاد شود به این معناست که میتواند از 0 تا 100 درصد حاوی متد های Abstract است. به عبارتی دیگر یعنی همه ی متدهاش میتونه بصورت abstract پیاده سازی شده باشد یا هیچ متدی بصورت Abstract تعریف نشده است.

مفهوم Abstract Class در شی گرایی چیست؟

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

abstract Class with methods
abstract Class with methods

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

سوالی که مطرح میشود این است که چرا سه متد را بصورت abstract تعریف کرده ایم ؟

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

در اینجا سه زیرکلاس یا بچه برای کلاس شکل هندسی با استفاده از Extend ایجاد کردیم که تمام خصوصیات کلاس shape را دارند و تنها اتفاقی که می افتد هر فرزند باید متدهای abstract را درون خود پیاده سازی کند. به عبارتی دیگر پیاده سازی متدهای abstract را به فرزندان واگذار کرده است.

سوالی که ایجاد میشود این است کهabstract class ها برای چی استفاده میشوند؟ در مواردی که مفاهیم انتزاعی داریم. بطور مثال روش پرداخت، یک مفهوم انتزاعی است و از چندین روش میشود پرداخت را انجام داد. در حقیقت شما می دانید چیست اما در واقعیت روش های زیادی دارد.

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

اسم abstract class روش پرداخت، pay باشد. و زیرشاخه هایی که اکستند میشوند مثلا پرداخت نقدی،آنلاین و کارت به کارت و ... باشد و متدهای abstract را باید پیاده سازی کند.

اما یک سری نکات برای تعریف abstract class ها باید درنظر گرفت که ضمن دانستن آنها باید آنها را بخاطر سپرد.

 abstract class نکات مربوط به
abstract class نکات مربوط به
  • کلاس abstract میتوان هیچ یا 100% متد abstract داشته باشد.
  • کلاس های abstract نمیتوانند obj بگیرند و باید حتما Extend شوند.
  • باید همه ی متدهای abstract کلاس abstract را پیاده سازی و overrideکرد.




شی گراییabstract classoop
مهندسی نرم افزار و توسعه دهنده وب | نکاتی در مورد وب که فکر میکنم میتونه واسه خیلی ها مناسب باشد رو منتشر میکنم.
شاید از این پست‌ها خوشتان بیاید