اثر پروانه ای

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

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

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

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

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

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

سلام.

امیدوارم به اندازه کافی تمرین کرده باشید. خوب بدون معطلی به ادامه درس می پردازیم. تا اینجا فقط داریم در مورد خود زبان سی شارپ یه چیزایی (هرچند خیلی ساده و مقدماتی) یاد می گیریم. اما به نظر میرسه برای اینکه بتونیم واقعا برنامه نویس باشیم به چیزی بیش از یادگیری تئوری یک زبان برنامه نویسی نیاز هست و آن هم 3 چیز مهم هست. تمرین تمرین تمرین!!

در این درس می خواهیم در مورد Class ها بیشتر صحبت کنیم. باید بدونیم که برنامه نویسی سی شارپ کلا" بر اساس اشیاء و کلاس ها می باشد، در صورتی که اکثر افرادی که در این زبان برنامه نویسی می‌کنند، با این روش (برنامه نویسی شئ گرا) برنامه نویسی نمی کنند. یعنی ممکن است یک زبان برنامه نویسی ذاتا" شئ گرا باشد، اما یک برنامه نویس کمترین استفاده را از این امکان فوق‌العاده برنامه نویسی داشته باشد. اما قبل از اینکه بتوانیم برنامه ای را بصورت شئ گرا بنویسیم باید اساس این روش برنامه نویسی که همان Class ها هستند را بهتر بشناسیم. قبلا از لحاظ تئوریک با مفهوم کلاس ها و اشیاء آشنا شدیم.

یک شئ می تواند علاوه بر متد ها (درس 13) دارای اجزای دیگری هم باشد. به هر کدام از اجزای کلاس ها اصطلاحا عضو (member) می گویند. از جمله این اجزاء می توان به موارد زیر اشاره کرد:

  • فیلد: فیلدها متغیرهایی (از هرنوع) هستند که مستقیما در داخل کلاس، ساخته می شوند.
  • ثابت: ثابت ها اعضایی هستند که فقط در هنگام برنامه نویسی، قابل تغییر هستند و مقدار آنها در هنگام اجرای برنامه غیر قابل دستکاری است.
  • خصوصیت (property): در سراسر این وبلاگ هرجایی که از کلمه پراپرتی نام می بریم، منظورمان همین عضو از کلاس هست. پراپرتی ها این امکان را برای ما بوجود می آورند که بتوانیم با امنیت بیشتری متغیرهای داخلی را مقداردهی کنیم و یا اینکه متغیرهای داخلی کلاس را در قالب بهتری به خارج از کلاس ارسال کنیم. پراپرتی ها شبیه متغیرها هستند اما امکانات بیشتری را در اختیار ما قرار می دهند.
  • متد: یک بلوک برنامه هست که حاوی دستوراتی برای اجرا می باشد. به عبارتی متدها همیشه یک کار خاص را برایمان انجام می دهند و اعضای اجرایی کلاس ها به شمار می‌روند. در درس 13 مقداری در مورد این عضو صحبت کردیم.
  • سازنده: یک متد خاص است که در همه کلاس ها وجود دارد، حتی اگر ما این متد را ایجاد نکرده باشیم. این متدها به مجرد اینکه از کلاس، یک شئ ساخته شود، اجرا می شوند. همچنین این متدها همیشه هم نام کلاس خود هستند.
  • مخرب: یک متد خاص است که در هنگام از بین رفتن اشیائی که از کلاس ساخته شده اند، اجرا می شوند. اما در زبان سی شارپ کار از بین بردن و تخریب اشیاء موجود در حافظه، به عهده بخشی به نام آشغال جمع کن( GC یا Garbage Collector) است!
  • رویداد: رویدادها یا Events اعضایی هستند که به کلاس ها و اشیاء اجازه می دهند تا چیزی را به کلاس ها و اشیاء دیگر گوشزد کنند. البته بحث در مورد این عضو از کلاس، بسیار مفصل است، ولی در همین وبلاگ می توانید مطالب بسیار مهم و جذابی در مورد رویداد ها بیاموزید. به احتمال زیاد در مورد این عضو از کلاس، در این سلسله دروس صحبتی به میان نمی آوریم. مگر به درخواست شما...
  • شاخصگر: شاخصگرها به کلاس اجازه می دهند که با آنها مثل یک آرایه رفتار شود.
  • عملگر: عملگرها در واقع متدهایی هستند که در قالب یک علامت هستند. مثلا عملگر + . درسته! ما می توانیم خودمان یک یا چند عملگر برای کلاس خود طراحی کنیم.
  • وکیل: وکیل ها ارتباط تنگاتنگی با رویدادها دارند و اصلا رویدادها را با استفاده از وکیل ها می‌سازند. در این مورد هم در همین وبلاگ بسیار صحبت کرده ایم. وکیل ها را اگر بخواهیم خیلی ساده تعریف کنیم، متغیرهایی از نوع متد هستند!!

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

  • عمومی (public) : هر عضوی از کلاس که دارای این سطح از دسترسی باشد، این قابلیت را دارد که هر کلاس دیگری از این عضو استفاده کند. یعنی اگر از این کلاس، یک شیئ بسازید، می توانید از اعضای public استفاده کنید. به بیانی دیگر، اگر نام شیئ را نوشته و یک نقطه بگذارید، در لیست ظاهر شده، نام همان عضو public را خواهید دید.
  • خصوصی (private) : اعضای خصوصی فقط برای اعضای خود کلاس، قابل دستیابی هستند و از بیرون کلاس، قابل دستیابی نییستند.
  • محافظت شده (protected) : اگر یک کلاس دیگر از کلاس مورد نظر، ارث بری کند، اعضای محافظت شده، برای آن کلاسی که ارث بری کرده، قابل دسترسی هستند.

