مفاهیم شی گرایی در سی شارپ بخش اول

زبان سی شارپ یک زبان شی گرا یا Object oriented است، اما برنامه نویسی شی گرا چیست؟ برنامه نویسی شی گرا بر خلاف برنامه نویسی Procedural که کد های برنامه به صورت رویه ای پشت سر هم اجرا میشدند، مدل سازی نرم افزار بر اساس اشیا انجام میشود، یعنی برنامه شبیه سازی دنیای واقعی ما است و دقیقا همین است.

حال هر شی دارای یکسری  خواص و رفتار است که در زیر به تعریف آن ها می پردازم:

·        ویژگی یا Property مجموعه صفات یک شی هستند برای مثال انسان صفاتی مثل قد، رنگ مو و ... را دارد.

·        رفتار یا Behavior کاری است که یک شی انجام میدهد برای مثال انسان میتواند صحبت کند، غذا بخورد و ....

 

مفاهیم اساسی در برنامه نویسی شئ گرا:

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

 

Abstraction

کلاس Abstract، یکی از ابزارهای مهم OOP می‌باشد که نمی‌توان از آنها نمونه‌ای ساخت. به عبارتی دیگر نمی‌توانیم متغیری از کلاس Abstract تعریف کنیم. به عبارت دیگر کلاس های abstract کلاس های ناقصی هستند که نیاز به پیاده سازی دارند.

برای مثال میتوان کلاس های abstract را انسان ناقصی در نظر گرفت که فقط فطرت آن پیاده سازی شده است و ناقص است و برای استفاده از آن باید قسمت های دیگر آن را نیز پیاده سازی کرد.

 

Encapsulation

نام دیگر این ابزار پنهان سازی پیچیدگی پیاده سازی عملیات درون یک شی است، برای مثال برای روشن شدن ماشین چندین عملیات لازم است انجام شود ولی ما فقط با استارت زدن کل این عملیات را انجام میدهیم و این مفهوم دقیق Encapsulation است.

 

Inheritance

می توان گفت Inheritance یا وراثت اصلی ترین مفهوم در برنامه نویسی شئ گرا است. زمانی که شما خوب این مفهوم را درک کنید 70 درصد از مفاهیم برنامه نویسی شئ گرا را درک کرده اید. برای درک بهتر این مفهوم مثالی میزنیم. تمامی انسان های متولد شده بر روی کره خاکی از یک پدر و مادر متولد شده اند. در حقیقت این پدر و مادر والدین انسان هستند. زمانی که انسانی متولد می شود یکسری خصوصیات و ویژگی ها را از والدین خود به ارث می برد، مانند رنگ چشم، رنگ پوست یا برخی ویژگی های رفتاری. در برنامه نویسی شئ گرا نیز به همین صورت می باشد. زمانی که شما موجودیت را طراحی می کنید، می توانید برای آن یک کلاس Base یا والد در نظر بگیرید که شئ فرزند تمامی خصوصیات و رفتارهای شئ والد را به ارث خواهد برد. مهمترین ویژگی وراثت، استفاده مجدد از کدهای نوشته شده است که حجم کدهای نوشته شده را به صورت محسوسی کاهش می دهد. در بخش های بعدی در مورد این ویژگی به صورت کامل توضیح خواهیم داد.

 

Polymorphism

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