شی‌گرایی در سی‌شارپ

زمان تقریبی موردنیاز برای مطالعه: ۱۴ دقیقه

بررسی تفکر شی‌گرایی

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

شی‌گرایی در کوتاه‌ترین تعریف خود شیوه‌ای است که هر جزء نرم‌افزار را یک شی در نظر می‌گیرد.

برای مثال این شی در ویندوز می‌تواند یک پنجره، یک فولدر، نشانگر فلش ماوس، تسک بار و یا هر جزء دیگری باشد؛ هیچ محدودیتی برای شی بودن اجزا وجود ندارد و این همان دلیلی است که شی‌گرایی را بسیار شگفت‌انگیز و قدرتمند کرده است.

برنامه‌نویس یک زبان شی‌گرا می‌تواند پس از تعریف یک مفهوم بسیار پیچیده در قالب شی، با آن مثل یک داده‌ی معمولی رفتار کرده و برای مثال تنها با تایپ نام شی آن مهفوم پیچیده را در کد خود استفاده کند. فرض کنید که در یک فریمورک خاص (یونیتی) نوع داده‌ای به نام AudioClip وجود دارد که به فایل صوتی اشاره می‌کند. برنامه‌نویس برای اجرای یک صدا در برنامه‌ی خود کافی است فایل صوتی خود را در نوع داده‌ای از این جنس قرار داده و با صدا زدن متد Play (که به صورت اختصاصی برای نوع داده‌ی AudioClip تعریف شده است) آن را پخش کند.

 

ایجاد کلاس و شی در سی‌شارپ

کلاس یکی از مفاهیم برنامه‌نویسی شی‌گرا است و عبارت است از مجموعه‌ای از اعضا از جمله خصوصیت‌ها (fields) و رفتارهایی (methods) که به یک موجودیت هویت می‌بخشند. در جهان واقعی نیز این دو مقوله به اشیا هویت داده‌اند. برای مثال مفهوم انسان را در نظر بگیرید؛ هر انسانی خصوصیت‌هایی از قبیل نام، قد، وزن، تاریخ تولد و… داشته و رفتارهایی مثل غذا خوردن، خندیدن، خوابیدن و… را از خود بروز می‌دهد.

«انسان» به یک فرد خاص اشاره نمی‌کند؛ بلکه موجودیت‌هایی به دلیل دارا بودن این خصوصیات و رفتارها به عنوان انسان شناخته می‌شوند. در این مثال انسان کلاس و یک فرد خاص شی ساخته شده از روی این کلاس می‌باشد.

کلاس معادل نوع‌ داده است که بعد از تعریف (معمولاً) از روی آن شی ساخته می‌شود.

به مثال معروف برنامه‌ی اتوماسیون یک دانشگاه برمی‌گردیم؛ فرض کنید قصد ایجاد قابلیتی در برنامه داریم که معدل یک دانشجو را محاسبه کند. برای این کار مفهوم دانشجو باید به برنامه توضیح داده شود که برای این کار به صورت زیر عمل می‌کنیم:

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

برای درک بهتر کنسول اپلیکیشن جدیدی در JetBrains Rider ایجاد کنید. سپس در قسمت Solution Explorer راست کلیک کرده و از منوی باز شده گزینه‌ی Add و سپس Class را انتخاب کنید. در پنجره‌ی باز شده نام Student را برای کلاس انتخاب کرده و بر روی OK کلیک کنید.

فایل جدیدی با نام Student.cs ایجاد می‌شود که محتوای آن به صورت زیر است:

در این کلاس خصوصیات مدنظر خود برای یک دانشجو را به صورت متغیرهایی که متعلق به کلاس هستند و فیلد نامیده می‌شوند تعریف می‌کنیم:

برگه‌ها : 1 2 3 4 5 6