برنامه نویسی شی گرا یا object-oriented programming که در زبان انگلیسی به صورت مختصر OOP نیز نامیده می شود، یک مدل برنامه نویسی کامپیوتری است که طراحی نرم افزار را حول داده ها یا اشیاء سازماندهی می کند تا توابع و منطق. یک شی را می توان به عنوان یک فیلد داده تعریف کرد که دارای ویژگی ها و رفتار منحصر به فرد است.
OOP بر روی اشیایی که توسعه دهندگان می خواهند دستکاری کنند به جای منطق مورد نیاز برای دستکاری آنها تمرکز می کند. این رویکرد برای برنامه به خصوص برنامه هایی که بزرگ، پیچیده و فعالانه به روز یا نگهداری می شوند، مناسب است. برنامه نویسی شی گرا شامل برنامه هایی برای ساخت و طراحی و همچنین برنامه های کاربردی تلفن همراه است. به عنوان مثال، OOP را می توان برای تولید نرم افزار شبیه سازی سیستم استفاده کرد.
سازماندهی یک برنامه شی گرا نیز این روش را برای توسعه مشارکتی مفید می کند، جایی که پروژه ها به گروه ها تقسیم می شوند. مزایای اضافی OOP شامل قابلیت استفاده مجدد کد، مقیاس پذیری و کارایی است.
اولین قدم در OOP جمع آوری تمام اشیایی است که یک برنامه نویس می خواهد دستکاری کند و نحوه ارتباط آنها با یکدیگر را شناسایی کند. تمرینی که به عنوان مدل سازی داده شناخته می شود. نمونه هایی از یک شی میتواند از موجودیت های فیزیکی، مانند یک انسان که با ویژگیهایی مانند نام و آدرس توصیف میشود، تا برنامه های رایانه ای کوچک، مانند ویجتها، باشد.
هنگامی که یک شی شناخته می شود، با کلاسی از اشیاء برچسب گذاری می شود که نوع داده های موجود در آن و هر دنباله منطقی را که می تواند آن را دستکاری کند، تعریف می کند. هر دنباله منطقی متمایز به عنوان یک روش شناخته می شود. اشیاء می توانند با رابط های کاملاً تعریف شده به نام پیام ارتباط برقرار کنند.
ساختار برنامه نویسی شی گرا چیست؟
ساختار یا بلوک های سازنده برنامه نویسی شی گرا شامل موارد زیر است:
- کلاس ها (Classes) انواع داده های تعریف شده توسط کاربر هستند که به عنوان طرح اولیه برای اشیاء، ویژگی ها و روش های جداگانه عمل می کنند.
- اشیاء (Objects) نمونه هایی از یک کلاس هستند که با داده های مشخصاً تعریف شده ایجاد شده اند. اشیا می توانند با اشیاء دنیای واقعی یا یک موجود انتزاعی مطابقت داشته باشند. وقتی کلاس در ابتدا تعریف می شود، توضیحات تنها شی ای است که تعریف می شود.
- متدها (Methods) توابعی هستند که در داخل یک کلاس تعریف می شوند و رفتارهای یک شی را توصیف می کنند. هر متد موجود در تعاریف کلاس با ارجاع به یک شیء نمونه شروع می شود. علاوه بر این، زیر روالهای موجود در یک شیء، روشهای نمونه نامیده میشوند. برنامه نویسان از روش هایی برای قابلیت استفاده مجدد یا حفظ عملکرد در یک شیء در یک زمان استفاده می کنند.
- ویژگی ها (Attributes) در قالب کلاس تعریف می شوند و وضعیت یک شی را نشان می دهند. اشیاء دارای داده های ذخیره شده در قسمت ویژگی ها خواهند بود. صفات کلاس متعلق به خود کلاس است.
اصول اصلی OOP چیست؟
برنامه نویسی شی گرا بر اساس اصول زیر است:
- کپسوله سازی (Encapsulation): این اصل بیان می کند که تمام اطلاعات مهم در داخل یک شی وجود دارد و فقط اطلاعات انتخاب شده در معرض دید قرار می گیرند. پیاده سازی و وضعیت هر شی به صورت خصوصی در یک کلاس تعریف شده نگهداری می شود. اشیاء دیگر به این کلاس دسترسی ندارند یا اختیار ایجاد تغییرات را ندارند. آنها فقط می توانند لیستی از توابع یا متدهای عمومی را فراخوانی کنند. این ویژگی پنهان کردن داده ها امنیت برنامه را بیشتر می کند و از خراب شدن ناخواسته داده ها جلوگیری می کند.
- انتزاع (Abstraction): اشیاء فقط مکانیسمهای داخلی را نشان میدهند که برای استفاده از اشیاء دیگر مرتبط هستند و هر کد پیاده سازی غیرضروری را پنهان میکنند. کلاس مشتق شده می تواند عملکرد خود را گسترش دهد. این مفهوم می تواند به توسعه دهندگان کمک کند تا تغییرات یا اضافات بیشتری را در طول زمان به راحتی انجام دهند.
- وراثت (Inheritance): کلاس ها می توانند از کدهای کلاس های دیگر دوباره استفاده کنند. میتوان روابط و زیر کلاسها را بین اشیاء اختصاص داد و توسعه دهندگان را قادر میسازد تا از منطق مشترک استفاده مجدد کنند و در عین حال سلسله مراتبی منحصر به فرد را حفظ کنند. این ویژگی OOP باعث تجزیه و تحلیل داده های دقیق تر می شود، زمان توسعه را کاهش می دهد و سطح بالاتری از دقت را تضمین می کند.
- پلی مورفیسم (Polymorphism): اشیا برای به اشتراک گذاشتن رفتار طراحی شده اند و می توانند بیش از یک شکل به خود بگیرند. برنامه تعیین می کند که کدام معنا یا کاربرد برای هر اجرای آن شی از یک کلاس والد ضروری است و نیاز به کد تکراری را کاهش می دهد. سپس یک کلاس فرزند ایجاد می شود که عملکرد کلاس والد را گسترش می دهد. چند شکلی به انواع مختلف اشیاء اجازه می دهد تا از یک رابط عبور کنند.
کدام زبان ها از OOP پشتیبانی می کنند؟
در حالی که Simula به عنوان اولین زبان برنامه نویسی شی گرا شناخته می شود، امروزه بسیاری از زبان های برنامه نویسی دیگر با OOP استفاده می شوند. اما برخی از زبان های برنامه نویسی بهتر از سایرین با OOP جفت می شوند. برای مثال، زبانهای برنامه نویسی که زبانهای OOP خالص در نظر گرفته میشوند، همه چیز را به عنوان یک شی در نظر میگیرند. سایر زبانهای برنامه نویسی عمدتاً برای OOP طراحی شدهاند، اما شامل برخی فرآیندهای رویهای هستند.
به عنوان مثال، زبان های محبوب OOP خالص عبارتند از:
- روبی (Ruby)
- اسکالا (Scala)
- جاد (JADE)
- امرلند (Emerald)
زبان های برنامه نویسی که عمدتاً برای OOP طراحی شده اند عبارتند از:
- جاوا
- پایتون (مشاهده دوره پایتون)
- C++
سایر زبان های برنامه نویسی که با OOP جفت می شوند عبارتند از:
- ویژوال بیسیک دات نت
- PHP
- جاوا اسکریپت (مشاهده آموزش جاوا اسکریپت)
مزایای OOP چیست؟
مزایای OOP عبارتند از:
- مدولار بودن: کپسوله سازی اشیا را قادر میسازد تا خودکفا باشند و عیب یابی و توسعه مشارکتی را آسان تر میکند.
- قابلیت استفاده مجدد: کد را می توان از طریق وراثت دوباره استفاده کرد، به این معنی که یک تیم مجبور نیست یک کد را چندین بار بنویسد.
- بهره وری: برنامه نویسان می توانند با استفاده از کتابخانه های متعدد و کدهای قابل استفاده مجدد سریعتر برنامه های جدید بسازند.
- قابل ارتقا و مقیاس پذیر است: برنامه نویسان می توانند عملکردهای سیستم را به طور مستقل پیاده سازی کنند.
- توضیحات رابط: توضیحات سیستم های خارجی به دلیل تکنیک های ارسال پیام که برای ارتباط اشیا استفاده می شود، ساده است.
- امنیت: با استفاده از کپسوله سازی و انتزاع، کدهای پیچیده پنهان می شوند، نگهداری نرم افزار آسان تر می شود و پروتکل های اینترنتی محافظت می شوند.
- انعطاف پذیری: چند شکلی یک تابع را قادر می سازد تا با کلاسی که در آن قرار می گیرد سازگار شود. اشیاء مختلف نیز می توانند از یک رابط عبور کنند.
انتقاد از OOP
مدل برنامه نویسی شی گرا به دلایل متعدد مورد انتقاد توسعه دهندگان قرار گرفته است. بزرگترین نگرانی این است که OOP بیش از حد بر مولفه داده توسعه نرم افزار تأکید می کند و به اندازه کافی روی محاسبات یا الگوریتم ها تمرکز نمی کند. بعلاوه، نوشتن کد OOP ممکن است پیچیده تر باشد و کامپایل آن زمان بیشتری ببرد.
روش های جایگزین برای OOP عبارتند از:
- برنامه نویسی تابعی: این شامل زبانهایی مانند Erlang و Scala میشود که برای مخابرات و سیستمهای مقاوم به خطا استفاده میشوند.
- برنامه نویسی ساختار یافته یا مدولار: این شامل زبان هایی مانند PHP و C# می شود.
- برنامه نویسی ضروری: این جایگزین برای OOP به جای مدلها بر روی عملکرد تمرکز میکند و شامل C++ و جاوا میشود.
- برنامه نویسی اعلانی: این روش برنامه نویسی شامل اظهاراتی در مورد اینکه کار یا نتیجه مطلوب چیست، اما نه نحوه دستیابی به آن را شامل می شود. زبان ها عبارتند از Prolog و Lisp.
- برنامه نویسی منطقی: این روش که بیشتر مبتنی بر منطق رسمی است و از زبانهایی مانند Prolog استفاده می کند، شامل مجموعه ای از جملات است که حقایق یا قواعدی را در مورد یک حوزه مشکل بیان می کند. بر روی وظایفی تمرکز می کند که می توانند از پرس و جوهای منطقی مبتنی بر قانون بهره مند شوند.
اکثر زبان های برنامه نویسی پیشرفته توسعه دهندگان را قادر می سازند تا مدل ها را ترکیب کنند، زیرا می توان از آنها برای روش های برنامه نویسی مختلف استفاده کرد. به عنوان مثال، جاوا اسکریپت می تواند برای برنامه نویسی OOP و تابعی استفاده شود.
توسعه دهندگانی که با OOP و میکروسرویس ها کار می کنند می توانند با به کارگیری اصول OOP به مسائل رایج میکروسرویس ها بپردازند.
جمع بندی
به صورت کلی، برنامه نویسی شی گرا برای پروژه های نسبتا بزرگ که نیاز به کار تیمی چندین برنامه نویس دارد و همچنین امنیت پروژه نیز، جزو اولویت های آن است مورد استفاده قرار میگیرد. با اینکه مزایای OOP بسیار زیاد هستند، اما در برخی موارد نیز معایبی برای این نوع از برنامه نویسی مشاهده می شود که ممکن است این سبک را برای برخی از پروژه ها مناسب نکند.
پیشنهاد می کنید تا در صورتی که قصد یادگیری برنامه نویسی شی گرا را دارید، حتما آموزش گیت و گیت هاب را نیز در اولویت های کار خود قرار دهید.
نوشته برنامه نویسی شی گرا چیست؟ اولین بار در استادیار. پدیدار شد.
بدون دیدگاه