اثر پروانه ای

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

مشخصات بلاگ
اثر پروانه ای

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

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

آخرین نظرات
  • ۱۱ بهمن ۹۵، ۱۷:۱۸ - فاروق کریمی زاده
    خوب بود.
اثر پروانه ای

بسم الله الرحمن الرحیم

سلام...

همونطور که قولش رو داده بودم از این جلسه تمرکز بیشتر بر روی برنامه نویسی به روش شئ گرایی خواهیم داشت. البته این مبحث نیاز به مقدماتی داره که الحمدلله تا اینجای کار با بسیاری از اون مقدمات آشنایی مختصری پیدا کرده اید. حتی شما بدون اینکه خودتان متوجه باشید از تمامی این تکنیک های شئ‌گرایی در برنامه های قبلی استفاده کردید. بنابراین به احتمال زیاد درک مواردی که در ادامه خواهد آمد بسیار آسان تر خواهد بود.

شئ گرایی در برنامه نویسی، کار برنامه نویس ها رو بسیار ساده کرده به این دلیل که پیچیدگی برنامه‌های نوشته شده به این روش بسیار کم بوده ، هزینه آن کمتر و امکان توسعه سریع تر برنامه را به برنامه نویس خواهد داد. جلوی بسیاری از خطاهای منطقی در برنامه نویسی، با این روش گرفته می شود. البته این امکان وجود دارد که زبان برنامه نویسی مورد استفاده، تمام امکانات را برای نوشتن یک برنامه شئ‌گرا فراهم کرده باشه، اما برنامه نویسی ما به روش سنتی باشه! گفتن این مقدمه طولانی شاید کمی بی موقع باشه. پس بریم ببینیم این روش برنامه نویسی واقعا به چه شکل هست. البته باید بگم معمولا برنامه نویسی به این روش رو کسی به این زودی تدریس نمی کنه! و معمولا بعد از آشنایی هنرآموز با چند زبان غیر شئ‌گرای دیگر، این مباحث رو تدریس می کنند. اما به این دلیل که با اکثر مفاهیم اولیه تا حدودی آشنایی پیدا کرده اید، این مبحث رو زود تر مطرح کردیم. در ضمن تمام دروسی که تا اینجا گفته شده بسیار مختصر و خلاصه بوده اند.

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

برای مثال شیئ "اتومبیل" را در نظر بگیرید. این شیئ دارای یکسری خصوصیات هست، از جمله رنگ اتومبیل، تعداد چرخ ها، تعداد دنده ها، نوع اتومبیل (سواری، کامیون، وانت و...)، حداکثر سرعت، مقدار سوخت، نوع سوخت و... (خسته شدم چندتا هم شما بگید). ما در برنامه نویسی سی شارپ به اینها، Property می گیم. خصوصیات اشیاء بصورت "اسم" مطرح می شوند.

هر شیئی در مقابل کنش ها، واکنش نشان می دهد. برای مثال همین اتومبیل، در مقابل فشار دادن پدال ترمز، متوقف می شود. درصورتی که پدال گاز را فشار دهیم، دور موتورش افزایش پیدا می کند. در صورتی که با سرعت به دیوار برخورد بکنه، له و لَوَرده میشه! و... در برنامه نویسی سی شارپ، به "کنش" ها، "رویداد" یا event می گوییم. در مورد واکنش ها (متدها) بعدا" صحبت می کنیم.

معمولا" اشیاء اطراف ما، کاملا ساده نیستند و ترکیبی از اشیاء دیگر هستند. برای مثال، اتومبیل، ترکیبی از چرخ ها، موتور، صندلی و... است. البته هر کدام از این اجزا را احتمالا بتوانیم به اجزای ساده‌تری تقسیم کنیم. مثلا چرخ اتومبیل شامل تایر، تیوب، رینگ و... است. همچنین تایر از ترکیب لاستیک، دوده، نخ و سیم تشکیل شده. همینطور الی آخر. به این روند اصطلاحا سطوح انتزاع می‌گویند. یعنی برای راننده فرقی نمی کند که تایر از چه موادی ساخته شده، اما برای سازنده تایر این امر دارای اهمیت است.

تعداد اشیاء اطراف ما بسیار زیاد هست. ما به دلایل مختلفی اشیاء را دسته بندی می کنیم. مثلا وانت، تاکسی، سواری، کامیون، اتوبوس و... همگی در یک دسته (دسته اتومبیل ها) قرار می گیرند. ما در برنامه نویسی به این دسته ها، Class می گوییم.

چند کلاس دیگر:

  • انسان ها
  • حیوانات
  • اتومبیل ها
  • خوراکی ها
  • لوازم الکترونیک
  • پوشیدنی ها

