بسیاری از شرکتهای فعال در حوزه فناوری اطلاعات، برای پیشبرد اهداف خود نیازمند برنامه نویسانی هستند که با زبانهای برنامه نویسی جدید، رویکردها و شیوههای کاربردی و نوین مورد استفاده در برنامه نویسی آشنا باشند. «شی گرایی» (Object Oriented Programming) یکی از مهمترین و رایجترین رویکردهای برنامه نویسی است که به دلیل داشتن مزیتهای مختلف، لازم است برنامه نویسان حداقل در یک زبان برنامه نویسی شی گرا مهارت داشته باشند. در مطلب حاضر، پس از معرفی مختصری از مفاهیم و ویژگیهای رویکرد برنامه نویسی شی گرا، به رایجترین زبان های برنامه نویسی شی گرا و کاربردهای آنها پرداخته خواهد شد.
زبان برنامه نویسی چیست ؟
پیش از پرداختن به موضوع زبان برنامه نویسی شی گرا، در ابتدا بهتر است بهطور مختصر و به بیان ساده به توضیح مفهوم زبان برنامه نویسی پرداخته شود. زبان برنامه نویسی شامل مجموعهای از دستورات است که این دستورات مشخص میکنند کامپیوتر چه وظیفهای را باید انجام دهد. انواع مختلفی از زبانهای برنامه نویسی وجود دارند که هر یک از آنها دارای ساختار، «سینتکس» (Syntax) و قواعد منحصربفرد خود هستند.
میتوان به منظور نوشتن دستورات یک زبان برنامه نویسی، از کد ادیتور یا «محیط توسعه یکپارچه» (Integrated Development Environment | IDE) استفاده کرد. دستورات نوشته شده در این محیطها، با استفاده از کامپایلر، به زبانی ترجمه میشوند که برای کامپیوتر قابل فهم باشند. به منظور توسعه پروژههای نرمافزاری با استفاده از انواع زبانهای برنامه نویسی، میتوان از انواع رویکردهای مختلف برنامه نویسی نظیر «برنامه نویسی رویهای» (Procedural Programming)، «برنامه نویسی تابعی» (Functional Programming) و برنامه نویسی شی گرا استفاده کرد که در مطلب حاضر به رویکرد آخر، یعنی رویکرد شی گرایی، و با محوریت زبان های شی گرا پرداخته میشود.
برنامه نویسی شی گرا چیست ؟
زبان برنامه نویسی شی گرا از رویکرد شی گرایی پشتیبانی میکند که برنامه نویس را قادر میسازد برنامههای نرمافزاری پیچیده را به نحوی پیادهسازی کند تا ساختار کدنویسی سادهای داشته باشند و سایر برنامه نویسان بتوانند به آسانی ساختار برنامه را درک کنند.
این رویکرد از برنامه نویسی، بر پایه مفهوم «شی» (Object) شکل گرفته است. به عبارتی، در زبان برنامه نویسی شی گرا، کلیه «متغیرها» (Variables)، «ساختارهای داده» (Data Structures) و توابع به عنوان شی تلقی میشوند. مفهوم «کلاس» (Class) نیز جزء مولفههای اصلی شی گرایی محسوب میشود که با استفاده از آن میتوان اشیای مختلف را ایجاد کرد. همچنین، زبان برنامه نویسی شی گرا باید از چهار اصل شی گرایی تبعیت کند که در ادامه به آنها اشاره شده است:
- اصل «انتزاع» (Abstraction)
- «کپسولهسازی» (Encapsulation)
- اصل «وراثت» (Inheritance)
- «چندریختی» (Polymorphism)
در ادامه مطلب، به ارائه توضیح مختصری پیرامون دو جزء اصلی رویکرد شی گرایی و اصول آن پرداخته میشود.
کلاس در زبان برنامه نویسی چیست ؟
کلاس به عنوان قالبی برای ساخت اشیای مختلف محسوب میشود. به عبارتی، میتوان تمامی «مشخصهها» (Properties) و «رفتارهای» (Methods) اشیا را درون کلاس تعریف کرد. میتوان اتومبیل را به عنوان یک کلاس در نظر گرفت که دارای مشخصههایی مانند رنگ، تعداد چرخ، تعداد در و تعداد پنجره است و رفتارهایی نظیر روشن شدن، متوقف شدن و شتاب دارد.
شی در زبان برنامه نویسی شی گرا
در زبان برنامه نویسی شی گرا با استفاده از شی میتوان «نمونههای» (Instance) مختلفی از یک کلاس ایجاد کرد. اشیای ساخته شده، دارای رفتارها و مشخصههای کلاس هستند و هر یک از اشیا میتوانند مقدار مشخصه یا رفتار خاصی را داشته باشند.
به عبارتی، مشخصهها و رفتارهای هر شی، با شی دیگر از کلاس متفاوت است. چنانچه مثال مربوط به کلاس اتومبیل را در نظر بگیرید که در بخش قبل به آن اشاره شد، میتوان از این کلاس، اشیای مختلفی ساخت که هر کدام به انواع ماشینهای مختلف مانند بنز، رنو، پراید و کامیون اشاره دارند. تمامی این شیها نمونهای از کلاس اتومبیل محسوب میشوند که تمامی مشخصهها و رفتارهای این کلاس را با مقادیر منحصربفرد خود دارا هستند.
اصول برنامه نویسی شی گرا
به منظور یادگیری زبان برنامه نویسی شی گرا باید چهار اصل آن را یاد گرفت و از اصول برنامه نویسی شی گرا در نوشتن قطعه کدهای برنامه استفاده کرد. در ادامه، به توضیح مختصری از این چهار اصل اشاره میشود.
- اصل انتزاع: با استفاده از این اصل میتوان جزئیات و اطلاعات غیرضروری را از دید کاربران مخفی کرد. به عبارتی، لازم نیست تمامی جزئیات برنامه، در دسترس کاربران قرار گیرد. این امر سبب میشود از میزان پیچیدگی برنامه نیز کاسته شود.
- اصل کپسولهسازی: در زبان برنامه نویسی شی گرا میتوان با استفاده از اصل کپسولهسازی، دادهها و متدهای مربوط به هم را درون یک کلاس قرار داد و با استفاده از ساخت شی به آنها دسترسی داشت. این امر باعث میشود اطلاعات مربوط به یک شی، از سایر اشیا مخفی بماند و به طور مستقیم نتوان به اجزای شی دسترسی داشت. در پی این اتفاق، میزان امنیت برنامه نویسی نیز بیشتر خواهد شد.
- اصل وراثت: زبان برنامه نویسی شی گرا این امکان را فراهم میکند که از کلاسهای ساخته شده از قبل یا «کلاسهای والد» (Parent Classes)، بتوان با ساخت کلاسهای جدید یا «کلاسهای فرزند» (Child Classes)، بهطور مکرر استفاده کرد و در صورت نیاز بخشی از اطلاعات درون این کلاسها را تغییر داد. به عبارتی، کلاسهای جدیدی که بر پایه کلاسهای از قبل ساخته شده، ایجاد میشوند، از آن کلاسها ارثبری میکنند. به بیان دیگر، کلاسهای جدید تمامی اطلاعات کلاسهای از قبل ساخته شده را دارا هستند.
- اصل چندریختی: با استفاده از این اصل در زبان برنامه نویسی شی گرا، میتوان اشیایی تعریف کرد که با دریافت انواع مختلف دادهها، رفتار متفاوتی از خود نشان دهند. همچنین با به کارگیری اصل چندریختی میتوان در کلاسهای فرزند، متدهای کلاس والد را مجدد با دستورالعملهای جدید تعریف کرد.
زبان برنامه نویسی شی گرا چیست ؟
به بیان ساده زبان برنامه نویسی شی گرا زبانی است که مفاهیم شی گرایی در آن قابل استفاده هستند و میتوان اصول برنامه نویسی شی گرا را با استفاده از این زبان پیادهسازی کرد. رویکرد برنامه نویسی شی گرا بر پایه دو مفهوم کلاس و شی شکل گرفته است. در پی چنین ساختاری، به منظور توسعه یک برنامه کامپیوتری با زبان برنامه نویسی شی گرا، باید مجموعهای از اشیا را تعریف کرد که هر یک از این شیها عملکرد بخشی از برنامه را مشخص میکند. به بیان دقیقتر، اشیای زبان برنامه نویسی شی گرا ماهیتهای دنیای واقعی را تعریف میکنند و میتوانند اطلاعاتی را با یکدیگر رد و بدل کنند.
ویژگیهای رویکرد شی گرایی برنامه نویس را قادر میسازد تا زمان کمتری را صرف توسعه پروژه نرمافزاری کند و با دقت بالایی به نوشتن کدهای برنامه بپردازد. همچنین، عملیات تست برنامه، استفاده مجدد از قطعه کدهای از پیش تعریف شده و خطایابی برنامه در زبان برنامه نویسی شی گرا راحتتر انجام میشوند.
رایج ترین زبان های برنامه نویسی شی گرا کدامند؟
زبانهای برنامه نویسی مختلفی برای توسعه پروژههای مختلف نرمافزاری وجود دارند که از رویکرد شی گرایی پشتیبانی میکنند. در بخشهای بعدی مطلب حاضر، به معرفی ۸ زبان برنامه نویسی شی گرای رایج و پرکاربرد پرداخته و به کاربردهای آنها اشاره خواهد شد. اما ابتدا در این بخش، فهرستی از این زبانها در ادامه فهرست شدهاند:
- زبان برنامه نویسی پایتون
- زبان PHP
- زبان برنامه نویسی جاوا
- زبان C#
- زبان برنامه نویسی «روبی» (Ruby)
- زبان TypeScript
- زبان برنامه نویسی C++
- زبان GO
برنامه نویسی شی گرا در پایتون چگونه است؟
پایتون به عنوان زبان برنامه نویسی شی گرا، در میان «دانشمندان داده» (Data Scientists) و تحلیلگران «هوش تجاری» (Business Intelligence) و بسیاری از حوزههای دیگر زبانی محبوب محسوب میشود که با «کلان داده» (Big Data) و پروژههای مبتنی بر یادگیری ماشین کار میکنند. یادگیری این زبان ساده است و این قابلیت را برای توسعه دهندگان فراهم میکند تا بتوانند برنامههای نرمافزاری خود را به سرعت آماده کنند.
برنامههای مختلفی که میتوان با استفاده از زبان برنامه نویسی شی گرای پایتون ایجاد کرد، میتوانند در حوزههای بلاکچین، بازیهای کامپیوتری، مدیریت سیستم، برنامههای تجاری، برنامههای «خط فرمان» (Command-line) و برنامههای ویرایش صوتی و ویدئویی باشند.
زبان شی گرای PHP
زبان PHP یک زبان برنامه نویسی شی گرا است که از آن برای ساخت صفحات وب پویا استفاده میشود. این زبان، زبانی متن باز و اسکریپتی سمت سرور است. استفاده از این زبان در بین توسعه دهندگان وب بک اند رایج است زیرا کتابخانههای وسیع متن باز دارد و از آن میتوان به سادگی برای توسعه پروژههای تحت وب استفاده کرد.
زبان PHP از دو رویکرد برنامه نویسی رویهای و شی گرایی پشتیبانی میکند. قابلیت مهم دیگر زبان PHP این است که میتوان برنامه ساخته شده به این زبان را به صورت «محلی» (Locally) بر روی سیستم تست کرد و پس از بررسی کارایی و عملکر برنامه، آن را بر بستر اینترنت مستقر ساخت.
زبان برنامه نویسی شی گرای جاوا
زبان جاوا نمونهای دیگر از زبانی است که دارای قابلیت شی گرایی است و شرکتهای بسیاری بر روی پروژههای مبتنی بر این زبان سرمایهگذاری میکنند. یادگیری این زبان برای مبتدیان حوزه برنامه نویسی آسان است.
از این زبان میتوان برای ساخت برنامههایی استفاده کرد که قابلیت اجرا بر روی چندین پلتفرم مختلف را دارند. همچنین، این زبان از «نخ» (Threads) و «همزمانی» (Concurrency) برای ساخت برنامههای چندنخی پشتیبانی میکند. توسعه دهندگان از زبان برنامه نویسی شی گرای جاوا برای ساخت برنامههای مختلفی استفاده میکنند که در ادامه به برخی از آنها اشاره شده است:
- اپلیکیشنهای گوشیهای هوشمند
- برنامههای مبتنی بر وب (وباپلیکیشن)
- «سیستمهای تعبیه شده» (Embedded Systems)
- برنامههای توزیع شده
- برنامهها و نرم افزارهای علمی
- اپلیکیشنهای تجاری
- برنامههای رابط گرافیک کاربری دسکتاپ
- بازیهای کامپیوتری
زبان شی گرای سی شارپ
زبان برنامه نویسی C# نیز یکی دیگر از زبانهای برنامه نویسی شی گرا به شمار میرود. این زبان همهمنظوره، برای ساخت برنامههای مبتنی بر پایگاه داده، وب، دسکتاپ و شبکه استفاده میشود. توسعه دهندگانی که قصد دارند برنامههای خود را برای چندین پلتفرم مختلف نظیر ویندوز، لینوکس، iOS، مک OS و اندروید ارائه دهند، میتوانند از این زبان بهره ببرند.
این زبان به زبان جاوا شباهت دارد اما با فریمورک NET. طراحی شده است که همین امر برنامه نویسی را برای پلتفرمهای مایکروسافت نظیر ASP سادهتر میکند. افراد مبتدی میتوانند برای شروع کار خود در حوزه برنامه نویسی، از این زبان استفاده کنند، زیرا یادگیری آن ساده است و بسیاری از شرکتها بر روی توسعه پروژههای نرمافزاری به زبان C# تمرکز دارند.
زبان برنامه نویسی شی گرای روبی
از زبان روبی برای ساخت برنامههای مبتنی بر وب و پویا استفاده میشود. این زبان علاوه بر برنامه نویسی شی گرا، از رویکرد برنامه نویسی تابعی نیز پشتیبانی میکند.
زبان روبی به دلیل پشتیبانی از فناوریهایی نظیر RESTful APIs و «وب سوکت» (Web Socket) برای توسعه برنامههای بکاند وب مناسب است. این زبان به کاربران اجازه میدهد تا اعلان متغیرها را بدون تعیین نوع داده انجام دهند. یادگیری این زبان مناسب افراد تازهکار در حوزه برنامه نویسی است که نگران به خاطر سپردن قواعد پیچیده هستند. از زبان روبی میتوان برای توسعه پروژههایی استفاده کرد که در حوزههای مختلفی نظیر فهرست ذکر شده در زیر قرار میگیرند:
- برنامه نویسی بکاند برای برنامههای گوشی همراه
- سیستمهای مدیریت محتوا
- برنامههای تجارت الکترونیک
- برنامههای یادگیری الکترونیکی
- بازیهای کامپیوتری
- علم داده، یادگیری ماشین و هوش مصنوعی
- برنامههای خط فرمان
- ابزارهایی برای خودکارسازی و تهیه پشتیبان
- «دواپس» (DevOps)
زبان شی گرای تایپ اسکریپت
زبان برنامه نویسی TypeScript زبانی است که برای تکمیل زبان جاوا اسکریپت ارائه شده است و دارای قابلیتهای بیشتری نظیر رابطها، کلاسها و «تایپینگ» (Typing) پویا است. این زبان برای توسعه پروژههای نرمافزاری پیچیده مناسب است و کدهای نوشته شده به این زبان، به زبان استاندارد جاوا اسکریپت کامپایل میشوند که در این حالت میتوان کدهای حاصل شده را بر روی هر مرورگری اجرا کرد.
برنامه نویسی شی گرا در C++ چیست؟
زبان برنامه نویسی C++ نسخه تعمیمیافته زبان برنامه نویسی C است که از برنامه نویسی شی گرایی پشتیبانی میکند. زبان C++ زبانی همه منظوره است. توسعه دهندگان این زبان را برای ساخت کامپایلرها و مفسرهایی به کار میبردند تا سایر زبانهای برنامه نویسی را کامپایل کنند. بسیاری از شرکتها ترکیبی از زبانهای C و C++ را برای ساخت سیستمعامل، بازیهای کامپیوتری، مرورگرها و برنامههای تحت وب استفاده میکنند. سایر کاربردهای زبان C++ برای ساخت برنامههایی به شرح زیر است:
- برنامههای مبتنی بر رابط گرافیکی کاربر
- نرمافزارهای مبتنی بر پایگاه داده
- برنامههای بانکی
- ساخت گرافیک و برنامههای محاسباتی پیشرفته
- سیستمهای توزیع شده
- سیستم های مبتنی بر ابر
زبان شی گرای Go
زبان Go یا Golang یکی از زبانهای برنامه نویسی است که سینتکس آن مشابه با قواعد زبان C است. این زبان به عنوان زبان برنامه نویسی شی گرا محسوب میشود، با این که اختلاف نظرهایی در این زمینه وجود دارد.
در این زبان مفاهیم شی و کلاس همانند سایر زبانهای برنامه نویسی شی گرا وجود ندارد. با این حال، در این زبان یک سری ساختارهای خاصی وجود دارد که مفاهیم و کارایی شی و کلاس را پوشش میدهند. زبان Go دارای کامپایلر بسیار سریعی است که به توسعه دهندگان این امکان را میدهد تا چندین «وظیفه» (Task) را بهطور همزمان پیش ببرند. این ویژگی در توسعه برنامههای اندروید مزیت مهمی محسوب میشود.
از زبان Go برای توسعه برنامههای تحت وب، برنامه نویسی شبکه و سیستم، سرویسهای میکرو، «دادههای حجیم» (Big Data) و یادگیری ماشین و ویرایش ویدئو و صوت و سایر سرویسهای توزیع شده استفاده میشود.
سایر زبان های برنامه نویسی شی گرا کدامند ؟
علاوهبر زبانهای ذکر شده در بالا، زبانهای برنامه نویسی دیگری نیز وجود دارند که از رویکرد شی گرایی پشتیبانی میکنند. در ادامه، فهرستی از این زبانها آمده است.
- جاوا اسکریپت
- Dart
- Object-C
- Lisp
- Perl
- Swift
- Scala
- Kotlin
- MATLAB
- Smalltalk
کدام زبان برنامه نویسی شی گرا را باید انتخاب کرد ؟
انتخاب زبان برنامه نویسی مناسب به عنوان یکی از مهمترین مسئولیتهای برنامه نویسان به شمار میرود، زیرا بخشی از موفقیت محصول نهایی به انتخاب زبان بستگی دارد. پیش از انتخاب زبان برنامه نویسی شی گرا برای یادگیری، باید هدف خود را در حوزه برنامه نویسی مشخص کرد. هر یک از حوزههای برنامه نویسی، نیازمند مهارتهای خاص خود هستند و باید مسیرهای جداگانهای را برای رسیدن به جایگاه شغلی مرتبط با آنها طی کرد.
باید برای انتخاب یک زبان برنامه نویسی به سوالهای مختلفی پاسخ دهید تا بهطور دقیق، هدف خود را مشخص کنید. آیا قصد دارید در زمینه توسعه برنامههای تحت وب فعالیت کنید یا میخواهید نرمافزارهای کاربردی برای دسکتاپ بسازید؟ آیا به حوزه ساخت برنامههای کاربردی گوشی همراه علاقهمند هستید یا قصد دارید به عنوان متخصص هوش مصنوعی در آینده مشغول به کار شوید؟ همچنین، اگر فردی تازهکار هستید و پیشینه برنامه نویسی ندارید، توصیه میشود یادگیری برنامه نویسی را با زبانهای سادهتر آغاز کنید. نکته مهم دیگر هم این است که هر پروژه با دیگری متفاوت است و ممکن است برای یک پروژه زبان پایتون مناسب باشد و برای پروژه دیگری در همان حوزه، استفاده از زبان برنامه نویسی جاوا بهتر باشد.
جمعبندی
شی گرایی یکی از مهمترین رویکردهای برنامه نویسی است که به برنامه نویسان این امکان را میدهد تا کدهای برنامه را سادهتر و شفافتر بنویسند و بدین ترتیب از پیچیدگی برنامه کاسته میشود. همچنین، این رویکرد به دلیل داشتن اصول مختلف، ویژگیهای مختلفی دارد که یکی از مهمترین آنها، افزایش میزان امنیت محصول نرمافزاری است.
برای پیادهسازی شی گرایی در پروژههای خود لازم است از زبانهای برنامه نویسی دارای قابلیت شی گرایی استفاده شود که به آنها زبان برنامه نویسی شی گرا میگویند. در مطلب حاضر، قصد بر این بود تا به رایجترین زبانهای برنامه نویسی شی گرا اشاره شود و کاربرد آنها مورد برررسی قرار گیرد تا افراد علاقهمند به حوزه برنامه نویسی بتوانند با آگاهی بیشتر، به انتخاب زبان برنامه نویسی برای یادگیری بپردازند.