تفاوت میان نسخه‌های «برنامه‌نویسی شیءگرا»

جز
جز (ربات: جایگزینی پیوند جادویی شابک با الگو شابک)
{{شیوه‌های برنامه‌نویسی}}
 
'''برنامه‌نویسی شی‌گرا''' (به [[زبان انگلیسی|انگلیسی]] ''Object-Oriented Programming'' مخفف:OOP) یک شیوه برنامه‌نویسی است که ساختار یا بلوک اصلی اجزای آن، [[شی (علوم رایانه)|شی‌ها]] می‌باشند. در واقع در این شیوه برنامه‌نویسی، برنامه به شی گرایش پیدا می‌کند. به این معنا که [[داده‌ها]] و توابعی که قرار است بر روی این داده‌ها عمل کنند، تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته، جمع‌بندی شده و یک واحد (شی) را تشکیل داده و نسبت به محیط بیرونِ خود، [[کپسوله‌سازی (علم رایانه)|کپسوله]] می‌شوند و از این طریق، توابع بیگانهٔ خارج از آن شی، دیگر امکان ایجاد تغییر در داده‌های درون آن شی را ندارند. به‌طور مثال [[حساب بانکی]] شما که شامل مشخصات فردی شما و میزان سپردهٔ شما در بانک است، تشکیل یک شی را می‌دهند و به دلیل دارا بودن ویژگی کپسوله، امکان دستکاری در میزان سپرده یا مشخصات شما، توسط دیگران وجود ندارد.<ref>http://de.wikipedia.org/wiki/Objektorientierte_Programmierung</ref> از دیگر ویژگی‌های برنامه‌نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادایم‌های برنامه‌نویسی است.
 
به‌ عنوان مثال [[حساب بانکی]] شما که شامل مشخصات فردی شما و میزان سپردهٔ شما در بانک است، تشکیل یک شی را می‌دهند و به دلیل دارا بودن ویژگی کپسوله، امکان دستکاری در میزان سپرده یا مشخصات شما، توسط دیگران وجود ندارد.<ref>http://de.wikipedia.org/wiki/Objektorientierte_Programmierung</ref> از دیگر ویژگی‌های برنامه‌نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادایم‌های برنامه‌نویسی است.
 
فلسفه‌ای که منجر به شکل‌گیری ی زبان‌های شی گرا شد، عبارت بود از این واقعیت که نحوهٔ عملکرد مغز و شیوهٔ دریافت اطلاعات از محیط پیرامون و پردازش آن اطلاعات (اندیشیدن)، شیوه‌ای شی گراست، از همین روی می‌بایستی زبانی تعریف می‌شد که همین شیوه را مبنای کار خود قرار داده و بازتولید می‌کرد؛ و دقیقاً به همان شکل که اشیا در جهان خارج، دارای هویت و کارکرد مشخص و یگانه برای خود هستند و در عین حال با دیگر اشیا در ارتباطی تنگاتنگ و مستقیم اند، در [[زبان‌های برنامه‌نویسی]] نیز می‌بایستی این اصول کلی برقرار می‌شد.<ref>Christian Ullenboom, Java ist auch eine Insel, 10. Auflage, {{ISBN|3-8362-1802-X|en}}</ref> تا به این شکل، برنامه‌نویس بتواند با بهره‌گیری از زبانی که به روش اندیشیدنش، نزدیکی بیشتری دارد، شی‌های مختلفی را تعریف نموده، این شی‌ها را در ارتباط با یکدیگر قرار داده و از شی‌های پویای تولید شده برای [[حل مسئله]] ی پیش روی استفاده نماید. امروزه اکثر [[زبان‌های دستوری]] برنامه‌نویسی از فنون شی‌گرایی پشتیبانی می‌کنند. زبان‌هایی مانند [[جاوا (زبان برنامه‌نویسی)|جاوا]]، [[سی++]]، [[سی شارپ]]، [[دلفی (زبان برنامه‌نویسی)|دلفی]] از جمله زبان‌های شی‌گرا هستند. حتی بسیاری از [[زبانهای روال گونه]] که ساختار برنامه‌ها در آن‌ها بلوک‌هایی با نام پروسیجر است امروزه از فنون شی‌گرایی نیز پشتبانی می‌کنند. زبان‌های [[سی++]]<ref>{{یادکرد کتاب|عنوان=برنامه‌سازی پیشرفته با ++C|نام خانوادگی=دکتر بابک بشری راد|نام=|ناشر=ناقوس|سال=1394|شابک=۹۷۸-۹۶۴-۳۷۷-۷۴۶-۳|مکان=تهران|صفحات=}}</ref> و [[پی‌اچ‌پی]] از این جمله هستند. هر شیء یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Operation خوانده می‌شوند. در این پارادایم برنامه‌نویسی، دید برنامه‌نویس به سیستم دید شخصی است که سعی می‌نماید با پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آن‌ها سیستم را تولید نماید. (مفهوم مدیریت دیداری)
 
