PDA

View Full Version : کپسوله سازی چیست؟



arash_flag
سه شنبه 07 بهمن 1393, 11:08 صبح
سلام دوستان تبدیل یک فیلد به خصوصیت همان کپسوله سازی است ؟
در شی گرایی سی شارپ دیگر چه مفاهیمی وجود دارد؟

partovinia
سه شنبه 07 بهمن 1393, 11:33 صبح
سلام دوست عزیز تا جاییکه من اطلاع دارم کپسوله سازی یا همون (encapsulation) یعنی مخفی کردن خصوصیات یک شی از شی های دیگر .
در مورد تبدیل فیلد به خصوصیت چیزی نمی دونم ! امیدوارم اساتید از تجربیات خودشون به ما بگن

mrprestige
سه شنبه 07 بهمن 1393, 11:35 صبح
سلام عرض ادب ، دوستان عزیز کپسوله سازی در کنار چندریختی و ارث بری جز یکی از پایه های شی گرایی هست در واقع کپسوله سازی همون متد هایی هست که اون ها رو در قالب یک کلاس می نویسید تا هم دسترسی راحتر و هم به نوعی جلوگیری از ایجاد حجم انبوهی از کد ها که شما بجای اینکه بخواین مثلا آیتم های برنامه تون رو خط به خط بنویسید فقط کافیه اونا رو اول توی یه کلاس تعریف کنید و هر موقع که تو هر جای برنامه تون لازمش داشتید فقط کافیه اسم اون کلاسی که آیتم ها رو توش معرفی کردی صدا کنی . به این روش میگن کپسوله سازی یا Encapsulation . موفق باشید

elena
سه شنبه 07 بهمن 1393, 14:07 عصر
حالا ما نفهمیدیم این دوتا خصوصیت چه سنخیتی با هم داره یعنی (مخفی کردن خصوصیات یک شی از شی های دیگر) و (در واقع کپسوله سازی همون متد هایی هست که اون ها رو در قالب یک کلاس می نویسید تا هم دسترسی راحتر و هم به نوعی جلوگیری از ایجاد حجم انبوهی از کد ها که شما بجای اینکه بخواین مثلا آیتم های برنامه تون رو خط به خط بنویسید فقط کافیه اونا رو اول توی یه کلاس تعریف کنید و هر موقع که تو هر جای برنامه تون لازمش داشتید فقط کافیه اسم اون کلاسی که آیتم ها رو توش معرفی کردی صدا کنی . به این روش میگن کپسوله سازی یا Encapsulation )،به نظرتون پاسخ ها فرق نمی کنه

mrprestige
سه شنبه 07 بهمن 1393, 15:15 عصر
حالا ما نفهمیدیم این دوتا خصوصیت چه سنخیتی با هم داره یعنی (مخفی کردن خصوصیات یک شی از شی های دیگر) و (در واقع کپسوله سازی همون متد هایی هست که اون ها رو در قالب یک کلاس می نویسید تا هم دسترسی راحتر و هم به نوعی جلوگیری از ایجاد حجم انبوهی از کد ها که شما بجای اینکه بخواین مثلا آیتم های برنامه تون رو خط به خط بنویسید فقط کافیه اونا رو اول توی یه کلاس تعریف کنید و هر موقع که تو هر جای برنامه تون لازمش داشتید فقط کافیه اسم اون کلاسی که آیتم ها رو توش معرفی کردی صدا کنی . به این روش میگن کپسوله سازی یا Encapsulation )،به نظرتون پاسخ ها فرق نمی کنه
سلام وقتتون بخیر ، دوست گرامی تعریف اصلی کپسوله سازی همین هست که بنده عرض کردم احتمالا اون دوستمون مطلب رو اشتباه متوجه شدن که اشتباه جواب دادن ، معنی اصلی کپسوله سازی در واقه همون کلاس هایی هست که ما مینویسیم . کپسوله سازی اسمش روشه شما کد هاتون رو توی یه کپسول ( کلاس ) قرار میدید و هر جا که توی برنامتون نیازش داتید فقط صداش میزنین . اگر باز از حرف های بنده مطمئن نیستید میتونید یه سرچ کوچیک دربارش بکنید .

با آرزوی موفقیت .

یونس ابراهیمی
سه شنبه 07 بهمن 1393, 22:58 عصر
کپسوله کردن(تلفیق داده ها با یکدیگر) یا مخفی کردن اطلاعات فرایندی است که طی آن اطللاعات حساس یک موضوع از دید کاربر مخفی می شود و فقط اطلاعاتی که لازم باشد برای او نشان داده می شود.
وقتی که یک کلاس تعریف می کنیم معمولا تعدادی اعضای داده ای (فیلد) برای ذخیره مقادیر مربوط به شی نیز تعریف می کنیم. برخی از این اعضای داده ای توسط خود کلاس برای عملکرد متدها و برخی دیگر از آنها به عنوان یک متغیر موقت به کار می روند. به این اعضای داده ای، اعضای مفید نیز می گویند چون فقط در عملکرد متدها تاثیر دارند و مانند یک داده قابل رویت کلاس نیستند. لازم نیست که کاربر به تمام اعضای داده ای یا متدهای کلاس دسترسی داشته باشد. اینکه فیلدها را طوری تعریف کنیم که در خارج از کلاس قابل دسترسی باشند بسیار خطرناک است چون ممکن است کاربر رفتار و نتیجه یک متد را تغییر دهد. به برنامه ساده زیر توجه کنید :

using System;

public class Test
{
public int five = 5;

public int AddFive(int number)
{
number += five;
return number;
}
}

public class Program
{
public static void Main()
{
Test x = new Test();

x.five = 10;
Console.WriteLine(x.AddFive(100));
}
}

متد داخل کلاس Test به نام Addfiveدارای هدف ساده ای است و آن اضافه کردن مقدار 5 به هر عدد می باشد. در داخل متد main یک نمونه از کلاس Testایجاد کرده ایم و مقدار فیلد آن را از 5 به 10 تغییر می دهیم (در اصل نباید تغییر کند چون ما از برنامه خواسته ایم هر عدد را با 5 جمع کند ولی کاربر به راحتی آن را به 10 تغییر می دهد). همچنین متد Addfiveرا فراخوانی و مقدار 100 را به آن ارسال می کنیم. مشاهده می کنید که قابلیت متد Addfive به خوبی تغییر می کند و شما نتیجه متفاوتی مشاهده می کنید. اینجاست که اهمیت کپسوله سازی مشخص می شود. اینکه ما در فیلدها را به صورت publicتعریف کنیم و به کاربر اجازه ذهیم که در خارج از کلاس به آنها دسترسی داشته باشد کار اشتباهی است. فیلدها باید همیشه به صورت privateتعریف شوند.

www.w3-farsi.com (http://www.w3-farsi.com)