آموزش دونه:مرجع آموزش

وراثت در اف شارپ (Fsharp Inheritance) آموزش زبان برنامه نویسی اف شارپ #F

Fsharp Inheritance  Fsharp Inheritance Fsharp Inheritance  Fsharp Inheritance

اف شارپ

Inheritance در #F

یکی از مهم ترین مفاهیم در برنامه نویسی شیءگرا، Inheritance در #F یا وراثت است. وراثت به ما اجازه می دهد یک کلاس را با شرایط کلاس دیگر تعریف کنیم، که باعث می شود ایجاد و نگه داری آن در برنامه آسان تر شود. همچنین فرصتی برای استفاده مجدد از کد و زمان اجرای سریع را فراهم می کند.
هنگام ایجاد یک کلاس، به جای نوشتن اعضا و اعضای جدید کاملا نوین، برنامه نویس می تواند تعیین کند که کلاس جدید باید اعضای کلاس موجود را به ارث ببرد. این کلاس موجود کلاس base یا پایه نامیده می شود و کلاس جدید به عنوان کلاس مشتق شده یا derived نامیده می شود.

ایده وراثت با رابطه IS-A پیاده سازی می شود. به عنوان مثال، mammal IS A animal, dog IS-A mammal پس dog IS-A animal و غیره.

بعد از تعریف Inheritance در #F ،در ابتدا میریم سراغ کلاس Base و کلاس Sub در #F .

کلاس Base و کلاس Sub در #F

یک subclass از یک کلاس پایه مشتق شده است که قبلا تعریف شده است. یک subclass  اعضای کلاس Base را به ارث می برد، همچنین دارای اعضای خاص خودش نیز است.
یک زیر کلاس با استفاده از کلمه کلیدی inherit تعریف شده است. (کلاس Base و کلاس Sub در #F)

در #F ، کلاس می تواند بیش تر از یک کلاس پایه مستقیم داشته باشد. اگر با استفاده از کلمه کلیدی به ارث بری یک کلاس پایه را مشخص نکنید، کلاس به طور ضمنی از Object به ارث می رسد.

در #F ، کلاس می تواند بیش تر از یک کلاس پایه مستقیم داشته باشد. اگر با استفاده از کلمه کلیدی به inherit یک کلاس پایه را مشخص نکنید، کلاس به طور ضمنی از Object به ارث می رسد.

لطفا توجه داشته باشید .

  • روش ها و اعضای کلاس base برای کاربران کلاس مشتق شده مانند اعضای مستقیم کلاس مشتق شده در دسترس هستند.
  • Let bindings و constructor parameters برای یک کلاس خصوصی هستند و بنابراین نمی تواند از کلاس های مشتق شده قابل دسترس باشد.
  • کلمه کلیدی base به نمونه کلاس base اشاره دارد. از آن مانند self-identifier (شناسه خودش) استفاده می شود.

مثال

خروجی

متدهای Overriding در #F

شما می توانید رفتار پیش فرض روش کلاس base را لغو کرده و آن را در زیر کلاس یا کلاس مشتق شده به طور متفاوتی اجرا کنید.

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

متد ها در #F به طور پیش فرض قابل لغو نیست.

برای لغو روش ها در یک کلاس مشتق شده (کلاس derived)، شما باید روش خود را به عنوان overridable یا قابل لغو با استفاده از کلمات کلیدی abstract و default به شرح زیر اعلام کنید.

در حال حاضر، روش Greet از کلاس Person را می توان در کلاس های مشتق شده لغو کرد. مثال زیر این را نشان می دهد.

مثال

خروجی

کلاس Abstract در #F

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

برای مثال، کلاس Person در School Management System مورد نیاز نخواهد بود.

با این حال، Student یا Teacher کلاس مورد نیاز خواهد بود. در چنین مواردی، شما می توانید کلاس Person را به عنوان یک کلاس انتزاعی اعلام کنید.

خصیصه AbstractClass به کامپایلر می گوید که کلاس دارای اعضای انتزاعی است.

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

مثال

خروجی

 

مطالب مرتبط