اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

کلمه کلیدی in

با سلام!

مطلبی رو که امروز براتون آماده کردم. یه کم با مطالب قبلی تفاوت داره. احتمالا یه کم پیچیده تر.


ترمینولوژی:

Variant : چیزی که به چیزهای دیگر وابستگی دارد اما دقیقا مشابه نیست، گوناگون، متغیر

پیشوند Contra : ضد، مخالف، نقیض

پیشوند Co : با، باهم


برای پارامترهای نوع Generic (عام)، کلمه کلیدی in تعیین می کند که پارامتر آن نوع عام Contravariant است. شما می توانید از این کلمه کلیدی (in) در رابط های (Interface) عام و نماینده ها (delegate) استفاده کنید.

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

همچنین اجازه می دهد تبدیل ضمنی نوع های وکیل بدرستی انجام شود.

Covariance و Contravariance در پارامترهای نوع جنریک برای نوع های مرجع پشتیبانی شده است، اما آنها برای نوع های مقداری پشتیبانی نشده اند.

یک نوع در اینترفیس عمومی یا وکیل می تواند کواریانت اعلان شده باشد، اگر فقط به عنوان آرگومان متد استفاده شده باشد، نه به عنوان نوع برگشتی متد.

پارامترهای ref و out نمی توانند واریانت باشند.

اینترفیسی که پارامتر کنتراواریانت دارد به متدهایش اجازه می دهد که آرگومان های نوع کمتر مشتق شده نسبت به آنهایی که توسط پارامتر نوع اینترفیس تعیین شده را قبول کند.

برای مثال چون در NET Framework 4. در واسط

IComparer<T>

نوع T کنتراواریانت است. شما می توانید شئ

IComparer<Person>

را به شئ نوع

IComparer<Employee>

انتساب دهید، بدون اینکه از هیچگونه متد تبدیل خاص استفاده کنید، اگر Person از Employee ارث بری کند.

یک وکیل کنتراواریانت می تواند به وکیل دیگری از نوع مشابه انتساب داده شود، اما با پارامتر نوع جنریک کمتر مشتق شده (پایه ای تر).

// Contravariant interface.
interface IContravariant<in A> { }

// Extending contravariant interface.
interface IExtContravariant<in A> : IContravariant<A> { }

// Implementing contravariant interface.
class Sample<A> : IContravariant<A> { }

class Program
{
    static void Test()
    {
        IContravariant<Object> iobj = new Sample<Object>();
        IContravariant<String> istr = new Sample<String>();

        // You can assign iobj to istr because
        // the IContravariant interface is contravariant.
        istr = iobj;
    }
}

نکته: می توان iobj رابه istr انتساب داد؛ چون واسط IContravariant ضدگوناگونی است.

نظرات (۱)

با عرض سلام و خسته نباشید.
من تا به حال چنین وبلاگ پرباری در زمینه برنامه نویسی #c ندیده بودم.
امیدوارم پیشرفت خوبی داشته باشید.

باتشکر.
پاسخ:
سلام!
شما لطف دارید.
ممنون که به ما سر زدید!

ارسال نظر

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