برنامهنویسی شیگرا یا Object Oriented Programming یکی از روشهای برنامهنویسی است و از مجموعهای از اشیا و انتزاعات تشکیل شده است. برای اینکه بتوانید کدهای تمیز، خوانا و ماژولار بنویسید، باید اصول برنامهنویسی شی گرا را یاد بگیرید. در این مقاله از وبلاگ آسا درباره این اصول صحبت میکنیم و کاربرد هر کدام را توضیح میدهیم.
تاریخچه شی گرایی
اگر بخواهیم به تاریخچه شی گرایی اشاره کنیم، باید به عصر محاسبات و برنامهنویسی با زبان ماشین برگردیم. زبان ماشین از دستورهای عددی در قالب عددهای صفر و یک تشکیل شده است. این زبان در اختیار ماشینها و پردازندهها قرار میگرفت، اما برنامهنویسها با استفاده از زبان ماشین نمیتوانستند برنامههای کامپیوتری بنویسند و نرمافزار را طراحی کنند. به همین دلیل، زبان اسمبلی به وجود آمد.
زبانهای اسمبلی شبیه زبان انگلیسی هستند و مفهوم سادهتری دارند. برنامهنویسها با استفاده از زبان اسمبلی، ریزپردازندهها (Microprocessors) را طراحی کردند. ولی این این زبانها هم برای طراحی و توسعه نرمافزارهای کاربردی امروزی مناسب نبودند. به همین دلیل، رویکردهای برنامهنویسی ساختاریافته (Structured Programming) و رویهگرا (Procedural Programming) به وجود آمد. این دو رویکرد برای پروژههای نرمافزاری سنگین مناسب نبودند و در نهایت رویکرد برنامهنویسی شی گرا شکل گرفت.
شی گرایی چیست؟
اگر میخواهید یک پروژه نرمافزاری طراحی کنید، به برنامهنویسی شی گرا احتیاج دارید. در این رویکرد با مفاهیم زیر کار میکنیم:
- شی یا Objects
- ویژگیها و مشخصهها (Properties and Attributes)
- روالها و متدها (Procedures and Methods)
- کلاس (Class)
شما با استفاده از روش Object Oriented میتوانید اشیای مختلف را تعریف کنید و ماهیتهای دنیای واقعی را در برنامهنویسی اجرا کنید. مزیتهای این روش، نوشتن کدهای تمیز و ساختاریافته و کنترل سطح دسترسی به کدهای برنامه هستند. بنابراین، کاربرهای خارجی نمیتوانند به اطلاعات برنامه دسترسی داشته باشند.
Object چیست؟
رویکرد Object Oriented رویکرد پیچیدهای است و با مثال و مفاهیم واقعی بهتر آن را درک میکنید. فرض کنید شما یک خودرو دارید. این خودرو یک مفهوم کلی است و با ویژگیهایی مثل نام، رنگ، سال تولید، اندازه و تعداد چرخها شناخته میشود. به این ویژگیها مشخصه یا Attributes میگویند. خودروی شما عملکردهای مشخصی دارد. این عملکردها حرکت کردن، شتاب گرفتن، روشن شدن و متوقف شدن هستند. به این رفتارها و عملکردها، Method میگویند.
مشخصه و متد در برنامهنویسی Object-Oriented
مشخصهها یا متغیرها (Variables) به عنوان ویژگیها یا Characteristics معرفی میشوند. وقتی شی جدیدی بسازید، اطلاعات آن با نام مشخصهها ذخیره میشود. مثلا، رنگ، تعداد چرخها و تعداد پنجرهها مشخصههای یک ماشین هستند. متدها تابعهایی هستند که رفتار و عملی را تعریف میکنند. با استفاده از متد میتوانید اطلاعات را در خروجی برگردانید یا اطلاعات شی را تغییر دهید. بهعلاوه، اگر خطایی در خروجی متد باشد، میتوانید قطعه کد مربوط به متد را بررسی کنید.
بیشتر بخوانید: معیار انتخاب زبان، تکنولوژی و استک برنامهنویسی
کلاس در برنامهنویسی شی گرا
کلاس یک طرح اولیه است که از آن برای ساخت اشیا استفاده میکنید. مشخصهها و متدها هم داخل کلاس تعریف میشوند. مثلا، اگر ماشینهایی مثل بنز، کامیون و اتوبوس در یک مکان وجود داشته باشند، همه آنها در کلاس خودرو تعریف میشوند و مشخصههای متفاوتی دارند. کلاسها شامل زیرکلاس یا Subclass هستند. همه زیرکلاسها از کلاس والد ارث میبرند و مشخصه و متد دارند.
اصول برنامهنویسی شیءگرا
روش Object Oriented یا OOP بر اساس اصول انتزاع، کپسولهسازی، چندریختی و وراثت اجرا میشود. شما با استفاده این اصول میتوانید به بهترین شکل کد بنویسید. در جدول زیر نام انگلیسی اصول OOP و کاربرد آنها را توضیح میدهیم.
نام فارسی | نام انگلیسی | کاربرد |
انتزاع | Abstraction | تمرکز بر جزئیات حیاتی و پنهان کردن جزئیات پیچیده |
کپسولهسازی | Encapsulation | محدود کردن دسترسی به جزئیات داخلی یک شیء و نمایش رابطهای عمومی |
چند ریختی | Polymorphism | استفاده از اشیا به عنوان نمونه از یک کلاس مشابه |
وراثت | Inheritance | ارث بردن ویژگیها و رفتارها از یک کلاس به کلاس دیگر |
معرفی اصل انتزاع
اگر بخواهید بعضی از ویژگیهای غیرضروری را حذف کنید یا ویژگیها را خلاصه کنید، باید از اصل Abstraction استفاده کنید. طبق این اصل، جزئیات پیچیده حذف میشوند و جزئیات مهم و اساسی میپردازید. اصل انتزاع به شما کمک میکند که درگیر جزئیات داخلی نشوید و کدهای ساده و خوانا بنویسید. نکته مهم این است که اصل Abstraction به طور مستقل اجرا نمیشود، بلکه یک طرح کلی برای ساخت اشیا است.
اصل کپسولهسازی چیست؟
شما میتوانید با استفاده از اصل Encapsulation، ویژگیها و رفتارهای یک شی را در یک کپسول فرضی کنار هم قرار دهید. طبق این اصل، ویژگیها (Properties)، رفتارهای یک Object و دادههای مربوط به آن شی در یک کلاس جمعآوری میشوند.
گاهی اوقات، دسترسی به این کلاس محدود میشود، بنابراین، تغییر روی بخشهای دیگر تاثیری روی کلاس و کدهای برنامه نمیگذارد. با این کار، امنیت برنامه حفظ میشود و جلوی دسترسی غیرمجاز گرفته میشود. برای اجرای Encapsulation میتوانید از اصلاحکننده دسترسی یا Access Modifier استفاده کنید. این اصلاحکنندهها در سه نوع عمومی، محافظتشده و خصوصی هستند.
- حالت خصوصی: در این حالت، متدها و مشخصهها خصوصی هستند. شما میتوانید از طریق سایر متدها به محتوای داخل کلاس دسترسی داشته باشید.
- حالت محافظتشده: متدها و مشخصههای کلاس والد محافظتشده هستند و دسترسی به آنها از طریق زیرکلاسها یا کلاسهای فرزند امکانپذیر است.
- حالت عمومی: متدها و مشخصهها عمومی هستند و شما میتوانید از بیرون کلاس هم به محتوای آن دسترسی داشته باشید.
اصل چندریختی یا Polymorphism
اگر میخواهید یک عملکرد را با نام یکسان در چند کلاس مختلف تعریف کنید، باید طبق اصل چندریختی پیش بروید. مهمترین مزیت Polymorphism قابلیت استفاده مجدد از کدها، تعمیمپذیری و انعطافپذیری است. شما میتوانید طبق این اصل، رفتارهای متفاوت را در کلاسهای مختلف پیادهسازی کنید.
اصل وراثت یا Inheritance
طبق این اصل، ویژگیها و رفتارها از یک کلاس به کلاس دیگری داده میشوند. بنابراین شما میتوانید با استفاده از اصل Inheritance در برنامهنویسی شی گرا کلاس جدید بسازید و دادهها و متدهای کلاس قبلی را روی آن پیادهسازی کنید. در اصل وراثت، کلاس فرزند خصوصیات کلاس والد را دارد. اگر هدف شما ساختاردهی منطقیتر و سازماندهی بهتر کلاسهاست، میتوانید طبق اصل وراثت کدنویسی کنید. تقویت روابط و ارتباطات بین کلاسها هم از دیگر مزیتهای Inheritance است.
جمعبندی
شی گرایی یکی از روشهای محبوب در برنامهنویسی است و بسیاری از برنامهنویسها به دلیل مزیتهایی مثل امنیت و انعطافپذیری بالا از روش Object-oriented استفاده میکنند. در این مقاله، درباره مفاهیم و اصول شی گرایی صحبت کردیم. شما با استفاده از این روش میتوانید کدهای خوانا و تمیز بنویسید و از این کدها به دفعات استفاده کنید.
منابع:
developersho.com | www.techtarget.com
دیدگاهتان را بنویسید