اثر پروانه ای

برنامه نویسی حرفه ای کامپیوتر به زبان سی شارپ - لیست کامل کلمات کلیدی در ʚĭɞ - ßữʈʨɾflỵ ⓔⓕⓕⓔⓒⓣ

اثر پروانه ای

برنامه نویسی حرفه ای کامپیوتر به زبان سی شارپ - لیست کامل کلمات کلیدی در ʚĭɞ - ßữʈʨɾflỵ ⓔⓕⓕⓔⓒⓣ

اثر پروانه ای

اثر پروانه‌ای نام پدیده‌ای است که به دلیل حساسیت سیستم‌های آشوب‌ناک به شرایط اولیه ایجاد می‌شود. این پدیده به این اشاره می‌کند که تغییری کوچک در یک سیستم آشوب‌ناک چون جو سیارهٔ زمین (مثلاً بال‌زدن پروانه) می‌تواند باعث تغییرات شدید (وقوع توفان در کشوری دیگر) در آینده شود.

ایده‌ٔ این‌که پروانه‌ای می‌تواند باعث تغییری آشوبی شود نخستین بار در ۱۹۵۲ در داستان کوتاهی به نام آوای تندر اثر ری بردبری مطرح شد. عبارت «اثر پروانه ای» هم در ۱۹۶۱ در پی مقاله‌ای از ادوارد لورنتس به وجود آمد. وی در صد و سی و نهمین اجلاس ای‌ای‌ای‌اس در سال ۱۹۷۲ مقاله‌ای با این عنوان ارائه داد که «آیا بال‌زدن پروانه‌ای در برزیل می‌تواند باعث ایجاد تندباد در تکزاس شود؟»

آخرین نظرات
  • ۱۳ بهمن ۰۱، ۱۵:۳۱ - حسنا سادات و سما سادات
    عالی

۱۶ مطلب با کلمه‌ی کلیدی «event» ثبت شده است

  • ۱
  • ۰

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

public delegate void EventHandler(object sender, EventArgs e);


