مفهوم Object-Oriented Programming (بخش سوم)
مفهوم Object-Oriented Programming (بخش سوم)
-
درک وراثت (Inheritance) و انواع مختلف آن
-
تفاوت بین Generalization و Specialization
مفهوم Object-Oriented Programming (بخش سوم)
-
درک وراثت (Inheritance) و انواع مختلف آن
-
تفاوت بین Generalization و Specialization
ارث بری مکانیسم دستیابی به ویژگی ها و رفتارهای یک کلاس توسط کلاس دیگر است. کلاس که اعضای آن به ارث برده می شوند، کلاس پایه نامیده می شوند و کلاسی که این اعضا را به ارث می برد، کلاس مشتق شده است. وراث یک رابطه IS-A را پیاده سازی می کند.
مزایا:
- کاهش افزونگی کد
- استفاده قابل مجدد از کد
- مقدار کد منبع کاهش می یابد و خوانایی کد را بهبود می بخشد.
- کد آسان برای مدیریت و تقسیم به کلاس های پدر و فرزند است.
- پشتیبانی از گسترش کد
معایب:
- در کلاس پایه وراثت و کلاس های فرزند به شدت به هم متصل هستند. از این رو اگر کد کلاس والدین (پدر) را تغییر دهید، آن را به تمام کلاسهای کودک تحت تاثیر قرار می دهد.
- در سلسله مراتب کلاس، بسیاری از اعضای داده استفاده نشده و حافظه اختصاص داده شده به آنها مورد استفاده قرار نمی گیرد. بنابراین اگر برنامه ارثی را به درستی اجرا نکنید، بر عملکرد برنامه تاثیر می گذارد.
انواع مختلف وراثت
برنامه نویسی شیگرا 6 نوع مختلف از وراثت را پشتیبانی می کند:
Single inheritance
در این ارث بری، یک کلاس مشتق شده از یک کلاس پایه ایجاد شده است.
Multi-level inheritance
در این ارث بری، یک کلاس مشتق شده از یک کلاس مشتق شده دیگر ایجاد شده است.
Multiple inheritance
در این ارث، یک کلاس مشتق شده از بیش از یک کلاس پایه ایجاد شده است. این وراثت توسط زبان های .NET مانند C #،# F و غیره پشتیبانی نمی شود.
Multipath inheritance
در این ارث بری، یک کلاس مشتق شده از دیگر کلاسهای مشتق شده و همان کلاس پایه دیگر کلاسهای مشتق شده ایجاد شده است. این وراث توسط زبان های .NET مانند C #، F # و غیره پشتیبانی نمی شود.
Hierarchical inheritance
در این ارث بری، بیش از یک کلاس مشتق شده از یک پایگاه واحد ایجاد می شود.
Hybrid inheritance
این ترکیبی از بیش از یک ارث بری است. از این رو، ممکن است ترکیبی از چندتایی، ارثی چندگانه یا ارثی سلسله مراتبی و چند سطحی یا ارثی سلسله مراتبی و چندتایی یا ارثی سلسله مراتبی، چند سطحی و چندگانه باشد.
تفاوت بین Generalization و Specialization در برنامه نویسی شیگرا
فرآیند استخراج ویژگی های مشترک از دو یا چند کلاس و ترکیب آنها به یک کلاس تعمیم یافته، Generalization نامیده می شود. ویژگی های مشترک می توانند صفت ها یا متد ها باشند.
Specialization به معنی ایجاد کلاس های دیگر از یک کلاس موجود است.
بیایید نمونه ای از حساب بانکی بگیریم یک حساب بانکی از دو نوع است - حساب جاری و حساب ذخیره سازی. حساب جاری و حساب ذخیره مفاهیم رایج / عمومی را مانند شماره حساب، حساب کاربری و غیره از حساب بانکی به ارث می برد و همچنین دارای خواص تخصصی خاص خود مانند نرخ بهره و غیره هستند.