همانطور که از نام آن پیداست، برنامه نویسی شی گرا یا OOPs به زبان هایی اطلاق می شود که از اشیاء در برنامه نویسی استفاده می کنند. هدف برنامهنویسی شیگرا پیادهسازی موجودیتهای دنیای واقعی مانند وراثت، پنهانسازی، چندشکلی و غیره در برنامهنویسی است. هدف اصلی OOP این است که داده ها و توابعی را که روی آنها کار می کنند به هم متصل کند تا هیچ بخش دیگری از کد به جز آن تابع به این داده ها دسترسی نداشته باشد.
مفاهیم OOP:
- کلاس
- اشیاء
- انتزاع داده ها
- کپسوله سازی
- وراثت
- پلی مورفیسم
- صحافی پویا
- ارسال پیام
بررسی مفاهیم شی گرایی
- #####کلاس ها کلاس یک نوع داده تعریف شده توسط کاربر است. از اعضای داده و توابع عضو تشکیل شده است که با ایجاد نمونه ای از آن کلاس می توان به آنها دسترسی پیدا کرد و استفاده کرد. مجموعه ای از ویژگی ها یا روش هایی را نشان می دهد که برای همه اشیاء از یک نوع مشترک است. یک کلاس مانند طرحی برای یک شی است.
به عنوان مثال: کلاس خودروها را در نظر بگیرید. ممکن است ماشینهای زیادی با نامها و مارکهای مختلف وجود داشته باشند، اما همه آنها دارای ویژگیهای مشترک هستند، مانند همه آنها دارای 4 چرخ، محدودیت سرعت، محدوده مسافت پیموده شده، و غیره. بنابراین در اینجا، ماشین کلاس است، و چرخها، محدودیتهای سرعت، مسافت پیموده شده خواص آنهاست.
-
اشیا
این یک واحد اصلی برنامه نویسی شی گرا است و موجودیت های واقعی را نشان می دهد. یک شیء نمونه ای از یک کلاس است. هنگامی که یک کلاس تعریف می شود، هیچ حافظه ای تخصیص نمی یابد، اما زمانی که نمونه سازی می شود (یعنی یک شی ایجاد می شود) حافظه تخصیص می یابد. یک شی دارای هویت، حالت و رفتار است. هر شی شامل داده و کد برای دستکاری داده ها است. اشیاء می توانند بدون نیاز به دانستن جزئیات داده ها یا کد یکدیگر با یکدیگر تعامل داشته باشند، کافی است نوع پیام پذیرفته شده و نوع پاسخی که توسط اشیاء برگردانده شده است را بدانید.
به عنوان مثال "سگ" یک شی واقعی است که دارای برخی ویژگی ها مانند رنگ، نژاد، پوست، خواب و خوردن است.
-
انتزاع داده ها
انتزاع داده ها یکی از ضروری ترین و مهم ترین ویژگی های برنامه نویسی شی گرا است. انتزاع داده به ارائه تنها اطلاعات ضروری در مورد داده ها به دنیای خارج، پنهان کردن جزئیات پس زمینه یا پیاده سازی اشاره دارد. یک مثال واقعی از مردی که در حال رانندگی ماشین است را در نظر بگیرید. مرد فقط می داند که با فشردن پدال گاز باعث افزایش سرعت ماشین می شود یا ترمز زدن ماشین را متوقف می کند، اما نمی داند با فشردن پدال گاز سرعت چگونه افزایش می یابد، از مکانیسم داخلی ماشین اطلاعی ندارد. یا اجرای گاز، ترمز و غیره در خودرو. انتزاع یعنی همین.
-
کپسوله سازی
کپسولاسیون به عنوان جمع کردن داده ها در زیر یک واحد تعریف می شود. این مکانیسمی است که کد و داده هایی را که دستکاری می کند به یکدیگر متصل می کند. در Encapsulation، متغیرها یا دادههای یک کلاس از هر کلاس دیگری پنهان هستند و فقط از طریق هر تابع عضوی از کلاس خود که در آن تعریف شدهاند قابل دسترسی هستند. همانطور که در کپسوله سازی، داده های یک کلاس از کلاس های دیگر پنهان است، بنابراین به عنوان پنهان کردن داده نیز شناخته می شود. یک مثال واقعی از کپسولهسازی را در نظر بگیرید، در یک شرکت، بخشهای مختلفی مانند بخش حسابها، بخش مالی، بخش فروش و غیره وجود دارد. به طور مشابه، بخش فروش تمام فعالیت های مربوط به فروش را مدیریت می کند و سوابق همه فروش ها را نگه می دارد. اکنون ممکن است شرایطی پیش بیاید که به دلایلی یکی از مقامات بخش مالی به تمام داده های مربوط به فروش در یک ماه خاص نیاز داشته باشد. در این صورت وی اجازه دسترسی مستقیم به داده های قسمت فروش را ندارد. او ابتدا باید با یک افسر دیگر در بخش فروش تماس بگیرد و سپس از او بخواهد که داده های خاص را ارائه دهد. این همان کپسولاسیون است. در اینجا داده های بخش فروش و کارمندانی که می توانند آنها را دستکاری کنند تحت یک نام واحد "بخش فروش" قرار می گیرند.
-
وراثت
وراثت یک رکن مهم OOP (برنامه نویسی شی گرا) است. توانایی یک کلاس برای استخراج خصوصیات و خصوصیات از کلاس دیگر وراثت نامیده می شود. وقتی یک کلاس می نویسیم، خصوصیات را از کلاس های دیگر به ارث می بریم. بنابراین وقتی یک کلاس ایجاد می کنیم، نیازی نیست که همه ویژگی ها و توابع را بارها و بارها بنویسیم، زیرا این ویژگی ها را می توان از کلاس دیگری که آن را در اختیار دارد به ارث برد. وراثت به کاربر این امکان را می دهد که در صورت امکان از کد استفاده مجدد کند و افزونگی آن را کاهش دهد.
-
پلیمورفیس
واژه چندشکلی ( پلی مورفیس ) به معنای داشتن اشکال متعدد است. به زبان ساده، چندشکلی را میتوان به عنوان توانایی یک پیام برای نمایش بیش از یک شکل تعریف کرد. به عنوان مثال، یک فرد در همان زمان می تواند ویژگی های متفاوتی داشته باشد. مانند یک مرد در همان زمان یک پدر، یک شوهر، یک کارمند است. بنابراین یک فرد رفتار متفاوتی در موقعیت های مختلف دارد. به این چند شکلی می گویند.
-
اتصال پویا
در اتصال پویا، کدی که باید در پاسخ به فراخوانی تابع اجرا شود در زمان اجرا تصمیم گیری می شود. اتصال پویا به این معنی است که کد مرتبط با یک فراخوانی رویه مشخص تا زمان تماس در زمان اجرا مشخص نیست. اتصال روش دینامیک یکی از مزایای اصلی وراثت این است که برخی از کلاس های مشتق شده D همه اعضای کلاس پایه خود را دارد. هنگامی که D هیچ یک از اعضای عمومی B را پنهان نمی کند، آنگاه یک شی از D می تواند B را در هر زمینه ای نشان دهد. جایی که می توان از B استفاده کرد. این ویژگی به چند شکلی زیرگروهی معروف است.
-
ارسال پیام
این نوعی ارتباط است که در برنامه نویسی شی گرا و همچنین برنامه نویسی موازی استفاده می شود. اشیاء با ارسال و دریافت اطلاعات برای یکدیگر با یکدیگر ارتباط برقرار می کنند. یک پیام برای یک شی درخواستی برای اجرای یک رویه است و بنابراین تابعی را در شی دریافت کننده فراخوانی می کند که نتایج مورد نظر را ایجاد می کند. ارسال پیام شامل تعیین نام شی، نام تابع و اطلاعاتی است که باید ارسال شود.