نکته
دات نت فریم وورک 2.0 یک نسخه جنریک (عام) از این وکیل را بصورت (EventHandler (of TEventArgs معرفی می کند. مثال های زیر چگونگی استفاده از هر دو نسخه را نشان می دهند.

هرچند رویدادهای موجود در کلاس هایی که شما تعریف کرده اید می توانند بر پایه ی هر وکیل معتبری باشند، حتی وکیل هایی که مقداری را بازگشت می دهند، اما در کل پیشنهاد می شود که شما رویدادهایتان را برپایه الگوی دات نت فریم وورک قرار دهید. این کار با استفاده از EventHandler ، بصورتی که در مثال زیر توضیح داده شده ، انجام می پذیرد.

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

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


امضای تعهد به رویدادها با استفاده از IDE ویژوال استودیو

  1. اگر نمی توانید پنجره Properties را ببینید، در نمای Design ، روی فرم یا کنترلی (دکمه ، تکست باکس و...) که می خواهید برایش استعمال کننده رویداد بسازید، راست کلیک کنید و گزینه Properties را انتخاب کنید.
  2. در بالاترین قسمت پنجره Properties روی آیکن Events (به شکل رعدوبرق) کلیک کنید.
  3. روی رویدادی که می خواهید بسازید (برای مثال رویداد Load) ، دوبار کلیک کنید.
    ویژوال استودیو بصورت خودکار یک متد استعمال کننده (بصورت خالی و پیاده سازی نشده) رویداد را به کد شما اضافه می کند. به بیانی دیگر، شما می توانید همین کدها را بصورت دستی در نمای Code وارد کند. برای مثال، خطوط کد زیر یک متد استعمال کننده رویداد را اعلان می کنند که در هنگام برپا شدن رویداد Load از کلاس Form فراخوانی خواهد شد.

private void Form1_Load(object sender, System.EventArgs e)
{
    // Add your form load event handling code here.
}

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

رویدادها

Event ها یک کلاس یا شیئ را قادر می سازند تا چیزهای مورد علاقه خود را به کلاس ها یا اشیاء دیگر اطلاع دهند. به کلاسی که رویداد را می فرستد ( یا برپا می کند) ناشر می گویند (publisher) و به کلاس هایی که رویداد را دریافت می کنند ( یا استعمال می کنند- handle) ، متعهد ( subscriber ) می گویند.

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

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

رویدادها دارای خصوصیات زیر می باشند:

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

رویداد ها ، به یک کلاس یا شیئ این امکان را می دهند که درصورت اتفاق چیزی دلخواه ، کلاس ها یا اشیاء دیگر را مطلع کنند. به کلاسی که رویداد را می فرستد (یا برپا می کند) ، ناشر (publisher) می گویند و به کلاس هایی که رویداد را دریافت (مدیریت/handle) می کنند، متعهد (subscriber/اشتراک گیرنده) می گویند.

در یک برنامه ویندوزی یا تحت وب نمونه که با #C نوشته شده است، شما توسط کنترل هایی مثل button و یا listbox متعهد رویدادهای برپاشده می شوید. شما می توانید با استفاده از IDE (محیط توسعه جامع) Visual C# تمام رویدادهایی که یک کنترل منتشر می کند را ببینید و هر کدام از آنها را که خواستید ، برای مدیریت (handle) انتخاب کنید. IDE بطورت خودکار یک متد خالی مدیریت کننده رویداد و کد تعهد به رویداد را اضافه می کند. برای اطلاعات بیشتر به "راهنمای چگونگی اشتراک گیری و لغو اشتراک از رویدادها" مراجعه کنید.

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

رویدادها دارای خواص زیر می باشند:

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

روند زیر چگونگی افزودن رویدادهایی که از الگوی استاندارد دات نت پیروی می کنند را به کلاس ها و ساختارها ، توضیح می دهد. همه رویدادها در کتابخانه کلاس Net Framework. بر پایه وکیل EventHandler می باشند، که بصورت زیر تعریف شده اند:

public delegate void EventHandler(object sender, EventArgs e);

نکته

نسخه 2.0 دات نت فریم وورک یک نسخه جنریک (generic) از این وکیل (delegate) بصورت <EventHandler<TEventArgs معرفی می کند. مثال های زیر چگونگی استفاده از هر دو نسخه را نشان می دهد. هر چند رویدادهای موجود در کلاس هایی که شما تعریف می کنید، می توانند بر پایه هر وکیل معتبری باشند؛ حتی وکیل هایی که یک مقدار را برگشت می دهند، عموما" پیشنهاد می شود که با استفاده از EventHandler ، رویداد هایتان را روی الگوی دات نت فریم وورک ، پایه گزاری کنید. بصورتی که در مثال زیر نشان داده شده است.

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

کلمه کلیدی event

کلمه کلیدی event برای اعلان یک کلاس منتشر کننده رویداد استفاده می شود.

مثال

مثال زیر چگونگی اعلان و برپا کردن یک رویداد که از EventHandler به عنوان نوع وکالتی (delegate type) اساسی اش استفاده می کند. برای مشاهده مثال کاملی از چگونگی استفاده از نوع وکالتی جنریک <EventHandler<TEventArgs و چگونگی تصویب یک رویداد و ساختن یک متد مدیریت کننده رویداد، به راهنمای انتشار رویدادها ، مطابق Net Framework. مراجعه کنید.

public class SampleEventArgs
{
    public SampleEventArgs(string s) { Text = s; }
    public String Text {get; private set;} // readonly
}
public class Publisher
{
    // Declare the delegate (if using non-generic pattern).
    public delegate void SampleEventHandler(object sender, SampleEventArgs e);

    // Declare the event.
    public event SampleEventHandler SampleEvent;

    // Wrap the event in a protected virtual method
    // to enable derived classes to raise the event.
    protected virtual void RaiseSampleEvent()
    {
        // Raise the event by using the () operator.
        if (SampleEvent != null)
            SampleEvent(this, new SampleEventArgs("Hello"));
    }
}

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

رویدادها را می توان با public، private، protected، internal یا protected internal علامتگذاری کرد. این اصلاحگرهای دسترسی، چگونگی دسترسی کاربران کلاس ، به رویداد را تعریف می کنند.

کلیدواژه ها و رویدادها

کلمات کلیدی زیر روی رویدادها اعمال می شوند.

  • static : اگر هیچ نمونه ای از کلاس موجود نباشد، رویداد را برای فراخواننده گان در دسترس قرار می دهد. (بدون نمونه سازی از کلاس به رویداد دسترسی داریم).
  • virtual : به کلاس های مشتق شده اجازه می دهد تا با استفاده از کلمه کلیدی override رفتار رویداد را بازنویسی کنند.
  • sealed : رویداد را به عنوان مهروموم شده اعلام کرده و اجازه رونویسی نداریم. (برای کلاس های مشتق شده تعیین می کند که این رویداد، دیگر مجازی نیست).
  • abstract : کامپایلر بلوک های دستیابی کننده رویداد add و remove را تولید نمی کند، بنابراین کلاس مشتق شده باید پیاده سازی خودش را برای این دستیابی کننده ها ارائه کند.

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

یک رویداد می تواند به عنوان یک رویداد مجازی (virtual) علامتگذاری شود؛ که این امکان را به کلاس های مشتق شده می دهد تا رفتار رویداد را با استفاده از کلیدواژه override بازنویسی کنند. برای اطلاعات بیشتر "ارث بری (آموزش برنامه نویسی #C) را ببینید. رویدادی که رخداد مجازی را بازنویسی می کند، همچینی می تواند با sealed علامت گذاری شود؛ با این کار به کلاس های مشتق شده می گوییم که این رویداد دیگر مجازی نیست و نمی توان آنرا بازنویسی کرد. در پایان، یک رویداد می تواند بصورت abstract اعلان شود، که بدین معنی است که کامپایلر بلوک های دسترسی کننده ی رویداد add و remove را تولید نخواهد کرد. بنابراین کلاس های مشتق شده باید پیاده سازی خودشان را برای این بلوک ها ارائه دهند.

  • غلامعلی حسینی بهجانی