آشنایی با مفهوم برنامه‌ نویسی شیءگرا در C#

09 فروردین 1398
درسنامه درس 9 از سری آموزش سی شارپ (C#)
csharp-oop

در طی این دوره‌ی آموزش به کررات به مفاهیم شی گرایی برخورد کردید بدون آنکه بدانید آنها چه چیزی هستند و چگونه کار می کنند. در یک جمله برنامه نویسی شی گرایی یعنی سطح حرفه ای از کدنویسی که باعث می شود نرم افزارهای شما توسعه پذیر تر باشند. یکی از اصول این حرفه‌ای بودن آشنایی با مفهومی به نام شیءگرایی و زبان برنامه‌نویسی شیءگرا یا Object Oriented Programming است. اما این سوال برای شما پیش می‌آید که شیءگرایی چیست و اصلا مفهوم برنامه‌نویسی شیءگرا در چه مواردی بکار گرفته می‌شود؟ در این فصل قصد داریم به صورت مفصل این مباحث را یکبار برای همیشه مطرح کرده تا شما عزیزان درک دقیقی نسبت به این موضوع پیدا کنید.

تعریف شیءگرایی و برنامه‌نویسی شیءگرا

در زبان‌هایی که بر پایه‌ی برنامه‌نویسی شیءگرا هستند معمولا مدلسازی نرم‌افزار و المان‌های آن بر اساس اشیاء انجام می‌شود. یعنی هرآنچه در دنیای پیرامون برنامه‌نویسی وجود دارد به دید یک شیء معرفی می‌شود و هر شیء دارای خصوصیات (Properties) و رفتارها (Behaviors) است.

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

رفتارها یا Behavior به عنوان مجموعه‌ی اعمالی که یک شخص انجام می‌دهد شناخته می‌شود مثلا یک شخص می‌تواند نگاه کند، بنشیند، صحبت کن و راه برود. رفتارها در مجموع به کاری که یک شیء می‌تواند انجام دهد گفته می‌شود.

حال بهتر است با مفاهیم اصلی زبان برنامه‌نویسی شیءگرا آشنا شویم:

Abstraction یا انتزاع

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

Encapsulation یا کسپوله سازی

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

Inheritance یا ارث‌ بری

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

Polymorphism یا چندریختی

برای درک مفهوم چند ریختی یا پلی مورفیسم در دنیای برنامه‌نویسی مثالی را از دنیای واقعی خدمت شما عزیزان ارائه می‌دهیم. در این کره‌ی خاکی انسان‌های بسیاری وجود دارند که دارای گویش‌های مختلف، زبان‌های مختلف هستند و در شهرهای متفاوت زندگی می‌کنند. اما تمامی این افراد به عنوان یک انسان شناخته می‌شوند. اگر در اینجا انسان را به عنوان یک کلاس والد درنظر بگیریم و انسان ایرانی، آفریقایی، چینی و ... را به عنوان کلاس فرزند، متوجه خواهید شد که انسان ایرانی از کلاس والد مشتق شده است. اما انسان ایرانی نحوه‌ی صحبت کردن اش با نحوه‌ی صحبت کردن یک انسان آفریقایی متفاوت است یعنی در واقع دارای رفتار متفاوت هستند. یعنی رفتاری که در شیء والد وجود دارد گاها در شکل فرزند ممکن است تغییر کند. در زبان‌ برنامه‌نویسی شیءگرا به پلی مورفیسم یا Polymorphism تغییر رفتار یک شیء در اشیاء فرزند آن گفته می‌شود. که در زبان برنامه‌‎نویسی #C این تغییر رفتارها به کمک تعریف متدها به صورت virtual و override است و در فصول بعدی به تفصیل آنها را توضیح خواهیم داد.

با مطالعه‌ی مفاهیم فوق دید کلی نسبت به برنامه‌نویسی شیءگرا پیدا کردید که در فصل بعدی (فصل ۱۰) به شما کمک می‌کند تا درک صحیحی از کلاس‌ها داشته باشید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش سی شارپ (C#) توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما (1 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

رها
13 مهر 1398
سلام ، خیلی عالی توضیح داده شده تمام مطالب بسیار عالی و لذت بردم ان شاالله خداوند یاور شما باشه

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.