موضوع مقاله: چندشکلی موقت | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # چندشکلی موقت | مقدمه: هنگامی که به مفاهیم شی گرا یا رویه ای اعمال می شود، به عنوان اضافه بار تابع یا بارگذاری بیش از حد اپراتور نیز شناخته می شود. | ## بخش 1: چندشکلی موقت | صرفاً به این واقعیت اشاره دارد که این نوع چندشکلی یک ویژگی اساسی سیستم نوع نیست. این برخلاف چندشکلی پارامتریک است که در آن توابع چند شکلی بدون ذکر نوع خاصی نوشته می‌شوند و بنابراین می‌توانند یک پیاده‌سازی انتزاعی را برای هر تعداد نوع به روش شفاف اعمال کنند. اتصال اولیه چند شکلی موقت یک مکانیسم توزیع است: کنترلی که از طریق یک تابع نامگذاری شده حرکت می کند، بدون نیاز به تعیین دقیق تابع فراخوانی شده، به توابع مختلف دیگر ارسال می شود. به این ترتیب، توابعی که لیست‌های اعداد صحیح ، لیست رشته‌ها ، فهرست‌های اعداد واقعی و غیره را اضافه می‌کنند، می‌توانند نوشته شوند، و همه آنها را ضمیمه می‌نامند — و تابع پیوست سمت راست بر اساس نوع لیست‌هایی که الحاق می‌شوند فراخوانی می‌شود. این با چند شکلی پارامتریک متفاوت است، که در آن تابع باید به طور کلی نوشته شود تا با هر نوع لیستی کار کند. با استفاده از اضافه بار، ممکن است یک تابع بر اساس نوع ورودی که به آن ارسال می شود، دو کار کاملاً متفاوت را انجام دهد. این با چند شکلی پارامتریک امکان پذیر نیست (اما باید با روشن کردن نوع در داخل تابع عمومی به دست آید). روش دیگر برای نگاه کردن به بارگذاری بیش از حد این است که یک روال به طور منحصر به فرد نه با نام خود، بلکه با ترکیب نام و تعداد، ترتیب و انواع پارامترهای آن شناسایی می شود. | ## بخش 2: چندشکلی موقت | این نوع چندشکلی در زبان های برنامه نویسی شی گرا رایج است، که بسیاری از آنها به عملگرها اجازه می دهند تا به روشی مشابه توابع بارگذاری شوند (به بارگذاری بیش از حد اپراتور مراجعه کنید). مزیتی که گاهی از بارگذاری بیش از حد به دست می آید، ظاهر تخصصی است، به عنوان مثال، یک تابع با نام یکسان را می توان به روش های مختلف پیاده سازی کرد، که هر کدام برای انواع داده های خاصی که روی آنها کار می کند بهینه شده است. این می‌تواند یک رابط کاربری مناسب برای کدهایی که به دلایل عملکرد باید در موقعیت‌های مختلف تخصصی شوند، فراهم کند. نکته منفی این است که نوع سیستم نمی تواند سازگاری پیاده سازی های مختلف را تضمین کند. از آنجایی که بارگذاری بیش از حد در زمان کامپایل انجام می شود، جایگزینی برای اتصال دیرهنگام همانطور که در چند شکلی زیرگروهی یافت می شود، نیست. دیر صحافی با وجود بخش قبلی، راه‌های دیگری وجود دارد که چندشکلی موقتی می‌تواند کار کند. در Smalltalk ، بارگذاری بیش از حد در زمان اجرا انجام می شود، زیرا روش ها ("اجرای تابع") برای هر پیام بارگذاری شده ("عملکرد بیش از حد") زمانی که در شرف اجرا هستند حل می شوند. بنابراین، پلی‌مورفیسم با چندشکلی زیرمجموعه مانند سایر زبان‌ها ارائه می‌شود، و همچنین در زمان اجرا با چندشکلی ad hoc ، عملکرد آن گسترش می‌یابد. | ## بخش 3: چندشکلی موقت | از آنجایی که Smalltalk دارای یک مدل اجرای باند دیرهنگام است، و از آنجایی که اشیایی را برای مدیریت پیام‌هایی که درک نمی‌شوند، فراهم می‌کند، امکان پیاده‌سازی عملکرد با استفاده از چند شکلی بدون بارگذاری صریح یک پیام خاص وجود دارد. این ممکن است به طور کلی برای برنامه نویسی روزمره توصیه نشود، اما می تواند هنگام اجرای پروکسی ها بسیار مفید باشد. همچنین، در حالی که به طور کلی روش کلاس رایج و اضافه بار سازنده چند شکلی در نظر گرفته نمی شود، زبان های یکنواخت تری وجود دارند که در آن کلاس ها اشیاء منظم هستند. به نوبه خود، این بدان معناست که پیام‌های ارسال شده به کلاس‌ها می‌توانند بیش از حد بارگذاری شوند، و همچنین می‌توان اشیایی را ایجاد کرد که مانند کلاس‌ها رفتار کنند بدون اینکه کلاس‌های آنها از سلسله مراتب کلاس‌ها به ارث ببرند. اینها تکنیک‌های مؤثری هستند که می‌توان از آنها برای بهره‌گیری از قابلیت‌های بازتابی قدرتمند اسمال‌تاک استفاده کرد. در حالت دوم و سوم، جمع ممیز شناور باید مورد استناد قرار گیرد (با ارتقای نوع یا اجبار نوع در حالت سوم). "123" + "456" را در نظر بگیرید که در آن برنامه نویس به طور طبیعی ممکن است به جای الحاق، جمع را فرض کند. | ## جمع‌بندی | بنابراین بارگذاری بیش از حد می تواند معانی یا معنایی متفاوتی برای یک عملیات و همچنین پیاده سازی های متفاوت ارائه دهد.