چندریختی (برنامهنویسی): تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جز چندریختی در برنامهنویسی شئگرا را به چندریختی در برنامهنویسی شیگرا منتقل کرد |
جز ربات: تصحیح جایگذاری کاما، شمارگان هزارگان |
||
خط ۶:
=== مقدمه ===
:چندریختی به معنای چندین شکل از یک متد است. مفهوم چندریختی اغلب به وسیلهٔ عبارت« یک
در برنامههای شیء گرا مانند جاوا، این امکان فراهم شده تا دو و یا بیش از دو متد همنام در یک کلاس تعریف نمود،
مشروط بر اینکه تعریف پارامترهای آن متفاوت باشد. در این موارد متدها Overload میشوند.
خط ۱۸:
به عنوان مثال یک پشته (فهرستی که آنچه آخر به آن وارد شود، اول خارج میشود) را در نطر میگیریم. ممکن است برنامهای داشته باشیم که به سه نوع پشته نیاز دارد. پشتهای برای مقادیر صحیح، پشتهای برای مقادیر اعشاری با ممیز شناور و پشتهٔ دیگری برای کاراکترها مورد استفاده
قرار میگیرد.
:الگوریتم پیاده سازی پشتهها با وجود متفاوت بودن نوع مقادیر، یکسان است. در زبانهای غیر شیء گرا، میبایست سه روتین مختلف، یکی برای هریک از پشتهها، ایجاد نمود.اما، به دلیل وجود رکنی به نام
به طور کلی، چندریختی به وسیلهٔ عبارت«یک رابط، چند متد» بیان میشود. این امر با فراهم ساختن امکان استفاده از یک رابط برای مشخص کردن یک کلاس عمومی از عملیات، به کاهش پیچیدگی کمک میکند. و این کامپایلر است که عمل مورد نظر را(یعنی متد مربوطه) متناسب با هر یک از شرایط انتخاب میکند.
به عنوان مثال حس بویایی سگها نمونهای از چندریختی میباشد. چنانچه بوی گربهای به مشام سگی برسد، درآن صورت پارس میکند وبه دنبال گربه خواهد رفت. اما اگر بوی غذا به مشامش
=== چندریختی، نهان سازی و وراثت با هم کار میکنند، ===
:چنانچه سه اصل چندریختی، نهان سازی و وراثت به درستی به کار برده شوند، به خوبی با هم ترکیب شده و محیط برنامه سازیی را فراهم میسازند که بهتر از مدل فرآیندگرا، از تولید برنامههای با استحکامتر و با قابلیت انتقال بیشتر پشتیبانی خواهد نمود. مجموعه کلاسهایی که به خوبی به صورت سلسله مراتبی سازمان دهی شده باشند، پایه و اساس کدهای قابل استفادهٔ مجددی را تشکیل میدهند که زمان و انرژی زیادی برای تولید و آزمایش آنها صرف میشود.نهان سازی امکان انتقال کدهای پیاده سازی شده را بدون تجزیهٔ آنها متناسب با رابط عمومی کلاسها فراهم میسازد. چندریختی امکان ایجاد کدهای شفاف، معقول، خوانا و قابل استفادهٔ مجدد را فراهم میسازد.
خط ۳۹:
:وقتی متد Override شدهای از یک زیر کلاس فراخوانده میشود، همیشه از نگارش تعریف شده در زیر کلاس استفاده خواهد شد. نگارش تعریف شده در فوق کلاس پنهان خواهد شد.
=== تعیین پویای متدها ===
:مکانیزم Override کردن متدها، پایه و اساس یکی ازقدرتمندترین مفاهیم برنامه نویسی شیء گرا(جاوا) را تشکیل
:اینک کار خود را با بیان مجدد یک اصل مهم آغاز میکنیم: متغیرهای ارجاع فوق کلاسها میتوانند به شیءهای زیرکلاسها ارجاع داشته باشند. جاوا با استفاده از این امر، مسئلهٔ تعیین متدهای Override شده را در زمان اجرا حل میکند. چگونگی انجام این کار به این شرح است. وقتی متد Override شدهای از طریق ارجاع یک فوق کلاس فراخوانده میشود، جاوا بر اساس نوع شیئی که در زمان فراخوانی به آن ارجاع میشود، تعیین میکند که کدام نگارش از متد اجرا شود.از این رو این کار در زمان اجرا انجام میشود.
:وقتی ارجاع به انواع مختلف شیءها صورت میگیرد، نگارشهای مختلفی از یک متد Override شده فراخوانده خواهند شد. به عبارت دیگر نوع شیء مورد ارجاع(ونه متغیر ارجاع) است که تعیین میکند که کدام نگارش ازیک متدOverride شده، اجرا خواهدشد.
|