برنامه نویسی شی گرا چیست؟

12 آذر 1399 - آخرین بروزرسانی: 13 اردیبهشت 1403
برنامه نویسی شی گرا
زمان تقریبی مطالعه: 5 دقیقه

برنامه نویسی شی گرا یا Object-Oriented Programing (به اختصار OOP)، نوعی مدل برنامه ریزی کامپیوتری است. این مدل طراحی نرم افزار را به جای توابع و توالی منطقی، بر اساس داده (data) یا شی (object) انجام می‌دهد. یک شی را می‌توان به عنوان داده‌ای دانست که ویژگی‌ها و رفتار (attributes and behavior) خاصی دارد.

اگر توسعه دهندگان نرم افزار بخواهند، شی‌ها را دستکاری کنند، از برنامه نویسی شی گرا استفاده می‌کنند. این روش برنامه نویسی برای برنامه‌های بزرگ و پیچیده‌ای که نیازمند حفاظت و به روزرسانی هستند، مناسب است. این نوع برنامه نویسی برای پروژه‌ برنامه نویسی ای که نیازمند مشارکت است و به چند گروه تقسیم می‌شوند، بسیار مناسب است. این نوع برنامه نویسی، کارایی بالایی داشته و کدهای آن دوباره قابل استفاده هستند. توسعه دهندگان نرم افزار در حین کار با میکرو سرویس‌ها (microservices) هم باید از اصول OOP استفاده کنند.

 

برنامه نویسی شی گرا

 

گام اول در این برنامه نویسی، جمع آوری شی‌ها و نحوه برقراری ارتباط میان آنها است. این فرایند تحت عنوان مدلسازی داده (data modeling) شناخته می‌شود. شی‌ها از یک ماهیت فیزیکی مثل فردیکه نام و نشانی خاص خودش را دارد تا برنامه‌های کوچکی مثل Widgets‌ها متغیر هستند.

هنگامی که شی، مشخص شد، کلاس (Class) یا طبقه‌ای از اشیا را به آن اختصاص می‌دهیم. این کلاس، نوع داده و توالی منطقی قابل دستکاری را مشخص می‌کند. هر توالی منطقی مجزا، تحت عنوان متد (method) شناخته می‌شود. شی‌ها می‌توانند با رابط‌های مناسب تحت عنوان پیام‌ها (messages) تعامل برقرار کنند.

 

سفارش یا انجام پروژه برنامه نویسی

 

اصول برنامه نویسی شی گرا

این مدل برنامه نویسی مبتنی بر اصول زیر است:

 

کپسوله سازی (Encapsulation)

شرایط اجرایی و وضعیت هر شی به طور اختصاصی درون بازه یا کلاس مشخصی تعریف می‌شود. سایر شی‌ها به این کلاس دسترسی ندارند یا قابلیت تغییر دادن آن را ندارند. تنها می‌توانند فهرستی از توابع عمومی یا روش‌ها را به کار گیرند. این ویژگی به صورت پنهان سازی داده، امنیت بالاتری را فراهم نموده و مانع از تخریب اطلاعات ناخواسته می‌شود. کپسوله سازی فرایند ترکیب عناصر برای تولید یک ماهیت جدید است. در واقع مجموعه‌ای از دستورالعمل‌های کامپیوتری با هم ترکیب می‌شوند.

 

انتزاع (Abstraction)

شی‌ها تنها مکانیسم‌های درونی را آشکار می‌کنند. این مکانیسم‌ها برای به کارگیری سایر شی‌ها مناسب هستند و هر گونه کد اجرایی غیرضروری را مخفی می‌نمایند. توسعه دهندگان نرم افزار با کمک این مفهوم به راحتی به اعمال تغییرات می‌پردازند.

 

وراثت (Inheritance)

توسعه دهندگان و برنامه نویسان با وجود روابط و زیر مجموعه‌های مشخص در میان شی‌ها به راحتی می‌توانند دوباره از یک توالی منطقی مشترک استفاده کنند. یعنی وراثت منحصر به فردی در میان شی‌ها برقرار است. این قابلیت در برنامه نویسی شی گرا امکان تحلیل داده، کاهش زمان کار و افزایش دقت را به همراه دارد.

 

چند ریختی (Polymorphism)

شی‌ها بر اساس زمینه (Context) بیش از یک شکل هم می‌گیرند. برنامه، مفهوم یا کاربری هر شی را مشخص نموده و نیاز به کدنویسی تکراری، کاهش می‌یابد. در واقع این زبان برنامه نویسی توانایی پردازش متفاوت شی‌ها را دارد و آنها را بر اساس نوع داده یا کلاس، پردازش می‌کند.

 

اصول برنامه نویسی شی گرا

 

رابط (Interface)

زبان‌ها و کدهایی که اپلیکیشن‌ها از آنها برای برقراری ارتباط با یکدیگر و با سخت افزار استفاده می‌کنند.

 

کلاس (Class)

طبقه‌ای از اشیاء است. این طبقه تمامی ویژگی‌های مشترک شی‌های متمایز خودش را در بر می‌گیرد.

 

