بایگانی

نوشته های برچسب زده شده ‘Encapsulation’

نهان سازی (Encapsulation)

۱۵ شهریور ۱۳۸۵ ۱ دیدگاه

نهان سازی (Encapsulation):

 

نهان سازی یک از مفاهیم شی گرایی است که شما بصورت مکرر در زندگی روزانه از آن استفاده می کنید .  آیا شما پو ل، گواهینامه رانندگی و کارت اعتباری خود را در کیف پو لتان قرار می دهید ؟ آیا شما خودکار ها، کاغذها و کتاب های خود را در کیف تان قرار می دهید و به مدرسه می برید؟ اگر اینگونه باشد پس شما از نهان سازی استفاده می کنید. نهان سازی به معنی قرار دادن چیزهای مرتبط به هم در داخل یک شی جدید است.برای مثال یک حساب بانکی شامل: شماره حساب، نام مشتری، آدرس مشتری، نوع حساب و موجودی مشتری می باشد. همچنین برای یک حساب بانکی رفتارهای مانند باز کردن حساب، بستن حساب، برداشت از حساب و واریز به حساب وجود دارد. شما این اطلاعات را باهم در داخل یک شی حساب پنهان می کنید.

ائده اصلی که نهان سازی ارائه می دهد این است که رفتار یک شی باید تا حد ممکن دور از دید کاربر باشد. به عبارت دیگر تا زمانی که لازم نباشد، کاربر نباید متوجه شود که یک شی چگونه درخواست های او را انجام می دهد.

 

استفاده از یک شی :

 

تصور کنید که شما می خواهید به یک فرد رانندگی یاد بدهید برای اینکار شما  یک سری از اطلاعات ضروری که باید آن فرد بداند را مشخص می کنید.به عنوان نمونه شما اطلاعاتی درباره ترمز ، دنده ، فرمان و آیینه را به او آموزش می دهید. اما آیا شما درباره نحوه کارکرد موتور ، نحوه عملکرد سیستم ترمز نیز مطالبی را به او یاد می دهید؟ نه، زیرا او نیازی ندارد که برای رانندگی کردن بداند که عملکرد داخلی ماشین چگونه است.

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

یک واسط همچنین به شما اجازه می دهد تا به اطلاعاتی از آن شی دسترسی پیدا کنید. برای مثال واسط کیلو متر شمار مقدار مسیری که به کیلومتر توسط آن ماشین طی شده است را نمایش می دهد.

آیا یک واسط به تنهایی کاری را انجام می دهد؟ نه، یک واسط به تنهایی کاری را انجام نمی دهد. یک واسط بدون پیاده سازی (implementation) هیچ کاری را انجام نمی دهد. شما می توانید با یک شی ارتباط برقرار کنید اما آن هیچ کاری انجام نمی دهد. برای مثال شما یک کنترل از راه دور تلویزیون را در نظر بگیرید اگر مدار داخلی این شی پیاده سازی نشده باشد ما با فشار دادن هر کدام از کلید ها هیچ عکس العملی را مشاهده نخواهیم کرد.

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