مقدمه
برنامه نویسی شی گرا (OOP) یک مدل برنامه نویسی کامپیوتری است که طراحی نرم افزار را حول داده ها یا اشیاء سازماندهی می کند تا توابع و منطق. یک شی را می توان به عنوان یک فیلد داده تعریف کرد که دارای ویژگی ها و رفتار منحصر به فرد است.
OOP بر روی اشیایی که توسعه دهندگان می خواهند دستکاری کنند به جای منطق مورد نیاز برای دستکاری آنها تمرکز می کند. این رویکرد برای برنامه نویسی برای نرم افزارهایی که بزرگ، پیچیده و فعالانه به روز یا نگهداری می شوند مناسب است. این شامل برنامه هایی برای ساخت و طراحی و همچنین برنامه های تلفن همراه است. به عنوان مثال، OOP را می توان برای تولید نرم افزار شبیه سازی سیستم استفاده کرد.
سازماندهی یک برنامه شی گرا نیز این روش را برای توسعه مشارکتی مفید می کند، جایی که پروژه ها به گروه ها تقسیم می شوند. مزایای اضافی OOP شامل قابلیت استفاده مجدد کد، مقیاس پذیری و کارایی است.
اولین قدم در OOP جمع آوری تمام اشیایی است که یک برنامه نویس می خواهد دستکاری کند و نحوه ارتباط آنها با یکدیگر را شناسایی کند – تمرینی که به عنوان مدل سازی داده شناخته می شود.
نمونههایی از یک شی میتواند از موجودیتهای فیزیکی، مانند یک انسان که با ویژگیهایی مانند نام و آدرس توصیف میشود، تا برنامههای رایانهای کوچک، مانند ویجتها، باشد.
هنگامی که یک شی شناخته می شود، با کلاسی از اشیاء برچسب گذاری می شود که نوع داده های موجود در آن و هر دنباله منطقی را که می تواند آن را دستکاری کند، تعریف می کند. هر دنباله منطقی متمایز به عنوان یک روش شناخته می شود. اشیاء می توانند با رابط های کاملاً تعریف شده به نام پیام ارتباط برقرار کنند.
ساختار برنامه نویسی شی گرا چیست؟
ساختار یا بلوک های سازنده برنامه نویسی شی گرا شامل موارد زیر است:
- کلاس ها انواع داده های تعریف شده توسط کاربر هستند که به عنوان طرح اولیه برای اشیاء، ویژگی ها و روش های جداگانه عمل می کنند.
- Object نمونه هایی از یک کلاس هستند که با داده های مشخصاً تعریف شده ایجاد شده اند. اشیا می توانند با اشیاء دنیای واقعی یا یک موجود انتزاعی مطابقت داشته باشند. وقتی کلاس در ابتدا تعریف می شود، توضیحات تنها شی ای است که تعریف می شود.
- متدها عملکردهایی هستند که اشیا می توانند انجام دهند. آنها در داخل یک کلاس تعریف می شوند که رفتارهای یک شی را توصیف می کنند. هر متد موجود در تعاریف کلاس با ارجاع به یک شیء نمونه شروع می شود. علاوه بر این، زیر روالهای موجود در یک شیء، روشهای نمونه نامیده میشوند. برنامه نویسان از روش هایی برای قابلیت استفاده مجدد یا حفظ عملکرد در یک شیء در یک زمان استفاده می کنند.
- صفات نشان دهنده وضعیت یک شی هستند. به عبارت دیگر، آنها ویژگی هایی هستند که طبقات را متمایز می کنند. اشیاء دارای داده های ذخیره شده در قسمت ویژگی ها هستند. ویژگی های کلاس متعلق به خود کلاس هستند و در قالب کلاس تعریف می شوند.
اصول اصلی OOP چیست؟
- کپسولاسیون. اصل کپسوله سازی بیان می کند که تمام اطلاعات مهم در داخل یک شی قرار دارد و فقط اطلاعات انتخابی در معرض دید قرار می گیرند. پیاده سازی و وضعیت هر شی به صورت خصوصی در یک کلاس تعریف شده نگهداری می شود. اشیاء دیگر به این کلاس دسترسی ندارند یا اختیار ایجاد تغییرات را ندارند. آنها فقط می توانند لیستی از توابع یا متدهای عمومی را فراخوانی کنند. این ویژگی پنهان کردن داده ها امنیت برنامه را بیشتر می کند و از خراب شدن ناخواسته داده ها جلوگیری می کند.
- انتزاع. اشیاء فقط مکانیسمهای داخلی را نشان میدهند که برای استفاده از اشیاء دیگر مرتبط هستند و هر کد پیادهسازی غیرضروری را پنهان میکنند. کلاس مشتق شده می تواند عملکرد خود را گسترش دهد. این مفهوم می تواند به توسعه دهندگان کمک کند تا تغییرات یا اضافات بیشتری را در طول زمان به راحتی انجام دهند.
- ارث. کلاس ها می توانند از کد و ویژگی های کلاس های دیگر استفاده مجدد کنند. روابط و زیر کلاسها بین اشیاء میتوانند اختصاص داده شوند و توسعهدهندگان را قادر میسازد تا از منطق مشترک استفاده مجدد کنند، در حالی که همچنان سلسله مراتبی منحصر به فرد را حفظ میکنند. وراثت تجزیه و تحلیل داده ها را به طور کامل انجام می دهد، زمان توسعه را کاهش می دهد و سطح بالاتری از دقت را تضمین می کند.
- چند شکلی. اشیا برای به اشتراک گذاشتن رفتارها طراحی شده اند و می توانند بیش از یک شکل به خود بگیرند. این برنامه تعیین می کند که کدام معنا یا کاربرد برای هر اجرای آن شی از یک کلاس والد ضروری است و نیاز به کد تکراری را کاهش می دهد. سپس یک کلاس فرزند ایجاد می شود که عملکرد کلاس والد را گسترش می دهد. چند شکلی انواع مختلفی از اشیاء را قادر می سازد از یک رابط عبور کنند.
- نحو. این مجموعه قوانینی است که نحوه سازماندهی کلمات و علائم نگارشی را در یک زبان برنامه نویسی تعریف می کند.
- جفت شدن. این درجه ای است که عناصر نرم افزار به یکدیگر متصل می شوند. به عنوان مثال، اگر یک کلاس دارای ویژگی های آن تغییر کند، هر کلاس دیگر نیز تغییر می کند.
- انجمن. این ارتباط بین یک یا چند کلاس است. انجمن ها می توانند یک به یک، چند به چند، یک به چند یا چند به یک باشند.
نمونه هایی از زبان های برنامه نویسی شی گرا چیست؟
در حالی که Simula به عنوان اولین زبان برنامه نویسی شی گرا شناخته می شود، امروزه بسیاری از زبان های برنامه نویسی دیگر با OOP استفاده می شوند. اما برخی از زبان های برنامه نویسی بهتر از سایرین با OOP جفت می شوند. به عنوان مثال، زبان های برنامه نویسی که به عنوان زبان های OOP خالص در نظر گرفته می شوند، همه چیز را به عنوان یک شی در نظر می گیرند. سایر زبانهای برنامهنویسی عمدتاً برای OOP طراحی شدهاند، اما شامل برخی فرآیندهای رویهای هستند. برخی از محبوب ترین زبان های برنامه نویسی برای یا با در نظر گرفتن OOP طراحی شده اند.
به عنوان مثال، زبان های محبوب OOP خالص شامل موارد زیر است:
- Ruby
- Scala
- JADE
- Emerald
زبان های برنامه نویسی که عمدتاً برای OOP طراحی شده اند شامل موارد زیر است:
- Java
- Python
- C++
سایر زبان های برنامه نویسی که با OOP جفت می شوند عبارتند از:
- Visual Basic .NET.
- PHP
- JavaScript
مزایای OOP چیست؟
مزایای OOP شامل موارد زیر است:
- مدولار بودن. کپسولهسازی اشیا را قادر میسازد تا خودکفا باشند و عیبیابی و توسعه مشارکتی را آسانتر میکند.
- قابلیت استفاده مجدد کد را می توان از طریق وراثت دوباره استفاده کرد، به این معنی که یک تیم مجبور نیست یک کد را چندین بار بنویسد.
- بهره وری. برنامه نویسان می توانند با استفاده از کتابخانه های متعدد و کدهای قابل استفاده مجدد، به سرعت برنامه های جدید بسازند.
- به راحتی قابل ارتقا و مقیاس پذیر است. برنامه نویسان می توانند عملکردهای سیستم را به طور مستقل پیاده سازی کنند.
- امنیت. با استفاده از کپسوله سازی و انتزاع، کدهای پیچیده پنهان می شوند، نگهداری نرم افزار آسان تر می شود و پروتکل های اینترنتی محافظت می شوند.
- انعطاف پذیری. چند شکلی یک تابع را قادر می سازد تا با کلاسی که در آن قرار می گیرد سازگار شود. اشیاء مختلف نیز می توانند از یک رابط عبور کنند.
- نگهداری کد بخشهایی از یک سیستم را میتوان بدون نیاز به انجام تنظیمات مهم بهروزرسانی و نگهداری کرد.
- هزینه کمتر. مزایای دیگر، مانند نگهداری و قابلیت استفاده مجدد، هزینه های توسعه را کاهش می دهد.
انتقاد از OOP
توسعه دهندگان به دلایل متعدد از مدل برنامه نویسی شی گرا انتقاد کرده اند. بزرگترین نگرانی این است که OOP بیش از حد بر مؤلفه داده توسعه نرم افزار تأکید می کند و به اندازه کافی روی محاسبات یا الگوریتم ها تمرکز نمی کند. بعلاوه، نوشتن کد OOP ممکن است پیچیده تر باشد و کامپایل آن زمان بیشتری ببرد.
دیگر انتقادات رایج شامل این واقعیت است که وراثت با اشکالاتی مانند کلاس های پایه شکننده همراه است. علاوه بر این، اشیاء گاهی اوقات واضح تر هستند در حالی که ایزوله هستند، اما درک آنها هنگام کار در برنامه واقعی دشوارتر است.
روش های جایگزین OOP شامل موارد زیر است:
- برنامه نویسی تابعی این شامل زبانهایی مانند Erlang و Scala میشود که برای مخابرات و سیستمهای مقاوم به خطا استفاده میشوند.
- برنامه نویسی ساختاریافته یا مدولار. این شامل زبان هایی مانند PHP و C# می شود.
- برنامه نویسی ضروری این جایگزین برای OOP به جای مدل ها، بر عملکرد تمرکز دارد. زبان های برنامه نویسی ضروری عبارتند از C++ و Java.
- برنامه نویسی اعلانی این روش برنامه نویسی شامل اظهاراتی در مورد اینکه کار یا نتیجه مطلوب چیست، اما نه نحوه دستیابی به آن را شامل می شود. زبان های برنامه نویسی اعلامی عبارتند از Prolog و Lisp.
- برنامه نویسی منطقی این روش که بیشتر مبتنی بر منطق رسمی است و از زبان هایی مانند Prolog استفاده می کند، شامل مجموعه ای از جملات است که حقایق یا قواعدی را در مورد یک حوزه مشکل بیان می کند. بر روی وظایفی تمرکز می کند که می توانند از پرس و جوهای منطقی مبتنی بر قانون بهره مند شوند.
نتیجه
بیشتر زبان های برنامه نویسی پیشرفته توسعه دهندگان را قادر می سازند تا مدل ها را با هم ترکیب کنند زیرا می توان از آنها برای روش های برنامه نویسی مختلف استفاده کرد. به عنوان مثال، جاوا اسکریپت و اسکالا را می توان برای برنامه نویسی OOP و تابعی استفاده کرد.