برنامهنویسی شیءگرا (به انگلیسی: Object-Oriented Programming) (بهاختصار: OOP) یک شیوه برنامهنویسی است، که ساختار یا بلوک اصلی اجزای آن، شیءها میباشند. در این شیوه برنامهنویسی، برنامه به شیء گرایش پیدا میکند، به این معنا که دادهها و توابعی که بر روی این دادهها عمل میکنند، تا حد امکان در قالبی به نام شیء و در کنار یکدیگر قرار گرفته، جمعبندی شده و یک واحد (یا یک شیء) را تشکیل میدهند و نسبت به محیط بیرونِ خود، کپسوله میشوند. از این طریق، توابع خارج از آن شیء، امکان ایجاد تغییر در دادههای درون شیء را نخواهند داشت.
فلسفهای که منجر به شکلگیری ی زبانهای شی گرا شد، عبارت بود از این واقعیت که نحوه عملکرد مغز و شیوهٔ دریافت اطلاعات از محیط پیرامون و پردازش آن اطلاعات (اندیشیدن)، شیوهای شی گراست، از همین روی میبایستی زبانی تعریف میشد که همین شیوه را مبنای کار خود قرار داده و بازتولید میکرد؛ و دقیقاً به همان شکل که اشیا در جهان خارج، دارای هویت و کارکرد مشخص و یگانه برای خود هستند و در عین حال با دیگر اشیا در ارتباطی تنگاتنگ و مستقیم اند، در زبانهای برنامهنویسی نیز میبایستی این اصول کلی برقرار میشد. تا به این شکل، برنامهنویس بتواند با بهرهگیری از زبانی که به روش اندیشیدنش، نزدیکی بیشتری دارد، شیهای مختلفی را تعریف نموده، این شیها را در ارتباط با یکدیگر قرار داده و از شیهای پویای تولید شده برای حل مسئله ی پیش روی استفاده نماید. امروزه اکثر زبانهای دستوری برنامهنویسی از فنون شیگرایی پشتیبانی میکنند.
زبانهایی مانند جاوا، سی پلاس پلاس(++)، سی شارپ، دلفی از جمله زبانهای شیگرا هستند. حتی بسیاری از زبانهای روال گونه که ساختار برنامهها در آنها بلوکهایی با نام پروسیجر است امروزه از فنون شیگرایی نیز پشتبانی میکنند. زبانهای سی++ و پیاچپی از این جمله هستند. هر شیء یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Operation خوانده میشوند. در این پارادایم برنامهنویسی، دید برنامهنویس به سیستم، دید شخصی است، که سعی مینماید با پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها، سیستم را تولید نماید.
فهرست مطالب:
كلاس ها و اشیا
اعضاي تشكيل دهنده كلاس ها
كلاس ها در ++C
كلاس ها در Java
كلاس ها در #C
پياده سازي كلاس ها
كلاس هاي قالب
وراثت
رابطه وراثت يگانه و چندگانه
وراثت در ++C
وراثت در Java
انقياد پوياي متدها
انقياد پوياي متدها در ++C
انقياد پوياي متدها در Java
لغو متدها در سلسله مراتب وراثت در Java
انقياد پوياي متدها در #C
پياده سازي انقياد پوياي متدها
چندريختي
تعريف مجدد عملگرها در ++C و #C
تعريف مجدد عملگرها در Ada
تعريف مجدد عملگرها در Java
كنترل جريان برنامه
ساختارهاي كنترل ترتيب
و...