لازم به ذکر است که تکنیک برنامه نویسی شی گرا به مراتب کارا و پیچیده تر از سبک برنامه نویسی مبتنی بر تابع (procedural) است.
مفاهیم عمده
 
'''دلایل برتری برنامه نویسی شی گرا :'''
 
# قابلیت سازمان دهی بهینه تر کدها
# قابلیت تقسیم برنامه به برنامه های کوچک تر اما مستقل. برنامه ی اصلی به صورت یک exe در می آید که دیگر قسمت های مستقل برنامه را فراخوانی می کند (modularity).
# عدم نیاز به نوشتن کدهای تکراری و قابلیت هایی که قبلا پیاده سازی شده اند و صرف جویی در استفاده از منابع.
 
با این وجود، بسیاری از توسعه دهندگان سعی می کنند در پروژه های کوچک و ساده خود از سبک برنامه نویسی مبتنی بر تابع (procedural) بهره بگیرند.
 
=== مفاهیم عمده ===
 
== کلاس ==
</syntaxhighlight>
 
حال در نظر بگیرید که نه فقط یک تاریخ، بلکه n تاریخ متفاوت مورد نیاز است. این بدان معنی ست که می‌بایستی به تعداد n بار، سه متغیر بالا، جداگانه تعریف شوند و تعریفِ تک تک و پیاپی متغیرها، نه فقط از لحاظ زمانی بسیار وقت گیر می‌نماید، بلکه از لحاظ میزان کد مورد نیاز نیز بسیار غیر عملی ست، چرا که هر بار می‌بایستی نام جدیدی برای متغیرها در نظر گرفته شود (دو متغیر متفاوت نمی‌توانند هم نام باشند). در اینجاست که کلاس‌ها به خوبی وارد عمل می‌شوند. با استفاده از کلاس‌ها می‌توان متغیرهای متعدد را زیر عنوان یک جنسیت مشترک جدید (به‌طور مثال هر سه را در یک کلاس با نام Date)، تعریف و جمع‌بندی نمود؛ و بعد از آن، بدون نیاز به تعریف مجدد روز، ماه و سال، از کلاس Date به میزان مورد نیاز استفاده کرد:<ref name="ReferenceA" />
 
اینجاست که کلاس‌ها به خوبی وارد عمل می‌شوند. با استفاده از کلاس‌ها می‌توان متغیرهای متعدد را زیر عنوان یک جنسیت مشترک جدید (به‌طور مثال هر سه را در یک کلاس با نام Date)، تعریف و جمع‌بندی نمود؛ و بعد از آن، بدون نیاز به تعریف مجدد روز، ماه و سال، از کلاس Date به میزان مورد نیاز استفاده کرد:<ref name="ReferenceA" />
 
<syntaxhighlight lang=Java>
== پیوند به بیرون ==
* [http://java.sun.com/docs/books/tutorial/java/concepts/index.html مفاهیم مربوط به برنامه‌نویسی شیءگرا]
*[https://danup.ir/object-oriented-programming-in-php/ برنامه نویسی شی گرا در php (توضیحات کامل)]
 
== منابع ==
۱۵

ویرایش