آموزش برنامه نویسی شی گرا در زبان سی شارپ (C#) – راهنمای ایجاد اولین پروژه سی شارپ در ویژوال استودیو کد (Visual Studio Code) و سیستم عامل ویندوز
شی گرایی یک الگو در برنامه نویسی است که هر برنامه نویسی باید آن را یاد بگیرد، چرا که به هر حال در جایی از زندگی کاریاش به شی گرایی نیاز پیدا خواهد کرد.
شی گرایی محبوبترین الگوی برنامه نویسی محسوب شده و به عنوان یک راه استاندارد برنامه نویسی آموزش داده میشود. این الگو از مفهومی به نام شی استفاده میکند.
در برنامه نویسی شی گرا، برنامه نویس نوع داده (data type) را در یک ساختار داده (data structure) مشخص کرده و همچنین توابعی که قرار است روی آن ساختار داده عملیاتی را انجام دهند، تعیین می کند.
از این ساختار داده با عنوان شی (Object) یاد میشود. هر شی شامل دادهها و توابع است. برنامه نویس میتواند بین اشیا ارتباط برقرار کند، برای مثال یک شی میتواند ویژگیهای خود را از یک شی دیگر به ارث ببرد.
در این برنامه نویسی از مفهومی انتزاعی به نام کلاس (Class) برای ساخت اشیایی که ویژگیهایی مشخص و دقیقتری داشته باشند استفاده میشود.
کلاسها را میتوان به عنوان یک دسته بندی در نظر گرفت، مثلاً کلاس ماشین یا کلاس سگ. هر کلاس شامل ویژگیهای مشخصی است. برای مثال میتوان برای کلاس ماشین، ویژگی رنگ را در نظر گرفت.
ویژگی یا همان attribute تعیین کننده این است که هر شی ایجاد شده از کلاس باید دارای چه مشخصاتی باشد. توجه داشته باشید که مقدار ویژگی در کلاس تعیین نمیشود.
در مثال ماشین که پیشتر ذکر شد، برای این کلاس یک ویژگی به نام رنگ مشخص کردیم، اما مقدار خاصی به آن اختصاص ندادیم. یعنی مشخص نکردیم که رنگ ماشین زرد است یا قرمز. اما اگر یک نمونه از کلاس ماشین ساخته شود، میتوان به ویژگی رنگ، مقدار قرمز را اختصاص داد.
در کلاسهای توابعی نیز وجود دارد که از آنها به نام متود (Method) یاد میشود. این متودها را میتوان در انواع مختلف و برای انجام وظایف مختلف تعریف کرد.
در شکل زیر میتوانید نمونهای از کلاس، شی، ویژگیها و متود را مشاهده کنید:
در برابر برنامه نویسی شی گرا، برنامه نویسی ساخت یافته قرار دارد. در برنامه نویسی ساخت یافته، توابعی تعریف میشوند تا
عملیاتی را روی دادهها انجام دهند. اما اشیا شامل هم داده و هم توابع هستند.
برنامه نویسی شی گرا مزایای زیادی نسبت به برنامه نویسی ساخت یافته دارد، از جمله:
· اجرای برنامه سریعتر و آسانتر است
· ساختار کلی برنامه یا نرم افزار واضحتر است
· پیاده سازی، ایجاد تغییر و رفع خطا در برنامه نویسی شی گرا آسانتر است
· میتوان اپلیکیشنهایی که قابلیت استفاده مجدد دارند را با نوشتن کد کمتر و اختصاص زمان کوتاهتری نوشت
در این مطلب قصد داریم زبانهای شی گرا را معرفی کرده و به طور اختصاصی به آموزش برنامه نویسی شی گرا با یکی از مهمترین زبانهای برنامه نویسی یعنی سی شارپ بپردازیم.
اگر درمورد شی گرایی اطلاعات کافی ندارید به شما توصیه میکنیم مقاله برنامه نویسی شی گرا (OOP) چیست؟ را در مجله فرادرس مطالعه کنید.
مفاهیم پایهای برنامه نویسی شی گرا
در مقدمه، مقداری با برنامه نویسی شی گرا و تفاوت آن با برنامه نویسی ساخت یافته آشنا شدید. برنامه نویسی شی گرا به طور کلی دارای مفاهیمی پایهای است که آنها را بیان خواهیم کرد.
· انتزاع (Abstraction):
فرآیند تعیین ویژگیها و رویهها
· کلاس (Class):
دسته بندی اشیا. کلاس ویژگیهای مشترک بین تمامی اشیای متعلق به یک دسته را مشخص میکند.
· کپسوله سازی (Encapsulation):
فرآیند ترکیب عناصر برای ساخت یک موجودیت. یک رویه نوعی از کپسوله سازی محسوب میشود چرا که مجموعهای از دستورات کامپیوتری را با یکدیگر ترکیب میکند.
· مخفی سازی اطلاعات (Information hiding):
فرآیند مخفی کردن جزئیات یک شی یا تابع. مخفی سازی اطلاعات یک تکنیک برنامه نویسی قوی محسوب میشود، چرا که پیچیدگی برنامه نویسی را کاهش میدهد.
· ارث بری (Inheritance):
روابط is-a بین کلاسها ایجاد میکند. is-a به معنای «هست یک» است. برای مثال فرض کنید یک کلاس شخص و یک کلاس معلم داشته باشیم. شی ساخته شده از کلاس معلم، ویژگیهای کلاس شخص را نیز دارد و میتوانیم بگوییم که معلم یکشخص هست.]
· واسط (Interface):
زبانها و کدهایی که اپلیکیشنها برای ارتباط با یکدیگر و نیز ارتباط با سخت افزار استفاده میکنند.
· شی (Object):
یک موجودیت خود شمول که شامل هر دوی دادهها و توابعی که برای دستکاری این دادهها استفاده میشوند، است.
· چند ریختی (Polymorphism):
توانایی یک زبان برنامه نویسی برای پردازش متفاوت اشیا بسته به نوع یا کلاس آنها.
· رویه (Procedure):
قسمتی از برنامه که یک وظیفه خاص را انجام میدهد.
زبانهای برنامه نویسی شی گرا
زبان برنامه نویسی شی گرا، یک زبان برنامه نویسی سطح بالا است که بر اساس یک مدل شی گرا طراحی شده است.
برای نوشتن برنامه نویسی بر پایه مفاهیم شی گرایی، برنامه نویس به یک زبان شی گرا نیاز دارد. بسیاری از زبانهای برنامه نویسی مدرن از مدل برنامه نویسی شی گرا پشتیبانی میکنند. بعضی از زبانهای قدیمی مانند پاسکال (Pascal) نیز، نسخههایی که از برنامه نویسی شی گرا پشتیبانی کند را ارائه کردهاند. مهمترین زبانهای برنامه نویسی شی گرا عبارتاند از:
· جاوا (Java)
· سی پلاس پلاس (C++)
· سی شارپ (C#)
· پایتون (Python)
· پی اچ پی (PHP)
شما میتوانید با کلیک روی لینکهای زیر به صفحات آموزش زبانهای برنامه نویسی شی گرا در فرادرس مراجعه کنید.
- آموزش برنامه نویسی شی گرا در Python (پایتون)
- آموزش پیشرفته C++ (شی گرایی در سی پلاس پلاس)
- آموزش مبانی برنامه نویسی شی گرا در جاوا - (رایگان)
- آموزش شی گرایی در سی شارپ (C#)
شما میتوانید با کلیک روی لینکهای زیر به صفحات آموزش زبانهای برنامه نویسی شی گرا در فرادرس مراجعه کنید.
معرفی زبان برنامه نویسی سی شارپ
از آنجایی که تمرکز این مطلب بر روی آموزش برنامه نویسی شی گرا به وسیله سی شارپ قرار دارد، به معرفی این زبان میپردازیم.
سی شارپ یک زبان برنامه نویسی مدرن است که ویژگیهای اصلی خود را از زبانهای قدیمیتری مانند سی (C) و سی پلاس پلاس به ارث برده است.
با استفاده از سی شارپ میتوان برنامههای قدرتمندی برای انجام وظایف مختلف نوشت. سی شارپ محبوبیت بالایی برای طراحی اپلیکیشنهای وب دارد. امکانات موجود در سی شارپ به شما کمک میکند تا بتوانید یک وب اپلیکیشن تعاملی بسازید.
با استفاده از سی شارپ میتوان اپلیکیشنهایی برای پلتفرمهای لینوکس، ویندوز، اندروید و آی او اس (iOS) طراحی کرد.
سی شارپ توسط مایکروسافت در سال ۲۰۰۰ و به عنوان یک پروژه متن باز تحت نظر بنیاد دات نت (.NET) توسعه داده شد. هدف از طراحی آن، توسعه زبانی بود که بتوان با آن اپلیکیشنهایی را طراحی کرد که ساخت آنها با زبانهای ویژوال بیسیک (Visual Basic) و سی پلاس پلاس مشکل است.
سی شارپ بهترین ویژگیهایی زبانهایی مانند جاوا (Java) و سی پلاس پلاس را در خود جای داده است. بنابراین برنامه نویسانی که به زبانهای سی، سی پلاس پلاس و جاوا مسلط هستند میتوانند به راحتی سی شارپ را یاد بگیرند.
آخرین نسخه سی شارپ، نسخه 9.0 است که در سال ۲۰۲۰ به همراه دات نت نسخه ۵ (.Net 5.0) توسط مایکروسافت عرضه شد.
برای تهیه و مشاهده مجموعه آموزشهای فرادرس در زمینه سی شارپ روی لینکهای زیر کلیک کنید.
مهمترین کاربردهای سی شارپ عبارتاند از:
· توسعه وب اپلیکیشن
· توسعه اپلیکیشنهای ویندوزی
· توسعه بازیها
مزایای سی شارپ
در میان زبانهای برنامه نویسی توسعه داده شده توسط مایکروسافت، سی شارپ محبوبترین است.
آمار و ارقام هم از این مسئله پشتیبانی میکند. برای مثال طبق نظرسنجی سال ۲۰۱۹ استک اور فلو (Stack Overflow که جامعهای برای برنامه نویسان و حل مشکلات آنها محسوب میشود)، ۹/۳۱ درصد توسعه دهندگان حرفهای سی شارپ را بر زبانهای دیگر ترجیح دادهاند. طبق همین نظرسنجی، سومین جامعه بزرگ برنامه نویسی مربوط به زبان سی شارپ است.
همچنین تنها در ایالات متحده آمریکا بیش از پنج هزار عنوان شغلی در رابطه با سی شارپ وجود دارد.
مهمترین مزایای سی شارپ عبارتاند از:
· زمان توسعه با آن کوتاهتر است
· یادگیری آن سریعتر انجام میشود
· مقیاسپذیری آن بسیار بالاست
· جامعه بزرگی از برنامه نویسان آن را پشتیبانی میکنند
بهترین راه درک کاربردهای سی شارپ، تهیه و مشاهده آموزشهای کاربردی و پروژه محور است.
- آموزش پروژه محور سی شارپ - ساخت نرم افزار شبکه اجتماعی
- آموزش استفاده از وب سرویس ها در سی شارپ
- آموزش پروژه محور سی شارپ (C#) – پیاده سازی سیستم نوبت دهی
- آموزش پروژه محور سی شارپ - پیاده سازی سیستم صدور انواع قبض
چه پیشنیازهایی برای یادگیری سی شارپ وجود دارد؟
از آنجایی که سی شارپ بر پایه زبانهای سی، سی پلاس پلاس و جاوا ساخته شده است، یادگیری سی شارپ برای برنامه نویسان این سه زبان بسیار لذت بخش و مفرح خواهد بود.
اما اگر با این سه زبان کار نکردهاید، حداقل باید با مفاهیم پایهای برنامه نویسی و طراحی الگوریتم آشنا باشید. درک مفاهیم شی گرایی نیز برای یادگیری سی شارپ بسیار مهم است.
- آموزش اصول و مبانی برنامه نویسی - (رایگان)
- آموزش زبان برنامه نویسی سی
- آموزش زبان برنامه نویسی سی پلاس پلاس
- آموزش برنامه نویسی جاوا
ابزار موردنیاز برای برنامه نویسی به زبان سی شارپ
در این قسمت درباره ابزارهای مورد نیاز برنامه نویسی سی شارپ بحث میکنیم. پیشتر ذکر کردیم که سی شارپ بخشی از چارچوب نرم افزاری دات نت است. بنابراین نصب این چارچوب نرم افزاری برای برنامه نویسی به زبان سی شارپ ضروریست.
از طرفی، برنامه نویسی به زبان سی شارپ باید در یک محیط یکپارچه توسعه (Integrated Development Environment) یا همان IDE صورت بگیرد.
چارچوب نرم افزاری دات نت (.NET Framework)
دات نت پلتفرمی است که توسط مایکروسافت توسعه داده شده است. این پلتفرم برای طراحی اپلیکیشنهای زیر به کار میرود:
· اپلیکیشنهای ویندوز
· وب اپلیکیشنها
· وب سرویسها
دات نت از کتابخانههای مختلفی تشکیل شده است که زبانهایی مانند سی پلاس پلاس و سی شارپ میتوانند از آنها استفاده کنند.
محبوبترین IDEها برای برنامه نویسی سی شارپ عبارتاند از:
· ویژوال استودیو (Visual Studio):
محصولی از شرکت مایکروسافت که بیش از سی زبان برنامه نویسی را پشتبانی کرده و میتوان به وسیله آن به توسعه اپلیکیشنهای وب، موبایل و ویندوز پرداخت.
· ویژوال استودیو کد (Visual Studio Code):
یکی از پرکاربردترین IDEها برای برنامه نویسی به زبان سی شارپ که محصول شرکت مایکروسافت است. از مزیتهای این IDE میتوان به حجم کم و متن باز بودن آن اشاره کرد.
· Eclipse acute:
IDE معروف اکلیپس یک پلاگین برای برنامه نویسی به زبان سی شارپ عرضه کرده است.
· رایدر (JetBrains Rider):
یک IDE برای توسعه محصولات دات نت که با پتلفرم IntelliJ سازگار است.
نصب پیشنیازهای برنامه نویسی به زبان سی شارپ
در این آموزش از IDE قدرتمند مایکروسافت یعنی ویژوال استودیو کد برای برنامه نویسی به زبان سی شارپ استفاده خواهیم کرد.
آموزش را به صورت قدم به قدم با نصب ابزار مناسب و در نهایت نوشتن و اجرای کد دنبال خواهیم کرد.
نصب .NET
برای نصب نسخه حال حاضر دات نت یعنی نسخه پنجم، مراحل زیر را دنبال کنید.
ابتدا به لینک زیر برای دانلود دات نت مراجعه کنید.
باید ورژنی که در تصویر زیر مشخص شده است را انتخاب کنید:
پس از کلیک روی این لینک، به صفحه زیر هدایت خواهید شد که باید در آن نسخه دات نت متناسب با سیستم عامل خود و معماری آن را انتخاب کنید:
سپس به صفحه زیر هدایت شده و دانلود شما باید آغاز شده باشد. در غیر این صورت باید رو لینک click here to download manually کلیک کنید تا دانلود شما آغاز شود:
با اجرای فایل نصب دات نت، تنها باید روی دکمه install کلیک کرده و منتظر بمانید تا عملیات نصب به اتمام برسد:
مشاهده پیغام The installation was successful به معنای موفقیت آمیز بودن عملیات نصب است خواهد بود.
نصب ویژوال استودیو کد
برای نصب ویژوال استودیو کد، مراحل زیر را دنبال کنید.
ابتدا روی لینک زیر برای دانلود ویژوال استودیو کد کلیک کنید.
سپس به صفحه زیر هدایت خواهید شد. از آنجایی که آموزش ما برای سیستم عامل ویندوز انجام میشود، دانلود ویژوال استودیو کد برای ویندوز را انتخاب کنید:
پس از دانلود، میتوانید مراحل نصب را به راحتی دنبال کنید. اگر میخواهید بیشتر با نحوه نصب و استفاده از ویژوال استودیو کد آشنا شوید، مقاله آموزش Visual Studio Code — از نصب تا اجرای اولین پروژه در VS Code را در مجله فرادرس مطالعه کنید.
نصب افزونههای سی شارپ در ویژوال استودیو کد
حال باید به نصب افزونه سی شارپ در ویژوال استودیو کد بپردازید تا بتوانید به این زبان برنامه بنویسید.
در منوی سمت چپ ویژوال استودیو کد، روی گزینه Extensions کلیک کنید:
حال باید در قسمت مربوط به جستجو، C# را جستجو کنید تا افزونههای مربوط به آن برای شما به نمایش دربیایند. افزونه سی شارپ را انتخاب و روی دکمه Install کلیک کنید:
برای افزونه C# Extensions نیز همین کار را انجام دهید و آن را نصب کنید. با نصب افزونه C# Extensions میتوانید به راحتی به گزینههایی نظیر ایجاد کلاس جدید دسترسی داشته باشید.
ایجاد پروژه سی شارپ در ویژوال استودیو کد
حال اولین پروژه سی شارپ خود را در ویژوال استودیو کد ایجاد خواهیم کرد.
ویژوال استودیو کد را باز کرده و در منوی سمت چپ روی گزینه Explorer کلیک کنید. سپس روی دکمه Open Folder کلیک کنید:
پوشهای که میخواهید پروژه شما در آن ایجاد شود را انتخاب کنید. در این آموزش نام پروژه خود را HelloWorld خواهیم گذاشت. پس از انتخاب نام، روی دکمه Select Folder کلیک کنید:
پروژه شما با موفقیت ایجاد شد و میتونید آن را در قسمت Explorer مشاهده کنید. حال در منوی بالایی ویژوال استودیو کد، روی گزینه Terminal کلیک کرده و New Terminal را انتخاب کنید:
در ترمینال، دستور dotnet new console را اجرا کنید. با اجرای این دستور فایل ProjectName.csproj ایجاد خواهد شد که در آن ProjectName همان نام پروژه ما است. همچنین فایل Program.cs و پوشه obj که شامل تمامی وابستگیهای لازم است ایجاد خواهند شد:
فایل Program.cs شامل کد سی شارپ است:
این کد قرار است عبارت Hello World! را در خروجی نشان دهد. دستور Console.WriteLine() برای همین منظور استفاده میشود.
همچنین تابعی به نام Main در کد مشاهده میکنید که در واقع متود اصلی برنامه است و هر وظیفهای که برنامه ما بخواهد انجام دهد، باید در متود Main مشخص شود. کد مربوط به این وظایف را میتوان در قالب کلاسها و متودهای دیگری نوشت، اما در نهایت باید اشیای ساخته شده از کلاسها در متود Main قرار بگیرند تا بتوان برنامه را اجرا کرد.
عبارتی به نام namespace را در کد مشاهده میکنید. همانطور که متودهای مختلف، در یک کلاس کنار هم قرار میگیرند، کلاسها نیز تحت عنوان موجودیتی به نام namespace در کنار یکدیگر قرار میگیرند.
اولین خط کد نیز عبارت using system را در بر دارد. با استفاده از واژه کلیدی using در ابتدای کدنویسی میتوان سایر namespaceها را به کد خود اضافه کرد تا از کلاسهای موجود در آن namespace بتوان بهرهمند شد.
حال میتوانیم پروژه را با تایپ دستور dotnet run در ترمینال، اجرا کنیم:
همانطور که در تصویر بالا مشاهده میکنید، عبارت Hello World! در خروجی نمایش داده شده است.
استفاده از مفاهیم شی گرایی در سی شارپ
پروژهای به نام oop ایجاد کنید. مراحل ایجاد پروژه را مانند قبل دنبال کنید.
حال به فایل program.cs برای ویرایش کد مراجعه کنید. همانطور که پیشتر ذکر کردیم، در یک namespace میتواند کلاسهای مختلفی را تعریف کرد. فایل شما در حال حاضر دارای یک کلاس اصلی به نام Program است. کلاس دیگری به نام Book را مطابق زیر به کدهای فایل program.cs اضافه کنید:
همانطور که میبینید کلاس Book دارای دو ویژگی به نامهای author و title است. در واقع کلاسی به نام کتاب ایجاد کردهایم که دارای دو ویژگی نام نویسنده و عنوان کتاب است.
در این کلاس دو متود تعریف شده است. یکی از آنها دقیقاً هم نام با کلاس است و به آن متود سازنده یا constructor میگویند.
با تعریف این متود میتوان هنگام ساخت اشیا، به آنها مقدار دهی نیز کرد.
فرم کلی تعریف متود در سی شارپ به این صورت است که ابتدا سطح دسترسی آن را مشخص میکنیم. سطوح دسترسی یا Access Modifierها انواع مختلفی دارند و مشخص کننده سطح دسترسی اعضای سایر کلاسها به متودهای کلاس فعلی هستند. Modifierها عبارتاند از:
public: متودها و اعضای این کلاس توسط اشیای ساخته شده توسط سایر کلاسها قابل دسترسی هستند.
Private: دسترسی به متودهای یک کلاس تنها برای اعضای همان کلاس فراهم است. یعنی تنها اشیای ساخته شده از روی همان کلاس میتوانند به متودها دسترسی داشته باشند.
Protected: متودها تنها توسط اعضای همان کلاس و زیرکلاسهای آن کلاس
پس از مشخص کردن این موضوع، باید این که قرار است تابع چیزی را بازگرداند یا نه را مشخص کنیم.
اگر قرار است تابع چیزی را برگرداند (مثلاً یک رشته) تابع نیز از نوع String تعریف میشود. اما اگر قرار باشد تنها یک وظیفه تعیین شده را انجام داده و چیزی را بازنگرداند، تابع را از نوع Void تعریف میکنیم.
در نظر داشته باشید که تابع سازنده را همواره باید از نوع public و بدون ذکر یک نوع خاص یا حتی عبارت void پیش از نام آن تعریف کنید. درست مانند چیزی که در مثال ما آمده است:
در ادامه نیز نام تابع را تعیین کرده و اگر قرار است تابع دارای ورودی باش، آنها را در بین دو پرانتز تعریف میکنیم.
متود printBookDetails() دیگر متود این کلاس است که تنها باید عنوان کتاب و نویسنده آن را چاپ کند و چیزی را باز نمیگرداند، بنابراین از نوع Void تعریف شده است:
حال باید متود Main را ویرایش کنیم و یک شی از روی کلاس Book در آن بسازیم. همانطور که پیشتر ذکر کردیم، ساخت اشیا و فراخوانی توابع مورد نظر باید در متود اصلی یا Main انجام شود تا بتوان برنامه را اجرا کرد. بنابراین کدهای زیر را در تابع Main مینویسیم:
برای تعریف شی، ابتدا نام کلاس را نوشته، سپس نام شی را نوشته و یک مساوی میگذاریم. در آن طرف تساوی کلمه کلیدی new را نوشته و به دنبال آن دوباره نام کلاس را به علاوه دو پرانتز باز و بسته اضافه میکنیم. ورودیهای متود را نیز میتوانیم در همینجا مشخص کنیم، چرا که کلاس Book دارای یک متود سازنده است.
سپس متود printBookDetails() را فراخوانی میکنیم. برای این کار نام شی را نوشته و یک نقطه میگذاریم. به دنبال آن نام متود را ذکر میکنیم.
شی دیگری به نام book2 نوشته و همین مراحل را برای این شی نیز دنبال میکنیم.
با نوشتن دستور dotnet run در ترمینال برنامه خود را اجرا کرده و نتیجه را در خروجی مشاهده میکنیم:
در واقع با نوشتن این کد، دو عضو به نامهای book1 و book2 به کلاس Book اضافه کردیم.
در مورد شی گرایی و سی شارپ بیشتر یاد بگیرید
در این مطلب مفاهیم پایهای شی گرایی پوشش داده شد و به کمک زبان سی شارپ توانستیم نمونهی از کاربرد شی گرایی را در عمل مشاهده کنیم.
تعریف کلاس، شی و متود در سی شارپ نیز در این مطلب آموزش داده شد.
اما اگر میخواهید بیشتر درباره سی شارپ و شی گرایی یاد بگیرید، آموزشهای سایت فرادرس را از دست ندهید.
منابع
https://www.educative.io/blog/object-oriented-programming
https://www.w3schools.com/cpp/cpp_oop.asp
https://www.webopedia.com/definitions/object-oriented-programming-oop/
https://stackify.com/what-is-c-used-for/
https://www.tutorialkart.com/c-sharp-tutorial/create-csharp-project-with-visual-studio-code/
https://www.tutorialkart.com/c-sharp-tutorial/c-sharp-class/
مطلبی دیگر از این انتشارات
توابع Immutable و ارتباط آن با val در کاتلین
مطلبی دیگر از این انتشارات
چگونه یک رادار درست کنیم!
مطلبی دیگر از این انتشارات
برنامه نویسی چیست؟