از حالا برای اینکه بهتر بتونیم مطالب رو متوجه بشیم، برنامه نویسی ها رو برای محیط Console انجام خواهیم داد. برای این کار از منوی File گزینه New سپس گزینه Project را انتخاب کرده و در پنجره باز شده، از زیر مجموعه #Visual C گزینه Windows را برگزینید و در کادر وسط، گزینه Console Application را انتخاب کنید. در قسمت Name یک نام مناسب برای پروژه انتخاب کرده و دکمه OK را بزنید.
برنامه زیر بصورت پیش فرض نوشته شده. البته قسمت

 Console.WriteLine("Hello World!); 

را خودم اضافه کرده ام. شما هم همین قسمت رو اضافه کنید و برنامه رو اجراکنید. اگر همه چیز بر وفق مراد باشه با یک پنجره سیاه رنگ مواجه خواهید شد. به این پنجره Console می گوییم.

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello world!");
        }
    }
}

شکل پنجره ی نتیجه برنامه بالا:


برنامه نویسی نیمه حرفه ای سی شارپ / درس چهاردهم

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

Console.ReadKey();

این دستور باعث می شود که برنامه منتظر بماند تا شما یک کلید از صفحه کلید را فشار دهید.
قسمت های عمومی (public) ، خصوصی (private) و محافت شده (protected) که در بالا مختصری درموردشون توضیح دادم، در همان بالا بصورت لینک هستند. به لینک آنها مراجعه کنید و در موردشون مطالعه کنید و سعی کنید کدهای آنها را در همین پروژه Console Application پیاده سازی کنید.
بعدا سعی کنید سطح دسترسی اعضای کلاس را تغییر دهید، سپس آزمایش کنید که این اعضا چگونه قابل دسترسی هستند. در چه حالت هایی می توان به این اعضا دسترسی داشت؟
حتما این کارهایی که گفتم را انجام دهید. این کار باعث می شود تا برایتان سوال مطرح شود.
هر سوالی داشتید بپرسید تا ان شاء الله پاسخ بدهم...
موفق باشید.

نظرات  (۰)

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

ارسال نظر

لطفا اگر می خواهید در بخش نظرات، کد برنامه مورد نظر خود را بنویسید، قسمت زیر (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="">
تجدید کد امنیتی