اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

۷۴ مطلب در ارديبهشت ۱۳۹۲ ثبت شده است

  • ۱
  • ۰

روند زیر چگونگی افزودن رویدادهایی که از الگوی استاندارد دات نت پیروی می کنند را به کلاس ها و ساختارها ، توضیح می دهد. همه رویدادها در کتابخانه کلاس 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 را تولید نخواهد کرد. بنابراین کلاس های مشتق شده باید پیاده سازی خودشان را برای این بلوک ها ارائه دهند.

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

کلیدواژه enum

کلمه کلیدی enum برای اعلان مجموعه شمارشی (enumeration) استفاده می شود. enumeration یک نوع متمایز شامل مجموعه ای نامدار از ثابت ها است که به آنها لیست شمارشی می گویند.

معمولا" بهترین راه، اعلان enum مستقیما" درون namespace است، در نتیجه همه کلاس های داخل namespace می توانند بصورت مساوی به آن دسترسی داشته باشند. هرچند، یک enum می تواند بصورت تودرتو ، درون یک کلاس یا ساختار (struct) قرار گیرد.

بصورت پیش فرض، اولین enumerator (اعضای enum) مقدار صفر دارد و بقیه اعضا مقدارشان بصورت متوالی، یکی یکی افزایش پیدا می کند.

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

در این لیست شمارشی، Sat مقدار صفر دارد، Sun مقدار 1 دارد، Mon مقدار 2 دارد و الی آخر. enumerator ها می توانند برای رونویسی مقدار پیش فرضشان، مقدار دهی اولیه شوند. برای مثال:

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

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

بیان if-else

بیان if ، اجرای یک بیان یا بلوکی از بیان ها را بر اساس مقدار یک عبارت بولی ، انتخاب می کند. در مثال زیر متغیر بولی result با true مقداردهی ، سپس در بیان if بررسی شده است. خروجی "The variable is set to true" است.

bool result = true;

if (result == true)
{
    Console.WriteLine("The variable is set to true.");
}
else
{
    Console.WriteLine("The variable is set to false.");
}

اگر عبارت ارزیابی شده در داخل پرانتز درست باشد، آنگاه بیان 

Console.WriteLine("The variable is set to true.");

اجرا خواهد شد. بعد از اجرای بیان if ، روند اجرای برنامه به بیان بعدی منتقل می شود. در این مثال else اجرا نشده است.

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