چندریختی (برنامهنویسی): تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جز ربات: حذف میانویکی موجود در ویکیداده: en, es, nl, tr, zh |
جز ربات ردهٔ همسنگ (۲۴) +املا+مرتب+تمیز (۶.۵): + ۵ رده |
||
خط ۱:
{{حق تکثیر مشکوک}}
{{ویکیسازی}}
{{بدون منبع}}
مقالهٔ ارائه شده در زمینهٔ برنامه نویسی شیء گرا و مرتبط با علم کامپیوتر میباشد. در این مقاله قصد بررسی مفهوم چندریختی و تاثیر آن روی برنامه نویسی شیء گرا (جاوا)را خواهیم داشت. مفهوم چندریختی ویژگی است که به رابطها امکان میدهد تا برای گروهی از عملیاتها مورد استفاده قرار گیرند. در این مقاله مفهوم چندریختی از طریق دو مفهوم متدهای Override (توابع مجازی)و Overload شده پشتیبانی میشود. ما با بررسی این دو مفهوم در پی نشان دادن تاثیر مفهوم چندریختی روی برنامه نویسی شیء گرا خواهیم بود.
روش به کار برده شده در این تحقیق از طریق مطالعه منابعی از جمله کتب مرتبط با برنامه نویسی، راهنمای برنامههای شیء گرا و اجرای برنامههایی با ماهیت چندریختی میباشد.
خط ۲۳:
به طور کلی، چندریختی به وسیلهٔ عبارت«یک رابط، چند متد» بیان میشود. این امر با فراهم ساختن امکان استفاده از یک رابط برای مشخص کردن یک کلاس عمومی از عملیات، به کاهش پیچیدگی کمک میکند. و این کامپایلر است که عمل مورد نظر را(یعنی متد مربوطه) متناسب با هر یک از شرایط انتخاب میکند.
به عنوان مثال حس بویایی سگها نمونهای از چندریختی میباشد. چنانچه بوی گربهای به مشام سگی برسد، درآن صورت پارس میکند وبه دنبال گربه خواهد رفت. اما اگر بوی غذا به مشامش برسد، بزاق آن ترشح خواهد کرد و به طرف ظرف غذا خواهد رفت. در هر دو شرایط مزبور، یک نوع حس بویایی کار میکند. تفاوت این دو حالت، بویی است که به مشام سگ میرسد. یعنی، نوع دادهای که بینی سگ بر روی آن کار انجام میدهد!
=== چندریختی، نهان سازی و وراثت با هم کار
:چنانچه سه اصل چندریختی، نهان سازی و وراثت به درستی به کار برده شوند، به خوبی با هم ترکیب شده و محیط برنامه سازیی را فراهم میسازند که بهتر از مدل
از طریق کاربرد اصول شیءگرا، بخشهای گوناگون یک برنامهٔ پیچیده را میتوان ترکیب نمود و موجودیتی یکپارچه، با استحکام و قابل مدیریت تشکیل داد.
== Overload کردن متدها ==
خط ۳۱:
:وقتی متد Overload شدهای فعال میشود، جاوا از نوع و یا تعداد آرگومانها برای تعیین اینکه کدام نگارش از متدها ی Overload شده فراخوانده شدهاست، استفاده میکند. از این رو متدهای Overload شده از جهت نوع و تعداد پارامترها با یکدیگر تفاوت دارند.
:اگرچه نوع مقادیری که این متدها برمی گردانند ممکن است متفاوت باشد، اما نوع مقادیر به تنهایی برای تمایز بین آنها کفایت نمیکند. وقتی که جاوا با عبارت فراخوانی این گونه متدها مواجه میشود، متدی را اجرا میکند که پارامترهای آن با آرگومانهای مورد استفاده در عبارت فراخوانی مطابقت داشته باشد.
:وقتی متدی را Overload میکنیم، هر یک از نگارشهای آن میتوانند یکی از کارهای مورد نظر را انجام دهند. هیچ قانونی مبنی بر اینکه متدهای Overload شده باید با یکدیگر مرتبط باشند وجود ندارد. اما از منظر سبک کار،
=== Overload کردن سازندهها ===
خط ۴۵:
:وقتی ارجاع به انواع مختلف شیءها صورت میگیرد، نگارشهای مختلفی از یک متد Override شده فراخوانده خواهند شد. به عبارت دیگر نوع شیء مورد ارجاع(ونه متغیر ارجاع) است که تعیین میکند که کدام نگارش ازیک متدOverride شده، اجرا خواهدشد.
[[رده:چندریختی در برنامهنویسی شیگرا]]
[[رده:انواع داده]]
[[رده:برنامهنویسی تابعی]]
[[رده:برنامهنویسی شیگرا]]
[[رده:برنامهنویسی شیءگرا]]
[[رده:مفاهیم زبان برنامهنویسی]]
[[رده:نظریه نوعها]]
|