تعریف تابع دوست برای یک کلاس

تابع دوست یکی از امکانات یا ویژگی هایی است که در زبان ++C به برنامه نویس اجازه می دهد که توابعی خارج از محدوده (Scope) کلاس تعریف کند و اجازه دسترسی به عناصر خصوصی (Private) کلاس را به توابع با کلمه کلیدی friend(به معنای دوست) بدهد.
دلیل این کار، افزایش کارایی یا به زبان ساده تر افزایش سرعت اجرای برنامه ها به خصوص زمانی که تعداد فراخوانی این نوع توابع در برنامه با نرخ بالایی انجام میشود.
البته نقدهایی هم به وجود چنین ویژگی هایی در زبان ++C وجود دارد که از طرف گروه طراحان مباحث شی گرایی به لحاظ فلسفی و یا اصول مهندسی نرم افزار مطرح می کنند. به جهت اینکه ما اصول طراحی شی گرا را با این ویژگی friend به نوعی تضعیف و یا زیر پا می گذاریم. مثل این است که شما یک گاو صندوق بخرید و یک کپی از کلید این گاو صندوق را به بعضی از دوستانتان بدهید. به دلایلی مثل این که این دوستان با بقیه فرق می کنند و  شما آنها را به دلایلی که برای شما موجه است مستثنی کرده اید. اما از دید پلیس یا مراجع قضایی این کار شما یکجور بی احتیاطی تلقی می شود. دیگر این اسناد و اطلاعات موجود در گاوصندوق جنبه محرمانگی (Private) را نخواهند داشت.
بنابراین توصیه میشود که یا از این ویژگی friend در طراحی کلاسها استفاده نکنید یا اینکه با رعایت تمامی اصول طراحی حفظ اطلاعات در کلاسها از این ویژگی بصورت محدود استفاده کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *