تکین وب | آموزش برنامه نویسی
تکین وب | آموزش برنامه نویسی

مقدمه ای بر زبان C#.NET

دسته بندی : آموزش #C
۱۶ تیر ۱۳۹۵

Framework NET. چیست؟
Framework NET. یک چارچوب است که توسط شرکت مایکروسافت براي توسعه انواع نرم افزارها علی الخصوص ویندوز طراحی شد.
Framework NET. همچنین می تواند براي توسعه نرم افزارهاي تحت وب مورد استفاده قرار بگیرد.
تكنولوژي .net و نسخه هاي studio visual مایكروسافت نوآوري هاي عمده اي براي برنامه نویسان و سازندگان نرم افزار محسوب مي شوند این نسخه ها پیشرفتهاي چشمگیري در بهره وري. امنیت. اعتماد پذیري و قابلیت ارئه deployability را با خود همرا داشت.
پلتفرم یا محیط اجرایي: هر برنامه اي براي مهیا كردن خدمات زمان اجراي خود به محیط اجرا و كتابخانه هاي خود متكي است مثلا برنامه هایي كه با زبان ویژوال بیسك ۶٫۰ نوشته مي شوند براي اجرا درست به runtime basic visual یا نرم افزارهاي جاوا براي اجرا از machine virtual java استفاده مي كنند و چارچوب دات نت یك كتابخانه تقریبا كامل براي ایجاد برنامه هاي كاربردي براي اجرا روي پلتفرمي به نامCLR یا runtime language common است. محیط اجرایي CLR سرویسهاي اصلي مربوط به یك پلتفرم مانند مدیریت حافظه و امنیت را فراهم مي كند. CLR یكي از بخشهاي مركزي دات نت فریم ورك است كه برنامه نوشته شده تحت دات نت را به اجرا در مي آورد برنامه در دو مرحله به دستورالعملهاي ماشین كامپایل مي شود ابتدا برنامه به زبان میاني ترجمه و سپس كامپایلر دیگري آن را به كد ماشین و پلتفرم مورد نظر كامپایل مي كند و در نهایت برنامه با توجه به ماشین اجرا مي شود استفاده از دو كامپایلر سبب به دست آوردن قابلیتهاي مختلف از جمله قابلیت انتقال و حمل بین سیستم عاملها و زبانهاي دیگر و مدیریت است چارچوب دات نت همانقدر كه در ایجاد برنامه هاي كاربردي ویندوز قدرت و سادگي دارد در ساخت برنامه هاي وب نیز كاراست به طوري كه این چارچوب تبدیل به یكي از پرطرفدارترین تكنولوژي هاي براي برنامه هاي وب شده است (net.asp) وقتي كدي را از هر زباني كه چار چوب دات نت را پشتیباني مي كند كامپایل كنید به چیزي به نام MSIL یا intermediate Microsoft language یا زبان میانه مایكروسافت تبدیل مي شود MSIL باینري است اما كد ماشین نیست بلكه فرمتي است كه از محیط برنامه نویسي مستقل است و مي توان از آن در هر ماشین دیگري كه در حال اجراي چارچوب دات نت است استفاده كرد چرا كه در درون چارچوب .net كامپایلري به نامcompiler time in just یا jit وجود دارد و كد زبان میانه را به كد ماشین اختصاصي براي سخت افزار و سیستم عامل همان ماشین تبدیل مي كند. دات نت ابزار اشكال زداي مجتمعي را فراهم كرده است و هر زباني كه این چارچوب را هدف داشته باشد فقط با یك اشكال زداي واحد بررسي مي شود حتي اگر قسمتي از برنامه ي شما VB بوده و قسمت دیگر آن سي شارپ یا هر زبان دیگري بر پایه .net چارچوب دات نت فقط پاسخگوي ویندوز نیست و مي تواند به هر سیستم عامل دیگري وارد شود یعني به آساني مي توانید به قابلیت چند محیطي یا platform cross دست یابید و اكنون مایكروسافت نسخه یك دات نت را براي سیستم عاملهاي بر پایه یونیكس مانند FreeBSD و همچینین X OS Mac ارایه کرده است ولي فقط براي آموزش و لاغیر. دات نت بسیاري از عملیات بنیادي را كه به ساخت آنها در زبانهاي برنامه نویسي پیشین عادت كرده بودید را به صورت فشرده و آماده دارد. عمل كامپایل به كد محلي از طریق ابزار كامپایر درست به موقع انجام مي شود.اگر نسخه مورد نیاز از .framework net نصب شده باشد آن پلتفرم مي تواند هر برنامه دات نت را اجرا كند و هر زباني كه بتواند به MSIL تبدیل شود زبان سازگار با دات نت نامیده مي شود مثل net.#c visual و visual net.basic و Delphi و python وtalk small و…

