تفاوت کلیدی - چند شکلی در مقابل وراثت در OOP
برنامه نویسی شی گرا (OOP) معمولاً برای توسعه نرم افزار استفاده می شود. بسیاری از زبان های برنامه نویسی از برنامه نویسی شی گرا پشتیبانی می کنند. برنامه نویسی شی گرا روشی برای طراحی برنامه با استفاده از کلاس ها و اشیاء است. یک کلاس در OOP یک طرح اولیه برای ایجاد یک شی است. یک کلاس دارای ویژگی ها و متدهایی است. یک شیء نمونه ای از یک کلاس است. OOP شامل چهار رکن مانند وراثت، چندشکلی، انتزاع و کپسولاسیون است. این مقاله تفاوت بین چندشکلی و وراثت در OOP را مورد بحث قرار می دهد. تفاوت اصلی بین Polymorphism و Inheritance در OOP این است که Polymorphism توانایی یک شی برای رفتار چندگانه است و وراثت ایجاد یک کلاس جدید با استفاده از ویژگی ها و روش های یک کلاس موجود است.
Polymorphism در OOP چیست؟
Polymorphism برای نشان دادن چند شکل است. یک شی می تواند چندین رفتار داشته باشد. چند شکلی را می توان به دو دسته تقسیم کرد. آنها بیش از حد بارگذاری می کنند و نادیده می گیرند.
بارگیری بیش از حد
به برنامه زیر که در جاوا نوشته شده است مراجعه کنید.
شکل 01: بارگذاری بیش از حد
طبق برنامه فوق، یک شی از نوع A ایجاد می شود. هنگام فراخوانی obj.sum(); خروجی مربوط به متد sum (). هنگام فراخوانی obj.sum(2, 3); خروجی مربوط به sum (int a, int b) را خواهد داد. می توان مشاهده کرد که یک شیء یکسان بسته به موقعیت، رفتارهای متفاوتی دارد. هنگامی که چندین روش با نام یکسان، اما با پارامترهای مختلف وجود دارد، به عنوان overloading شناخته می شود.همچنین به عنوان چندشکلی زمان کامپایل یا اتصال ایستا شناخته می شود.
نسخ کننده
نوع دیگری از چند شکلی غالب است. به برنامه زیر که در جاوا نوشته شده است مراجعه کنید.
شکل 02: نادیده گرفتن
طبق برنامه فوق، یک متد display() در کلاس A وجود دارد. کلاس B از کلاس A گسترش می یابد. بنابراین، تمام متدهای کلاس A توسط کلاس B قابل دسترسی هستند. این وراثت است. مفهوم وراثت بعداً بیشتر توضیح داده می شود.
کلاس B نیز دارای همان متد display() است. هنگام ایجاد یک شی از نوع A و فراخوانی روش نمایش، خروجی B را می دهد. روش نمایش کلاس A توسط روش نمایش کلاس B لغو می شود. بنابراین، خروجی B است.
هنگامی که متدهایی با نام و پارامترهای یکسان اما در دو کلاس متفاوت وجود داشته باشند و با وراثت مرتبط باشند، به عنوان overriding شناخته می شود.همچنین به عنوان اتصال دیررس، اتصال پویا، چند شکلی زمان اجرا شناخته می شود. اضافه بار و نادیده گرفتن را چند شکلی می نامند. این یک مفهوم اصلی در برنامه نویسی شی گرا است.
ارث در OOP چیست؟
به برنامه زیر که در جاوا نوشته شده است مراجعه کنید.
شکل 03: نمونه ای از وراثت
طبق برنامه فوق، کلاس A دارای متد sum() و کلاس B دارای متد sub(). است.
متد sum() کلاس A را می توان در کلاس B با استفاده از کلمه کلیدی extension استفاده کرد. استفاده مجدد از ویژگی ها و متدها در یک کلاس موجود برای ایجاد یک کلاس جدید به عنوان Inheritance شناخته می شود. حتی هیچ متد sum() در کلاس B وجود ندارد. از کلاس A به ارث برده شده است. وراثت برای قابلیت استفاده مجدد کد مفید است. کلاس قدیمی تر، کلاس پایه، سوپرکلاس یا کلاس والد نامیده می شود.کلاس مشتق شده، زیر کلاس یا کلاس فرزند نامیده می شود.
انواع ارث
انواع مختلفی از ارث وجود دارد. آنها وراثت تک سطحی، وراثت چند سطحی، وراثت چندگانه، وراثت سلسله مراتبی و وراثت ترکیبی هستند.
ارث مجرد
در Single Inheritance، یک کلاس فوق العاده و یک کلاس فرعی وجود دارد. اگر کلاس A سوپر کلاس و کلاس B زیر کلاس باشد، تمام خصوصیات و متدهای کلاس A توسط کلاس B قابل دسترسی هستند. فقط یک سطح وجود دارد. بنابراین، به عنوان وراثت تک سطحی نامیده می شود.
وراثت چندسطحی
در وراثت چند سطحی سه سطح کلاس وجود دارد. کلاس متوسط از super class ارث می برد. کلاس فرعی از کلاس متوسط ارث می برد. اگر سه کلاس به عنوان A، B و C وجود داشته باشد و A کلاس فوق العاده و B کلاس متوسط است. سپس B از A به ارث می برد و C از B به ارث می برد، این یک ارث چند سطحی است.
ارث چندگانه
در وراثت چندگانه، کلاس های فوق العاده و یک کلاس فرعی وجود دارد. اگر سه کلاس فوقالعاده به نامهای A، B، C و D کلاس فرعی است، کلاس D میتواند از A، B و C به ارث ببرد. وراثت چندگانه در زبان برنامهنویسی C++ پشتیبانی میشود. در زبان های برنامه نویسی مانند جاوا یا سی شارپ پشتیبانی نمی شود. رابطها برای پیادهسازی وراثت چندگانه در این زبانها استفاده میشوند.
وراثت سلسله مراتبی
اگر کلاس هایی به نام A به عنوان کلاس های فوق العاده و B، C کلاس های فرعی هستند، آن کلاس های فرعی می توانند ویژگی ها و متدهای کلاس A را به ارث ببرند. این نوع وراثت به عنوان وراثت سلسله مراتبی شناخته می شود.
وراثت ترکیبی
نوع وراثت خاص دیگری نیز وجود دارد که به عنوان وراثت ترکیبی شناخته می شود. این ترکیبی از ارث چند سطحی و چندگانه است. اگر A، B، C و D کلاسها هستند و B از A به ارث میبرد و D از هر دو B و C به ارث میبرد، پس این یک ارث بری هیبریدی است.
شباهتهای بین چندشکلی و وراثت در OOP چیست؟
هر دو مفاهیم برنامه نویسی شی گرا هستند
تفاوت بین چندشکلی و وراثت در OOP چیست؟
Polymorphism در مقابل وراثت در OOP |
|
Polymorphism توانایی یک جسم برای رفتار چندشکل است. | وراثت ایجاد یک کلاس جدید با استفاده از ویژگی ها و متدهای یک کلاس موجود است. |
استفاده | |
Polymorphism برای اشیا برای فراخوانی کدام شکل از متدها در زمان کامپایل و زمان اجرا استفاده می شود. | وراثت برای قابلیت استفاده مجدد کد استفاده می شود. |
اجرای | |
Polymorphism در روشها پیادهسازی میشود. | وراثت در کلاس ها پیاده سازی می شود. |
دسته بندی | |
Polymorphism را می توان به overloading و overriding تقسیم کرد. | وراثت را می توان به وراثت تک سطحی، چند سطحی، سلسله مراتبی، ترکیبی و چندگانه تقسیم کرد. |
خلاصه - چند شکلی در مقابل وراثت در OOP
چند شکلی و وراثت مفاهیم اصلی در برنامه نویسی شی گرا هستند. تفاوت بین Polymorphism و Inheritance در OOP این است که Polymorphism یک رابط مشترک برای چندین فرم است و Inheritance ایجاد یک کلاس جدید با استفاده از ویژگی ها و روش های یک کلاس موجود است. هر دو مفهوم به طور گسترده در توسعه نرم افزار استفاده می شود.
دانلود PDF Polymorphism vs Inheritance در OOP
می توانید نسخه PDF این مقاله را دانلود کنید و طبق یادداشت نقل قول برای اهداف آفلاین از آن استفاده کنید. لطفاً نسخه PDF را از اینجا دانلود کنید تفاوت بین چندشکلی و وراثت در OOP