رفتن به مطلب
برنامه نویسی من
Mostafa

آموزش واسط ها در C++

پست های پیشنهاد شده

یک اینترفیس (interface) رفتار یا قابلیت‌های یک کلاس ++C را بدون درنظرگرفتن هیچ نوع پیاده‌سازی برای آن توصیف می‌کند.

اینترفیس‌های ++C با استفاده از کلاس‌های انتزاعی (abstract class) پیاده می‌شوند. این کلاس‌های انتزاعی را نباید با مفهوم ‌چکیده‌سازی که برای جداسازی جزئیات پیاده‌سازی از داده‌ها به کار رفت اشتباه بگیریم.

یک کلاس را می‌توان با اعلان حداقل یک تابع مجازی محض در آن، انتزاعی کرد. یک تابع مجازی با قرادادن «0=» در هنگام اعلان آن مشخص می‌شود.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

هدف از ایجاد کلاس انتزاعی (معمولاً با ABC مشخص می‌شود)، ایجاد یک کلاس پایه مناسب است تا دیگر کلاس‌ها از آن ارث ببرند. نمی‌توان از کلاس‌های انتزاعی شی نمونه گرفت و تنها به عنوان اینترفیس عمل می‌کنند. تلاش برای گرفتن یک شی نمونه از یک کلاس انتزاعی به خطای کامپایل منجر می‌شود.

بنابراین، اگر قرار باشد که از زیرکلاس یک کلاس ABC نمونه گرفته شود، آن زیرکلاس باید همه توابع مجازی را پیاده‌سازی کند، یعنی باید اینترفیس ABC را اجرا کند. اگر یک کلاس مشتق شده در روند رونویسی (override) تابع مجازی محض با مشکل مواجه شود، آنگاه هرگونه نمونه‌گیری شی از آن به خطای کامپایل منجر می‌شود.

کلاس‌هایی که بتوان از آنها نمونه‌گیری انجام داد کلاس‌های عینی (concrete class) نامیده می‌شوند.

مثال‌هایی از تابع انتزاعی

در مثال زیر کلاس والد، یک اینترفیس برای کلاس پایه فراهم کرده تا تابعی به نام ()getArea را پیاده کند.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

با اجرای کد فوق، خروجی زیر حاصل می‌شود.

مخفی

    برای مشاهده مطلب باید در سایت ثبت نام کنید و سپس وارد شوید.

می‌توان مشاهده کرد که چگونه یک کلاس انتزاعی اینترفیسی در قالب ()getArea تعریف کرده و دو کلاس دیگر همان تابع را با الگوریتم‌های متفاوت پیاده سازی می‌کنند.

استراتژی طراحی

یک سیستم مبتنی بر شی‌گرایی، می‌تواند یک کلاس پایه انتزاعی را به عنوان یک اینترفیس استاندارد مشترک برای همه اپلیکیشن‌های خارجی به کار بندد. سپس با ارث‌بری از این کلاس پایه انتزاعی، کلاس‌های مشتق شده‌ای پدید می‌آید که مشابه هم عمل می‌کنند.

قابلیت‌های (یعنی توابع عمومی) فراهم آمده از طریق این اپلیکیشن‌های خارجی، همان توابع مجازی محض موجود در کلاس پایه انتزاعی می‌باشند. پیاده‌سازی این توابع محض در هرکلاس مشتق شده، بسته به نوع اپلیکیشن می‌تواند متفاوت باشد.

این نوع معماری همچنین امکان اضافه کردن اپلیکیشن‌های جدید به سیستم، حتی پس از تعریف آن را به سهولت فراهم ساخته است.

 

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

×
×
  • اضافه کردن...