حالا سی شارپ چیه؟
#C یا CSharp یک زبان برنامه نویسی شی گرا است که توسط شرکت مایکروسافت ساخته شده است.اگر با این دو زبان آشنایی دارید این شانس را دارید زبان سی شارپ را Java و++C ترکیبی از قابلیتهاي خوب راحت یاد بگیرید. این زبان به قدري راحت است که هم کسانی که قبلا برنامه نویسی نکرده اند و هم دانش آموزان می توانند راحت آن را یاد بگیرند .از سی شارپ می توان براي ساخت برنامه هاي تحت ویندوز ،تحت وب ،وب سرویس ها ،برنامه هاي موبایل و بازي ها استفاده کرد .می توان به جاي واژه ویژوال سی شارپ از کلمه سی شارپ استفاده کرد اما ویژوال سی شارپ به معناي استفاده همزمان از سی شارپ و محیط گرافیکی ویژوال استودیو
می باشد.زبان برنامه نویسی سی شارپ تنها زبانی است که مخصوصا براي دات نت فریم ورك طراحی شده است .سی شارپ از کتابخانه کلاس دات نت که شامل مجموعه بزرگی از اجزا از قبل ساخته شده است استفاده می کند.این اجزا به ساخت هر چه سریعتر برنامه ها کمک می کنند.سی شارپ یک برنامه بسیار قدرتمند و شی گرا است و با آن می توان برنامه هایی با قابلیت مدیریت بیشتر و درك آسان ایجاد کرد .ساختار این زبان نسبت به زبانهاي دیگر بسیار آسان و قابل فهم است.
براي اجراي یک برنامه سی شارپ ابتدا باید دات نت فریم ورك نصب شود .سی شارپ یکی از زبانهایی است که از پشتیبانی میکند. همچنین یک محیط توسعه XNA و Silverlight ,NET.ASP تکنولوژي هاي دیگر دات نت مانند یکپارچه دارد که ان نیز به نوبه خود داراي ابزارهاي مفیدي است که به شما در کدنویسی در سی شارپ کمک می کند . این زبان به طور دائم توسط مایکروسافت به روز شده و ویژگیهاي جدیدي به آن اضافه می شود .سی شارپ یکی از بهترین زبانهاي برنامه نویسی دات نت است.
شما می توانید یک برنامه سی شارپ را با استفاده از notepadا یا هر برنامه ویرایشگر متن دیگر بنویسید و با استفاده از کامپایلر سی شارپ از آن استفاده کنید، اما برنامه این کار بسیار سخت است چون اگر برنامه شما داراي خطا باشد خطایابی آن سخت می شود.توجه کنید که کلمه ویژوال استودیو هم به ویژوال استودیو و هم به ویژوال سی شارپ اشاره دارد.توصیه می کنیم که از محیط ویژوال استودیو براي ساخت برنامه استفاده کنید چون این محیط داراي ویژگی هاي زیادي براي کمک به شما جهت توسعه برنامه هاي سی شارپ می باشد.تعداد زیادي از پردازش ها که وقت شما را هدر می دهند به صورت خودکار توسط ویژوال استودیو انجام می شوند.

برنامه نویسی شی گرا (Programming Oriented Object)
برنامه نویسی شیءگرا ( Programming Oriented Object مخفف OOP) یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی تشکیل دهنده برنامه ها در آنها اشیا هستند. اشیاء صورت های مجرد از ماهیت های مطرح در مسئله هستند که دارایوضعیت (درونی) و همچنین عملیات بر روی دادهها )وضعیت برونی( میباشند. این نوع نگرش دارای مزایای بسیاری از جمله مدیریت پیچیدگی وهزینه نگهداری کمتری است. زبان های برنامه نویسی شیءگرا، زبان ها یی هستند که در آن برنامه نویس می تواند اشیاء مختلفی را تعریف نماید و از اشیاء تولید شده استفاده نماید. امروزه اکثر زبان های دستوری برنامه نویسی از فنون شیء گرایی پشتیبانی می کنند. زبانهایی مانند جاوا، ++C، سی شارپ از جمله زبانهای شیءگرا هستند. حتی بسیاری از زبانهای روال گونه که ساختار برنامه ها در آنها بلوک هایی با نام پروسیجر است امروزه از فنون شیء گرایی نیز پشتبانی میکنند. زبانهای ++C و PHP از این جمله هستند. هر شیء یک سری خصوصیت و قابلیت دارد، که اصطلاحا Properties و Methodsخوانده می شوند. در این روش از برنامه نویسی دید برنامه نویس به سیستم دید شخصی است که سعی می نماید به پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها سیستم را تولید نماید.

در برنامه نویسی شی گرا (OOP) بخش های برنامه نویسی بصورت شی هایی در نظر گرفته می شوند که با هم در ارتباط هستند. و
در این رابطه اقدام به تعریف کلاس هایی می کنند که اشیاء بر مبنای آن تعریف می شوند.

کلاس (Class) چیست؟
بصورت ساده باید بگویم که کلاس (Class) در واقع یک الگو و یک قالب کلی برای تعریف کردن اشیاء است. بعبارت دیگر، کلاس ها در واقع موجودیتی ندارند و خود آنها شی آبجکت (Object ) نیستند، بلکه در واقع یک الگو هستند که اشیاء بر اساس آن ساخته می شوند.
عنوان مثال دیگر، شما می توانید کلاسی به نام “اتومبیل” را در نظر بگیرید! کلاس اتومبیل تعیین کننده یک وسیله نقلیه است که دارای برخی ویژگی ها است ( مثلا چرخ دارد، بر روی زمین حرکت می کند، جعبه دنده دارد، فرمان دارد، موتور دارد و …) پس همانطور که گفته شد، کلاس ها در واقع موجودیتی ندارند، بلکه یک الگو هستند که تعریف کننده اشیاء است .

شی یا آبجکت (Object) چیست؟
شی یا آبجکت (Object) در واقع یک موجودیت است (چیزی که وجود دارد نه فقط یک تعریف) که از روی کلاس (الگوی تعریف شده) ساخته می شود و دارای ویژگی های مخصوص به خودش است. مثلا: هر نوع خودرود، یک شی (Object) است که از روی کلاس اتومبیل ساخته شده است و دارای ویژگی هایی است. مثلا پورشه یک آبجکت از کلاس اتومبیل است که دارای ویژگی هایی است (برخی از ویژگی ها: یک نوع اتومبیل سواری است، دنده اتوماتیک است و …) همچنین ولوو و اسکانیا هم آبجکت هایی از کلاس اتومبیل هستند که دارای ویژگی های دیگری هستند (مثلا نوع ماشین باری است) بنابراین آبجکت یا شی (Object) در واقع یک موجودیت است که از روی کلاس (که یک الگوی تعریف کننده است) ساخته می شود.

نمونه (instance) چیست؟
نمونه یا instance از جمله کلماتی است که باعث سردرگمی مخاطبینی می شود که تازه به وادی برنامه نویسی شی گرا (OOP) پیوسته اند. هر شی (Object) از روی یک کلاس ساخته می شود و در واقع نمایانگر یک کلاس است و به زبان دیگر یک نمونه (instance)از یک کلاس است. در واقع شما هنگامی که یک آبجکت را از روی یک کلاس می سازید، در واقع یک نمونه از کلاس را به وجود آورده اید )ایجاد کرده اید(. در دنیای برنامه نویسی شی گرا (Programming Oriented Object) نیز همین موضوع وجود دارد و هر کلاس دارای یک سری ویژگی (attribute) است که شی های آن نیز دارای آن ویژگی با با یک سری مقادیر است.
در کلاس اتومبیل ها می توانید دو شی با ویژگی های متفاوت داشت مثلا اتومبیل شماره یک که یک بنز است )یک ویژگی( رنگ آن مشکی است )یک ویژگی( و … و اتومبیل شماره دو مثلا یک بی ام دابلیو است )یک ویژگی( به رنگ نقره ای )ویژگی دیگر( و…

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

ویژگی های مهم برنامه نویسی شیئ گرا
۱٫کپسوله سازی
(Encapsulation)
همانطوری که میدانید تمام برنامه ها از دو عنصور اصلی تشکیل می شوند : عبارت برنامه ( کد ) و داده ها . کد بخشی از برنامه است که عملیات را اجرا می کند و داده ها اطلاعاتی است که توسط این عملیات تحت تاثیر قرارگرفته . کپسوله سازی یک مکانیزم برنامه نویسی است که کد و داده را با هم در یک جا قرار داده و هر دو را از استفاده نادرست وتداخل خارجی ایمن نگه می دارد. در یک زبان شی گرا . کد و داده ممکن است باهم در چنین روشی محدود شوند که یک جعبه سیاه خود ظرف را ایجاد می کند . درون جعبه تمام داده های مورد نیلز و کد است . هنگامی که در این روش کر و داده ها با هم پیوند برقرار می کنند . یک شی به وجود می آید . به عبارت دیگر . یک شی ابزاری است که از کپسوله سازی پشتیبانی می کند . درون یک شی ) کد و داده ها ( یا هر دو ممکن است برای آن شی محلی ) خصوصی / private ( یا عمومی ) public ( باشند . کد یا داده های محلی فقط توسط بخش دیگری از شی شناخته شده و قابل دست یابی هستند . به همین دلیل کد یا داده محلی برای قطعه ای از برنامه که خاج از شی است . قابل دسترس نمی باشد . هنگامی که کد یا داده ها عمومی هستند بخشهای دیگری از برنامه ممکن است به آنها دسترسی داشته باشند حتی اگر درون شی تعریف شده باشند بخش های عمومی یک شی برای ارائه یک ارتباط کنترل شده با عناصر محلی شی مورد استفاده قرار می گیرند . هر بخش یا هر کاربر باید بتواند با سیستم کار کند و نتیجه بگیرد بدون آنکه درگیر پیچیدگی های داخل سیستم شود. در مثال بالا که در باره متدی برای محاسبه مساحت یک مستطیل بود، ما کاری نداریم که در داخل متد محاسبه را چگونه انجام داده اند، مهم این است که ما دو عدد را به متد بدهیم و نتیجه را درست به ما بدهد.
این روش چند خوبی دارد:
اول اینکه برنامه نویس به راحتی می تواند روش برنامه نویسی را در متد خود تغییر دهد بدون اینکه نگران ایجاد اختلال در کار بقیه بخش های برنامه و یا سایر کاربران باشد.
دوم اینکه دسترسی ها به کدهای برنامه را کاملا می توان کنترل کرد و کابران فقط از طریق رابطهای تعریف شده به برنامه دسترسی دارند.

۲٫
چند ریختی (polymorphism)
چند ریختی کمیتی است که به یک رابط امکان می دهد تا برای یک کلاس عمومی از عملیات مورد استفاده قرار گیرد . عمل خاص توسط ذات حقیقی شی تعیین می شود . یک مثال ساده از چند ریختی در فرمان اتومبیل است . فرمان اتومبیل برای تمام اتومبیل ها بدون توجه به مکانیزمی که مورد استفاده قرار می دهند یکسان است . فرممان برای اتومبیلی که به صورت دستی کار میکند یا با نیروی برق یا هر چیز دیگری عمل یکسانی را انجام میدهد . بنابراین بعد از اینکه شما چگونگی عمل کردن فرمان را یاد گرفتید میتوانید هر نوع اتومبیلی را برانید . همین هدف نیز می تواند در برنامه نویسی اعمال شود . به عنوان مثال یک پشته ) لیستی که در آن اولین ورودی آخرین خروجی است مثل تعدادی سکه که روی هم قرار می گیرند ( را در نظر بگیرید. ممکن است برنامهای داشته باشید که نیاز به سه نوع مختلف پشته داشته باشد یک پشته برای مقادیر اعداد صحیح . یک پشته برای اعداد اعشاری و یک پشته برای کاراکترها مورد استفاده قرار گیرد . در این صورت الگوریتمی که هر سه پشته را پیاده می کند یکسان است حتی اگر داده هایی که در آنها ذخیره می شود متفاوت باشند . در یک زبان غیر شی گرا نیاز خواهید داشت تا سه نوع مختلف از روال ها ی پشته را ایجاد کرده . به هر کدام نام متفاوتی قرار داده و برای هر کدام از روابط خاص خودش استفاده کنید . به دلیل وجود چند ریختی در ++C می توانید یک مجموعه روال عمومی از پشته ایجاد کرده و آن را برای هر سه نوع به کار ببرید . با این روش بعد از اینکه استفاده از یک پشته را یاد گرفتید می توانید همه انواع آن را به کار ببرید .
به طور کلی مفهوم چند ریختی اغلب توسط عبارت ” یک رابط. چندین روش ” بیان می شود . این بدین معنی است که امکان طراحی یک رابط عمومی برای گروهی از عملیات مرتبط وجود دارد . چند ریختی با اعمال رابط یکسانی که برای تعیین یک کلاس عمومی مورد استفاده قرار می گیرد . به کاهش پیچیدگی کمک می کند .
این است وظیفه کامپایلر تا فعالیت خاصی ( مثل متد) را برای اعمال روی آن انتخاب کند . شما به عنوان برنامه نویس نیاز ندارید تا این انتخاب را انجام دهید شما فقط نیاز دارید رابط عمومی را به خاطر سپرده و استفاده کنید . زبان های برنامه نویسی شی گرای اولیه چون به صورت مفسری بودند از چند ریختی در زمان اجرا پشتیبانی می کردند . ولی چون ++C کامپایلری است پس هم در زمان اجرا و هم زمان کامپایل از چند ریختی پشتیبانی می کند.

۳٫
وراثت(Inheritance)
وراثت . عملی است که یک شی می تواند مشخصه های شی دیگری را بدست آورد . به همین دلیل از مفهوم دسته بندی سلسله مراتبی پشتیبانی می کند . اگر در رابطه با وراثت بیشتر فکر کنید اطلاعات بیشتری راجع به دسته بندی سلسله مراتبی ) از بالا به پایین ( بدست خواهید آورد . به عنوان مثال سیب قرمز بخشی از دسته بندی سیب که آن هم بخشی از کلاس میوه هاست که آن هم در کلاس بزرگتری به نام غذا قرار دارد . کلاس غذا دارای مشخصات اصلی ) خوراکی . پروتئین و غیره ( است که به طور منطقی به زیر کلاس های غذا اعمال می شود . علاوی بر این مشخصات کلاس میوه دارای مشخصه های ) آبدار. شیرین و غیره ( است که آن
را از سایر غذا ها متمایز می کند . کلاس سیب نیز مشخصه های خاصی را برای یک سیب تعریف می کند که عبارتند از : رسیدن روی درخت و غیره . یک سیب قرمز تمام خصوصیات کلاسهای بالاتر را به ارث می برد و فقط مشخصه هایی که منحصر به فرد هستند را تعریف خواهیم کرد .بدون استفاده از وراثت هرشی به طور مجزا بایستی تمام مشخصه های خودش را تعریف کند .با استفاده از وراثت شی فقط نیاز به تعریف مشخصه هایی دارد که در داخل آن کلاس منحصر به فرد هستند . این سبب می شود که صفات عمومی را از پدرشان به ارث ببرند .بنابراین . مکانیزم وراثت به یک شی امکان میدهد تا نمونه خاصا از یک حالت عمومی تر باشد . از روی هر کلاس (Class) می توان کلاس های دیگری ساخت که تمام ویژگی ها را از کلاس پدر (Parent) به ارث ببرد که به کلاس جدید، کلاس فرزند (Class Child) می گوییم.
روشن است که در کلاس فرزند می توان ویژگی هایی تعریف کرد که مختص به خود باشد اما در کل کلاس فرزند(Child) ، نوعی از کلاس پدر (Parent) است.
بعنوان مثال در کلاس اتومبیل، می توانیم کلاس های فرزندی به شرح زیر تعریف کرد:
کلاس اتومبیل های مسابقه ای: اتومبیل هایی که دارای چهار چرخ، شتاب و سرعت بسیار بالا، آیروداینامیک و … است.
کلاس اتومبیل های باری: اتومبیل هایی که دارای قدرت بالا، فضا برای حمل بار، مثلا ۸ چرخ و … است.
کلاس اتومبیل های عمومی: اتومبیل هایی که دارای فضای بیشتر برای حمل مسافر است، کشیده است، دو درب برای ورود و خروج دارد و …

۴٫نوع داده انتزاعی یا تجریدی (Abstract Data)
در زبان های شی گرا انواع داده ای مختلفی مانند …,char,int تعریف شده اند و می توان از آنها در طول برنامه استفاده نمود اما نوع داده انتزاعی نوعی است که صرفا توسط خود کاربر تعریف می شود و نوع خاصی را شامل نمی شود و با ایجاد یک شی از آن نوع داده انتزاعی یا تجریدی می توان از داده ها و روال ها و رخدادهای درون آن بهره گرفت. از این دسته می توان به struct ,Class اشاره نمود که صدها و هزاران نوع از آنها را می توان با داده ها و روالهای مختلف تعریف نمود و با استفاده از یک یا چند شی آنها را در برنامه پیاده سازی کرد.

 

درباره ی سجاد

دانشجوی کامپیوترم اهل اصفهان به همین سادگی :) :)

دیدگاه ها

دیدگاه خود را به ما بگویید.

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