اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

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

وکیل ها برای پاس دادن متدها بصورت آرگومان ، به متد های دیگر استفاده می شوند. مدیریت کننده های رویداد، چیزی جز متدهایی که از طرق delegate ها احضار شده اند، نیستند. شما یک متد سفارشی می سازید و کلاسی مثل windows control می تواند متد شما را در هنگام اتفاق افتادن یک رویداد (event) خاص، فراخوانی کند. مثال زیر طرز اعلان یک وکیل را نشان می دهد:

public delegate int PerformCalculation(int x, int y);

هر متدی از هر کلاس یا ساختار قابل دسترس که با امضای وکیل (شامل نوع برگشتی و پارامترهای ورودی) مطابقت داشته باشد، می تواند به به وکیل انتساب داده شود. متد می تواند static یا یک متد نمونه (instance method) باشد. این کار باعث می شود که بتوانیم با برنامه نویسی، فراخوانی های متد را تغییر دهیم، و همچنین کد جدیدی را در یک کلاس موجود، وارد کنیم. تا وقتی که امضای وکیل را می دانید، می توانید متد خودتان را به آن انتساب دهید.

نکته

در زمینه بارگزاری مجدد (overload) متد، امضای متد شامل مقدار برگشتی آن نمی شود. اما در زمینه delegate ها، مقدار برگشتی هم جزء امضا محسوب می شود. به بیانی دیگر ، نوع برگشتی متد باید مانند وکیل باشد.

قابلیت رجوع به متد به عنوان پارامتر، delegate ها را برای تعریف متدهای پاسخ دهنده به تماس (callback method) ایده آل کرده است. برای مثال، یک الگوریتم مرتب سازی می تواند به متدی که دو شیئ را مقایسه می کند، مراجعه کند. جدا کردن کد مقایسه کردن به الگوریتم اجازه می دهد که بصورت عمومی تری نوشته شود (یعنی بتواند انواع مختلف داده ها را مرتب سازی کند).

بررسی وکیل ها

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

  • وکیل ها مانند اشاره گرهای به تابع در ++C می باشند اما type safe هستند. (روش های مدیریت حافظه اعمال شده روی نوع ها، که اجازه دسترسی های غیر مجاز را نمی دهند)
  • وکیل ها به متد ها اجازه می دهند که بصورت پارامتر ، پاس داده شوند.
  • می توان از delegae ها به عنوان متدهای پاسخ دهنده به تماس (callback method) استفاده کرد.
  • وکیل ها می توانند بصورت زنجیره ای به هم متصل شوند؛ برای مثال، چندین متد می توانند تنها با یک رویداد فراخوانی شوند.
  • متدها مجبور نیستند که کاملا با امضای وکیل مطابقت داشته باشند. (قضیه واریانس در delegate ها)

نسخه 2.0 سی شارپ ایده متدهای بی نام (Anonymous Method) را ارائه داده است، که به بلوک های کد به جای متدهای جداگانه تعریف شده اجازه می دهد تا به عنوان پارامتر پاس داده شوند. سی شارپ 3.0 عبارات لامبدا (lambda expression) را به عنوان راهی کوتاه تر برای نوشتن بلوک های کد درون برنامه ای (inline) ، ارئه کرده است. متدهای بی نام و عبارات لامبدا، هر دو بصورت نوع های وکالتی (delegate) کامپایل می شوند. همه این امکانات باهم ، به عنوان توابع بی نام شناخته می شوند.

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی