فهرست مطالب
برنامه نویسی شی گرا (Object Oriented Programming) که به طور خلاصه OOP نیز نامیده میشود، نوعی رویکرد خاص در برنامه نویسی است که از زمان معرفی خود تاکنون باعث تغییرات بنیادین در علم برنامه نویسی شده است. به دلیل کاربرد گسترده این رویکرد برنامه نویسی، تقریبا تمامی برنامه نویسان و توسعه دهندگان آشنایی مناسبی با مفاهیم آن دارند. به لطف این آشنایی، از این رویکرد ها در پروژه های برنامه نویسی خود، استفاده میکنند.
با این حال صحبت ما در این مقاله آموزشی با آن دسته از علاقه مندان به دنیای برنامه نویسی است که آشنایی کاملی با مفاهیم شی گرایی در برنامه نویسی نداشته و قصد شناخت آن را دارند. در این صورت، اگر قصد آشنایی بیشتر در این حوزه دارید، با ما همراه باشید تا تعریف برنامه نویسی شی گرا، تاریخچه، مفاهیم موجود و همچنین مزایای استفاده از آن آشنا شویم.
شی در برنامه نویسی چیست؟
یک شی شامل حالات و توابع قابل تغییر تحت عنوان متد است که بر روی این حالت های تغییرپذیر عمل میکند. این اشیا مفهومی از عملکرد را در سیستم به نمایش می گذارند که در طرح ریزی اولیه و یا از سایر طرح های قبلی در برنامه تعریف شده اند. در برنامه نویسی شی گرا با ترکیب این اشیا که هر یک وظایفی ساده را بر عهده دارند، در جهت ایجاد برنامههای کامپیوتری پیچیده استفاده می شوند.
منظور از برنامه نویسی شی گرا چیست؟
در رویکرد برنامه نویسی شی گرا (Object Oriented Programming)، اشیای مختلفی که با توجه به مشخصات و ویژگیهایشان ارتباط نزدیکی با یکدیگر دارند، در کلاسهای مختلف، شناسایی و طبقه بندی میشوند. استفاده از این رویکرد باعث میشود تا ذخیره دادهها و عملیات پردازش آنها در سطح پیشرفتهتری انجام گرفته و باعث ارتقای سطح زبانهای برنامه نویسی شوند. تمامی برنامه نویسان در مقطعی از شغل و حرفه خود، از رویکرد شی گرایی در برنامه نویسی استفاده کردهاند.
توضیح شی گرایی در برنامه نویسی با یک مثال ساده
برای بیان ساده تر پاسخ به سوال شی گرایی چیست؟ می توانیم این کار را با ارائه یک مثالی برای شما روشن تر کنیم. یک ساعت مچی را در نظر بگیرید. در دنیای واقعی، ساعت مچی یک مفهوم خاص را به عنوان وسیله ای که نشان دهنده زمان دقیق به افراد است، شناخته میشود. این ساعت ویژگی هایی مانند رنگ، اندازه، مردانه یا زنانه بودن، جنس بدنه، برند تولید کننده و … را در بر میگیرد. به این ویژگی ها در علم شی گرایی، مشخصه میگویند.
این مشخصه ها، تعیین کننده ویژگی های آن ساعت هستند. همچنین ساعت هایی را در نظر بگیرید که برای عملکرد خود نیاز به باتری دارند و یا ساعت هایی که برای این کار نیاز به باتری ندارند. به این نحوه عملکرد ساعت ها در بحث شی گرایی، متد می گویند. رولکس یک مدل ساعت مچی است که تمامی مشخصه ها و متدهای یک مفهوم کلی به نام ساعت را دارد. رولکس در اینجا نقش مثال و یا نمونه را در علم شی گرایی ایفا میکند.
الگوهای شی گرایی در برنامه نویسی، در دوران آموزشی یک برنامه نویس به وی آموزش داده میشود. برنامه نویسان از این رویکرد برای تعریف اجزای مختلف یک ماشین به برنامه کامپیوتری استفاده میکنند.
تاریخچه شی گرایی در برنامه نویسی
مفاهیم شی گرایی در برنامه نویسی در دهه 60 با زبان برنامه نویسی به نام Simula شروع به ظهور کردند. اولین زبان برنامه نویسی که به طور گسترده به عنوان “شی گرا” شناخته شد، Simula بود که در سال 1965 مشخص شد. Simula مانند Sketchpad، می توانست اشیاء را به نمایش گذاشته و آن ها را در دسته بندی و زیرگروه ها مختلفی دسته بندی نمود.
اگرچه در آن روزگار، توسعهدهندگان به طور کامل از رویکرد برنامه نویسی شی گرا استقبال ویژه ای نکردند، اما این رویکرد ها به تکامل خود ادامه دادند. در دهه 80 و در سرمقاله ای که توسط دیوید رابینسون نگارش شده بود که جهانیان را با این رویکرد در برنامه نویسی آشنا گردانید. تا آن زمان بسیاری از توسعه دهندگان از وجود آن خبر نداشتند.
به مرور زمان، رویکرد برنامه نویسی شی گرا به کمک زبانهایی همچون C++ ، Eiffel و پایتون در بین برنامه نویسان کامپیوتر رواج پیدا کرد. کاربران این روش در طول دهه 90 همچنان بیشتر می شدند که با ورود زبان برنامه نویسی جاوا، عصر جدید برای شی گرایی در برنامه نویسی به وجود آمد.
در سال 2002 و همزمان با انتشار فریم ورک دات نت (.net)، شرکت مایکروسافت یک زبان جدید بر مبنای فریم ورک به نام سی شارپ (#C) را به جهانیان معرفی نمود. این زبان برنامه نویسی اغلب به عنوان قوی ترین زبان در بین برنامه نویسان شناخته میشود.
به مرور زمان این رویکرد در برنامه نویسی در ابزار های جدیدتری نیز به کار گرفته شده و منجر به ساده سازی روش های برنامه نویسی گردیده است.
مفاهیم کلیدی در برنامه نویسی شی گرا
برای درک و استفاده از برنامه نویسی شی گرا، دانستن مفاهیم کلیدی موجود در آن ضروری است. از جمله مهم ترین مفاهیم این رویکرد میتوان به موارد زیر اشاره نمود.
کلاس (Class)
در برنامه نویسی شی گرا، یک کلاس تعریف قالبی از متدها و متغیرها در نوع خاصی از شی است. بنابراین، یک شی یک نمونه خاص از یک کلاس است که به جای متغیرها حاوی دادههای واقعی است. کلاس یکی از ایده های تعیین کننده برنامه نویسی شی گرا است. کلاس ها واحد اساسی در زبان برنامه نویسی ++C هستند که راه را برای برنامه نویسی شی گرا هموار میکنند.
شیء (Object)
یک شیء جزئی از یک برنامه نویسی شی گرا است که نحوه انجام اعمال خاصی و همچنین نحوه تعامل با سایر اجزا را بیان میکند. اشیا واحدهای اساسی برنامه نویسی شی گرا هستند. یک مثال ساده از یک شی می تواند یک شخص باشد.
نحو (Syntax)
اصولی که نحوه ساختار یک زبان را مشخص میکند به عنوان نحو شناخته میشود. در زبانهای برنامه نویسی (به جای زبانهای طبیعی مانند انگلیسی)، نحو مجموعه قوانینی است که نحوه سازماندهی کلمات، علائم نگارشی و نمادها را در یک زبان برنامه نویسی تعریف و راهنمایی میکند. بدون نحو، درک معناشناسی یا معنای یک زبان تقریباً دشوار است. یک کامپایلر یا مفسر نمی تواند کد را درک کند اگر نحو یک زبان رعایت نشود.
کپسولاسیون (Encapsulation)
کپسوله سازی راهی برای محدود کردن دسترسی مستقیم به برخی از اجزای یک شی است، بنابراین کاربران نمی توانند به مقادیر حالت برای همه متغیرهای یک شی خاص دسترسی داشته باشند. کپسوله سازی می تواند برای پنهانکردن اعضای داده و توابع داده یا روش های مرتبط با یک کلاس یا شیء نمونه استفاده شود.
چند شکلی یا چندریختی (Polymorphism)
چند شکلی، یکی از مفاهیم اصلی برنامه نویسی شی گرا (OOP) است و موقعیت هایی را توصیف میکند که در آن یک شی به اشکال مختلف رخ میدهد. پلی مورفیسم در علوم کامپیوتر، این مفهوم را توصیف میکند که شما می توانید از طریق یک رابط به روش های مختلف دسترسی پیدا کنید. هر روش می تواند رویکرد مستقل خود را از این رابط ارائه دهد.
وراثت (Inheritance)
وراثت یکی از مفاهیم اصلی برنامه نویسی شی گرا بوده که مکانیزمی است که در آن میتوانید یک کلاس را به صورت زیر مجموعه ای از یک کلاس دیگر استخراج نمایید.
انتزاع (Abstraction)
در برنامه نویسی شی گرا، انتزاع همراه با کپسوله سازی و وراثت تشکیل دهنده اصول اساسی شی گرایی در برنامه نویسی هستند. در طی فرایند انتزاع، توسعه دهنده برنامه همه دادههای مربوط به یک شی را به جز دادههای مورد نیاز را در جهت کاهش پیچیدگی و افزایش کارایی پنهان میکند.
مزایای شی گرایی در برنامه نویسی
با وجود ظهور رویکردهای مختلف برنامه نویسی، شی گرایی در برنامه نویسی همچنان از محبوبیت بالایی برخوردار است. از جمله مزایای برنامه نویسی شی گرا میتوان به موارد زیر اشاره نمود:
• بهجای اینکه مجبور به نوشتن کامل کد برای هر برنامه باشیم، میتوانیم برنامههای مختلف را از ماژولهای کاری استاندارد بسازیم. این امر منجر به صرفهجویی در زمان و افزایش بهرهوری میشود.
• شی گرایی در برنامه نویسی اجازه میدهد تا برنامه را به مسائلی با اندازههای کوچکتر تقسیم کنید که به راحتی قابل حل هستند.
• فناوری جدید نوید بهره وری بیشتر برنامه نویس، کیفیت بهتر نرم افزار و هزینه نگهداری کمتر را میدهد.
• این امکان وجود دارد که چندین نمونه از یک شی، بدون هیچگونه تداخلی وجود داشته باشند،
• پارتیشن بندی کار در یک پروژه بر اساس اشیا بسیار آسان است.
• اصل پنهانکردن دادهها به برنامه نویس کمک میکند تا برنامههای امنی بسازد که تحت حملات مختلف سایبری قرار نمیگیرند.
• با استفاده از وراثت، میتوانیم کدهای اضافی را حذف کرده و استفاده از کلاسهای موجود را افزایش دهیم.
انواع زبان های برنامه نویسی شی گرا
از جمله زبانهایی که از شی گرایی در برنامه نویسی استفاده میکنند، میتوان به موارد زیر اشاره نمود:
• Java
• # C
• Python
• Ruby
• PHP
• TypeScript
سخن پایانی
برنامه نویسی شی گرا یک رویکرد مهم برای توسعه دهندگان برنامه است و از آن در چندین زبان برنامه نویسی سطح بالا استفاده میشود. مفاهیم کلیدی برنامه نویسی شی گرا می تواند شما را در درک نحوه عملکرد برنامههای مختلف و شناسایی مشکلات و یافتن راهی برای حل آن ها یاری میکند.
توسعه دهندگانی که با روشهای برنامه نویسی شی گرا کار میکنند عقیده دارند که به کمک شی گرایی ساختار داده ساده تر میشود. همچنین امکان استفاده مجدد از کد را ایجاد میکند که باعث صرفه جویی در وقت و زمان میشود.