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

برنامه نویسی شی گرا (OOP) یک مدل برنامه نویسی کامپیوتری است که به جای عملکردها و منطق ، طراحی نرم افزار را بر اساس داده ها یا اشیاء سازماندهی می کند. یک شی را می توان به عنوان یک میدان داده تعریف کرد که دارای ویژگی ها و رفتار منحصر به فردی است.

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

سازماندهی یک برنامه شی گرا نیز این روش را برای توسعه مشارکتی مفید می سازد ، جایی که پروژه ها به گروه ها تقسیم می شوند. مزایای دیگر OOP شامل قابلیت استفاده مجدد ، مقیاس پذیری و کارایی است.

اولین قدم در OOP جمع آوری تمام اشیایی است که برنامه نویس می خواهد آنها را دستکاری کرده و نحوه ارتباط آنها با یکدیگر را مشخص کند – تمرینی که به عنوان مدل سازی داده ها شناخته می شود.

نمونه های یک شیء می تواند از موجودیت های فیزیکی ، مانند انسانی که با ویژگی هایی مانند نام و آدرس توصیف می شود ، گرفته شود تا برنامه های کوچک کامپیوتری ، مانند ویجت.

هنگامی که یک شیء شناخته می شود ، با یک دسته از اشیاء برچسب گذاری می شود که نوع داده های موجود در آن و هر توالی منطقی که بتواند آن را دستکاری کند ، مشخص می کند. هر دنباله منطقی متمایز به عنوان یک روش شناخته می شود. اشیاء می توانند با رابط های مشخصی به نام پیام ارتباط برقرار کنند.

 

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

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

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

 

اصول اصلی OOP چیست؟

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

کپسوله سازی. این اصل بیان می کند که همه اطلاعات مهم در داخل یک شی وجود دارد و فقط اطلاعات منتخب در معرض نمایش قرار می گیرند. پیاده سازی و وضعیت هر شی بصورت خصوصی در یک کلاس تعریف شده نگهداری می شود. سایر اشیاء به این کلاس دسترسی ندارند یا از قدرت اعمال تغییرات برخوردار نیستند. آنها فقط می توانند لیستی از توابع یا روشهای عمومی را فراخوانی کنند. این ویژگی پنهان کردن داده ها امنیت برنامه را بیشتر می کند و از خرابی ناخواسته داده ها جلوگیری می کند.
انتزاع . اشیاء فقط مکانیسم های داخلی مربوط به استفاده از سایر اشیاء را آشکار می کنند و هرگونه کد پیاده سازی غیر ضروری را پنهان می کنند. کلاس مشتق شده می تواند عملکرد خود را گسترش دهد. این مفهوم می تواند به توسعه دهندگان کمک کند تا به مرور تغییرات یا اضافات بیشتری را در طول زمان ایجاد کنند.
وراثت. کلاسها می توانند از کد کلاسهای دیگر استفاده مجدد کنند. روابط و زیر کلاسهای بین اشیاء را می توان اختصاص داد ، که توسعه دهندگان را قادر می سازد در عین حفظ سلسله مراتب منحصر به فرد ، از منطق مشترک استفاده کنند. این ویژگی OOP تجزیه و تحلیل دقیق تر اطلاعات را مجبور می کند ، زمان توسعه را کاهش می دهد و سطح بالاتری از دقت را تضمین می کند.
Polymorphism (چند ریختی). اشیاء برای به اشتراک گذاشتن رفتارها طراحی شده اند و می توانند بیش از یک شکل به خود بگیرند. این برنامه تعیین می کند که کدام معنی یا کاربرد برای هر اجرای آن شی از کلاس والد ضروری است و نیاز به تکراری کد را کاهش می دهد. سپس یک کلاس فرزند ایجاد می شود که عملکرد کلاس والدین را گسترش می دهد. پلی مورفیسم به انواع مختلف اجسام اجازه می دهد از یک رابط یکسان عبور کنند .

 

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

در حالی که Simula به عنوان اولین زبان برنامه نویسی شی گرا شناخته می شود ، امروزه بسیاری از زبان های برنامه نویسی دیگر با OOP استفاده می شوند. اما برخی از زبان های برنامه نویسی بهتر از سایرین با OOP جفت می شوند. به عنوان مثال ، زبانهای برنامه نویسی که زبانهای OOP خالص در نظر گرفته می شوند ، همه چیز را به عنوان یک شیء در نظر می گیرند. سایر زبان های برنامه نویسی در درجه اول برای OOP طراحی شده اند ، اما برخی از فرایندهای رویه ای نیز در آن گنجانده شده است.

به عنوان مثال ، زبانهای خالص خالص OOP عبارتند از:

  • Ruby
  • Scala
  • JADE
  • Emerald

زبانهای برنامه نویسی که عمدتا برای OOP طراحی شده اند عبارتند از:

  • Java
  • Python
  • C++

سایر زبان های برنامه نویسی که با OOP جفت می شوند عبارتند از:

  • Visual Basic .NET
  • PHP
  • JavaScript

 

 

مزایای OOP چیست؟

مدولار بودن کپسوله کردن اجسام را قادر می سازد تا خود مختار باشند ، عیب یابی و توسعه مشارکتی را آسان تر می کند.
قابلیت استفاده مجدد کد را می توان از طریق وراثت مجدداً استفاده کرد ، به این معنی که تیم مجبور نیست یک کد را چندین بار بنویسد.
بهره وری. برنامه نویسان می توانند با استفاده از چندین کتابخانه و کد قابل استفاده مجدد ، برنامه های جدید را سریعتر بسازند.
به راحتی قابل ارتقا و مقیاس پذیر است. برنامه نویسان می توانند عملکردهای سیستم را به طور مستقل پیاده سازی کنند.
توضیحات رابط توصیف سیستم های خارجی به دلیل تکنیک های انتقال پیام که برای ارتباط اشیاء استفاده می شود ، ساده است.
امنیت. با استفاده از کپسوله سازی و انتزاع ، کد پیچیده پنهان می شود ، تعمیر و نگهداری نرم افزار آسان تر است و پروتکل های اینترنت محافظت می شوند.
انعطاف پذیری پلی مورفیسم یک تابع را قادر می سازد تا با کلاسی که در آن قرار گرفته است تطبیق داده شود. اشیاء مختلف نیز می توانند از طریق یک رابط عبور کنند.

 

انتقاد از OOP

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

روشهای جایگزین OOP عبارتند از:

برنامه نویسی Functional این شامل زبان هایی مانند Erlang و Scala است که برای مخابرات و سیستم های مقاوم در برابر خطا استفاده می شود.
برنامه نویسی ساختار یافته یا مدولار. این شامل زبان هایی مانند PHP و C#می شود.
برنامه نویسی اجباری(Imperative) این جایگزین برای OOP بیشتر بر عملکرد تمرکز دارد تا مدلها و شامل C ++ و جاوا می باشد.
برنامه نویسی اعلامی (Declarative) این روش برنامه نویسی شامل اظهاراتی است که وظیفه یا نتیجه دلخواه است ، اما نحوه دستیابی به آن نیست. زبانها شامل Prolog و Lisp هستند.
برنامه نویسی منطقی این روش که بیشتر بر منطق رسمی مبتنی است و از زبان هایی مانند Prolog استفاده می کند ، شامل مجموعه ای از جملات است که حقایق یا قوانین مربوط به حوزه مشکل را بیان می کند. این برنامه بر وظایفی متمرکز است که می توانند از پرس و جوهای منطقی مبتنی بر قانون بهره مند شوند.

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