مثال برنامه نویسی شی گرا

 

پنهان سازی اطلاعات (information hiding)

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

 

پیام رسانی (messaging)

ارسال پیام نوعی از برقراری ارتباط در برنامه نویسی موازی و برنامه نویسی شی گرا است.

 

پروسه (Procedure)

بخشی از برنامه که کار خاصی را انجام می‌دهد.

 

اولین زبان برنامه نویسی شی گرا

اولین زبان برنامه نویسی شی گرا در دهه 1960 در مرکز محاسباتی نروژی در اسلو تحت عنوان Simula طراحی شد. با این که این برنامه اولین بود ولی Smaslltalk را باید به عنوان تنها محیط واقعی OOP در نظر گرفت. این محیط برای مصارف آموزشی در مرکز پژوهش Palo Alto در شرکت Xerox در اواخر دهه 1960 طراحی شد و در سال 1972 منتشر شد.

 

مزایای  زبان برنامه نویسی شی گرا

یکی از مزایای اصلی این روش در مقایسه با روش‌های برنامه نویسی پروسه‌ای، امکان تولید ماژول‌ها یا modules است. این ماژول‌ها در صورت اضافه شدن نوع جدیدی از شی‌ها، دیگر نیازی به تغییر دادن، ندارند. شی جدید، بسیاری از ویژگی‌هایش را از شی‌های موجود ارث می‌برد و برنامه نویس به راحتی با این روش، شی جدیدی را اضافه می‌کند. از این رو اصلاح و تغییر کدهای این روش برنامه نویسی بسیار ساده تر است.

 

مزایای برنامه نویسی شی گرا

 

زبان‌های برنامه نویسی شی گرا

زبان برنامه نویسی OOP مبتنی بر مدل شی گرا بوده و یکی از زبان‌های بسیار مطرح است. بسیاری از زبان‌های مدرن برنامه نویسی در این دسته قرار می‌گیرند. که شامل موارد زیر هستند:

  • جاوا
  • جاوا اسکریپت
  • Python
  • ++C
  • Visual Basic.NET
  • Ruby
  • SCala
  • PHP

با این حال، زبان‌های برنامه نویسی قدیمی‌تر مثل Pascal هم از نسخه‌های شی گرا استفاده می‌کنند.

 

مطلب پیشنهادی: کاربردهای جاوا اسکریپت

 

انتقادها از زبان برنامه نویسی شی گرا

به چند دلیل از این مدل برنامه نویسی، انتقاد شده است. این مدل در حوزه توسعه نرم افزار بیش از حد روی داده تأکید دارد و به اندازه کافی روی محاسبات و الگوریتم‌ها متمرکز نیست. بعلاوه کد OOP بسیار پیچیده تر است و تکمیل آن زمان بیشتری می‌برد.

روش‌های جایگزین برنامه نویسی شی گرا شامل موارد زیر هستند:

  • برنامه نویسی تابعی (functional programming)
  • برنامه نویسی ساختار یافته (structured programming)
  • برنامه نویسی دستوری (imperative programming)

پیشرفته ترین زبان‌های برنامه نویسی امکان ترکیب این مدلها را در اختیار توسعه دهندگان نرم افزار قرار می‌دهند.

 

در نهایت . . .

برنامه نویسی شی گرا به عنوان یکی از روش‌های برنامه نویسی کامپیوتری در طراحی نرم افزار امکان تعریف کردن انواع داده و عملیات‌های مدنظر در ساختار داده را در اختیار برنامه نویسان و توسعه دهندگان نرم افزار قرار می‌دهد. با این روش، ساختار داده به یک شی تبدیل می‌شود که داده‌ها و توابع را در بر می‌گیرد. برنامه نویسان روابط بین شی‌ها را تعریف می‌کنند. برای مثال یک شی می‌تواند ویژگی‌هایش را از شی‌های دیگر ارث ببرد.

همچنین در کارلنسر می‌توانید برای انجام پروژه لینگو و دیگر زبان‌های برنامه‌ نویسی پروژه ثبت کنید و با بهترین هزینه پروژه خود را به فریلنسرهای متخصص بسپارید.

 

مطلب پیشنهادی: تفاوت برنامه نویسی فرانت اند و بک اند

مطلب پیشنهادی: زبان های محبوب برنامه نویسی

 

منابع

https://searchapparchitecture.techtarget.com/definition/object-oriented-programming-OOP

https://www.webopedia.com/TERM/O/object_oriented_programming_OOP.html

 

آیا این مطلب برای شما مفید بود؟
بلهخیر
نویسنده مطلب زینت فلاح
من زینت فلاح، ارشد روان سنجی هستم. بیش از ده ساله که ترجمه متون روانشناسی،مدیریت و فناوری رو انجام میدم. به تولید محتوای جدید علاقمندم و چند ساله که با کارلنسر همکاری دارم. https://www.karlancer.com/profile/1408

دیدگاه شما

بدون دیدگاه