یک شیئ ممکن است بعد از تغییرات اندکی به شیئی دیگر تبدیل شود. به نحوی که هنوز خصوصیات شئ اولیه را دارد. بعلاوه برخی خواص آن دارای پیچیدگی های جدیدی هستند. ای ویژگی اشیاء را با مثال هایی در مورد جانداران بهتر می توان توضیح داد. نمودار زیر این مسأله را بخوبی نمایش می دهد. در برنامه نویسی شئ‌گرا به چنین حالتی "وراثت" یا Inheritance می گوییم. 

Animal Inheritance Hierarchy


از جمله مفاهیم دیگری که در برنامه نویسی شئ‌گرا مورد بحث و بررسی و از همه مهمتر "پیاده سازی" می‌شود، دو مفهوم "چند ریختی" یا Polymorphism و همچنین "کپسوله سازی" یا Encapsulation می‌باشند. در ادامه بصورت مختصر با این مفاهیم آشنا خواهید شد.

مفهوم چند ریختی را در مثال "اتومبیل" بهتر می توان توضیح داد. فرض کنید شما رانندگی را یاد گرفته اید. آیا مهم است که با پیکان، پراید، پاترول یا اتومبیل های سواری دیگر، رانندگی کنید؟! مسلما" مهم نیست. این امر به این دلیل هست که شما در همه انواع اتومبیل ها با دنده، کلاچ، ترمز، سوئیچ، فرمان و... مواجه هستید که کارایی تقریبا یکسانی دارند. این ابزارها صرفا "رابط" شما به اتومبیل هستند. اگر برای چند شیئ متفاوت (معمولا از طریق وراثت با یکدیگر هم خانواده هستند)، رابط یکسانی تعریف شده باشد، با چند ریختی (Polymorphism) مواجه هستیم.

مفهوم "کپسوله سازی"، "پنهان سازی" و "در لفافه قرار دادن" را شاید بتوان معادل همان "سطوح انتزاع" که صحبت آن را در پاراگراف های قبل کردیم گرفت. یعنی اینکه جزئیات پیاده سازی را از دید سطوح بالاتر مخفی کنیم. مثلا اگر همان اتومبیل را در نظر بگیرید، شخص راننده نیازی به دانستن جزئیات کار اتومبیل ندارد. مثلا برای راننده مهم نیست که موتور اتومبیل بصورت دیزلی کار می کند یا معمولی. مهم نیست که راننده بداند در کاربراتور اتومبیل، چند درصد بنزین با چند درصد هوا، ترکیب می‌شوند. این کار مزایایی دارد که به چند مورد آن اشاره می کنیم.

  • کاهش پیچیدگی ها
  • آموزش سریع تر
  • امنیت بالاتر (البته در اینجا مفهوم امنیت، شاید کمی با آن مفهومی که تاکنون در ذهن داشته اید متفاوت باشد)
  • تعیین وظیفه هر جزء از شیئ که این کار به مدیریت بهتر شیئ می‌انجامد
  • و...

همه مواردی را که در این درس به آنها اشاره شد، پیش نیاز ورود به مبحث شئ‌گرایی در برنامه نویسی می باشند. به نظر من نیازی به حفظ کردن این موضوعات نیست؛ اما لازم است که با این موارد بخوبی آشنا باشید. ان شاء الله در جلسه آینده مقداری از این مفاهیم را در برنامه نویسی پیاده می کنیم. به مرور خودتان با مزایای برنامه نویسی به این روش آشنا خواهید شد؛ مخصوصا کسانی که قبلا به روش های دیگر برنامه نویسی می کرده اند.

خداقوّت...

نظرات  (۴)

  • شراره بهلولی
  • با سلام و احترام ، از شما جهت برنامه ها ممنونم
    سلام من خیلی دوست دارم که راه اصولی برنامه نوشتن رو یاد بگیرم توکلاسهای دانشگاه هم که نمیشه چیزی یاد گرفت کاش وقت داشتین آموزشهای سی شارپ رو ادامه می دادین

    سلام استاد وقتتون بخیرٍٍ؛ ما حاضریم نمیخواین ادامه بدین؟
    پاسخ:
    سلام.
    باید ببخشید که این چند وقت وبلاگ رو زود به زود به روز نکردم.
    فردا عصر ان شاء الله...
    سلام..
    چخبر از سی شارپ مقدماتی؟

    ارسال نظر

    لطفا اگر می خواهید در بخش نظرات، کد برنامه مورد نظر خود را بنویسید، قسمت زیر (Program Code) را کپی کرده، و در کادر "پیام" ، paste کنید. سپس برنامه مورد نظر خود را در کادری که ایجاد می شود، وارد کنید.

    • کلید میانبر برای Copy کردن: Ctrl+C

    • کلید میانبر برای paste کردن: Ctrl+V

    //Program Code

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

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