Mostafa 12 ارسال شده در 26 دی 1399 یک اینترفیس (interface) رفتار یا قابلیتهای یک کلاس ++C را بدون درنظرگرفتن هیچ نوع پیادهسازی برای آن توصیف میکند. اینترفیسهای ++C با استفاده از کلاسهای انتزاعی (abstract class) پیاده میشوند. این کلاسهای انتزاعی را نباید با مفهوم چکیدهسازی که برای جداسازی جزئیات پیادهسازی از دادهها به کار رفت اشتباه بگیریم. یک کلاس را میتوان با اعلان حداقل یک تابع مجازی محض در آن، انتزاعی کرد. یک تابع مجازی با قرادادن «0=» در هنگام اعلان آن مشخص میشود. مخفی برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید. هدف از ایجاد کلاس انتزاعی (معمولاً با ABC مشخص میشود)، ایجاد یک کلاس پایه مناسب است تا دیگر کلاسها از آن ارث ببرند. نمیتوان از کلاسهای انتزاعی شی نمونه گرفت و تنها به عنوان اینترفیس عمل میکنند. تلاش برای گرفتن یک شی نمونه از یک کلاس انتزاعی به خطای کامپایل منجر میشود. بنابراین، اگر قرار باشد که از زیرکلاس یک کلاس ABC نمونه گرفته شود، آن زیرکلاس باید همه توابع مجازی را پیادهسازی کند، یعنی باید اینترفیس ABC را اجرا کند. اگر یک کلاس مشتق شده در روند رونویسی (override) تابع مجازی محض با مشکل مواجه شود، آنگاه هرگونه نمونهگیری شی از آن به خطای کامپایل منجر میشود. کلاسهایی که بتوان از آنها نمونهگیری انجام داد کلاسهای عینی (concrete class) نامیده میشوند. مثالهایی از تابع انتزاعی در مثال زیر کلاس والد، یک اینترفیس برای کلاس پایه فراهم کرده تا تابعی به نام ()getArea را پیاده کند. مخفی برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید. با اجرای کد فوق، خروجی زیر حاصل میشود. مخفی برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید. میتوان مشاهده کرد که چگونه یک کلاس انتزاعی اینترفیسی در قالب ()getArea تعریف کرده و دو کلاس دیگر همان تابع را با الگوریتمهای متفاوت پیاده سازی میکنند. استراتژی طراحی یک سیستم مبتنی بر شیگرایی، میتواند یک کلاس پایه انتزاعی را به عنوان یک اینترفیس استاندارد مشترک برای همه اپلیکیشنهای خارجی به کار بندد. سپس با ارثبری از این کلاس پایه انتزاعی، کلاسهای مشتق شدهای پدید میآید که مشابه هم عمل میکنند. قابلیتهای (یعنی توابع عمومی) فراهم آمده از طریق این اپلیکیشنهای خارجی، همان توابع مجازی محض موجود در کلاس پایه انتزاعی میباشند. پیادهسازی این توابع محض در هرکلاس مشتق شده، بسته به نوع اپلیکیشن میتواند متفاوت باشد. این نوع معماری همچنین امکان اضافه کردن اپلیکیشنهای جدید به سیستم، حتی پس از تعریف آن را به سهولت فراهم ساخته است. به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر