مشاهده نسخه کامل
: data encapsulation و abstraction چطور در c#.net پشتیبانی میشوند؟
Soalziad
08-04-2012, 21:55
با سلام. اگر توضیح بدین و راهنمایی بفرمایین ممنون میشم.
سلام
Encapsulation
از مبانی برنامه نویسی OOP و به معنی مخفی سازی و لفافه کردن اطلاعات و مکانیزم داخلی است.
یعنی باید دیتاها و مکانیزم داخلی یک شی از استفاده کنندگان مخفی بماند، بدلیل آنکه آنها نیازی به درک و فهم ساختمان داخلی ان شی نداشته باشند و فقط به راحتی و بدون دانستن اعمال داخلی با ورودی ها و خروجی های تعبیه شده ان کار کنند، مانند یک جعبه سیاه که از داخل آن بیخبر هستید، که این خود مزیت ها بسیار دارد ... ... ...
مثالی میزنم شما یک شی تلویزیون و یک شی ویدئو دارید.
این دو شی میتوانند از شرکت های متفاوت باشند و کاملاً از نظر ساختمان و قطعات داخلی و نقشه و مدار و روش کار متفاوت باشند و من نوعی هم اصلاً نیازی نیست که ساختمان داخلی ان را بدانم و بلد باشم ولی با ابن وجود میتوان این دو وسیله را به هم متصل کنم تا با هم کار کنند و در خدمت من باشند.
من اگر پس فردا تلویزیون جدیدی خریدم باز هم با زحمت خیلی کمی میتوانم از این دو شی در خدمت خودم استفاده کنم...
نه نیازی به تسلط و دانش کامل به زیر تک تک قطعات تلویزیون قبلی دارم و نه تلویزیون جدید ولی با این وجود میتوانم از آن استفاده کنم.
این مفهوم Encapsulation از مبانی OOP است.
اینکه ساختمان داده ای و پردازشی داخلی یک شی باید از دیگران مخفی و دور بماند و در جعبه سایه و لفافه ای پیچیده شود، تا تغییرات سیستم داخلی روی بقیه کد اثر نگذارد.
وقتی دوستان پروژه ای مینویسند و بالاخره ایرادی کشف میشود و با حل آن ایراد پنج جای دیگر کد به مشکل میخورد و با تغییر انها 10 جای دیگر کد خراب میشود... یکی از دلایل عدم دقت و درک صحیح از بنیان Encapsulation است.
ساده ترین و قوی ترین کلمه برای پیاده سازی Encapsulation در #C و VB.Net کلمه ساده private است!!! (و سایر کلمات چهارگانه حوزه دید)
که در کنار class و struct معنی میدهد.
(((
شاید کلمه ساده و پیش پا افتاده ای بنظر برسد، ولی تفکر صحیح و در نتیجه طراحی منطقی و بجا قدرت نهفته Encapsulation است که اگر صحیح انجام شود باید جلوی خیلی از تغییرات آبشاری کدها را بگیرید و با تغییر یک جزء نیازی به اعمال تغییرات وسیع سلسه وار در برنامه نباشد
البته میتوان درنهایت Encapsulation را در #C و VB.Net با چندریختگی interface در هم آمیخت و به زیبایی به حداکثر Encapsulation دست یافت...
)))
Abstraction
از زیر مفاهیم یکی از دیگر از اصول OOP به نام Inheritance یا همان وراثت است.
اجزاء (کلاس/متد) مجرد انتظاعی هستند که قابل نمونه سازی/استفاده نبوده و فقط قابل وراثت/بازتعریف در کلاسهای مشتق برای تکمیل در رده های بالاتر هستند.
در #C یک کلاس یا متد انتظاعی با کدی شبیه این قابل تعریف است ...
بدیهی است کلاسی که یک متد انتظاعی داشته باشد باید خودش هم انتظاعی باشد ولی برعکس ان اجباری ندارد ...
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شب خوش و موفق باشید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.