برنامه نویسی شی گرا object oriented programming یک مفهوم برنامه نویسی در دنیای نرم افزار می باشد. اصول شی گرایی و یا مفاهیم شی گرایی در تمامی زبان های برنامه نویسی شی گرا یکسان است. برخی زبانها مانند جاوا , سی پلاس پلاس و … زبان برنامه نویسی شی گرا یی هستند که از یک قانون کلی تبعیت می کنند. زبانهای برنامه نویسی مایکروسافت به عنوان قدرتمند ترین زبانهای برنامه نویسی جهان از اصول شیی گرایی پشتیبانی می کنند.

OOP یک الگو یا شیوه تفکر در برنامهنویسی است که برگرفته از دنیای واقعی بوده و از دهه ۱۹۶۰ میلادی مطرح گشته است. به زبانی که از این الگو پشتیبانی کند، «زبان شیگرا» گفته میشود؛ Simula 67 و Smalltalk نخستین زبانهای برنامهنویسی شیگرا هستند. رویکرد برنامهنویسی شیگرا «از پایین به بالا» (Bottom-Up) است؛ یعنی ابتدا واحدهایی کوچک از برنامه ایجاد میشوند و سپس با پیوند این واحدها، واحدهایی بزرگتر و در نهایت شکلی کامل از برنامه به وجود میآید. برنامهنویسی شیگرا در قالب دو مفهوم «کلاس» (Class) و «شی» (Object) ارایه میگردد. هر کلاس واحدی از برنامه است که تعدادی داده و عملیات را در خود نگهداری میکند و هر شی نیز حالتی (State) مشخص از یک کلاس میباشد.

شئ
هر شئ که ما به عنوان یک موجودیت به آن نگاه می کنیم شامل یکسری خصوصیات و رفتارها می باشد. در زیر به تعریف خصوصیات و رفتارهای یک شئ می پردازیم:
• خصوصیات یا Properties: خصوصیات مجموعه ای از صفات هستند که یک شئ را توصیف می کنند. برای مثال شئ ای با نام انسان را در نظر بگیرید، این شئ یکسری خصوصیات دارد مانند رنگ مو، قد، وزن، رنگ چشم و غیره. تمامی این پارامترها که به توصیف یک شئ می پردازند تحت عنوان خصوصیت یا Property شناخته می شوند.

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

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

زبانهایی که برای ساخت و طراحی اپلیکیشن های موبایل استفاده می شوند ( مانند جاوا ) نیز از اصول شی گرایی استفاده می کنند. و البته زبان های رایج مایکروسافت مانند سی شارپ هم از این مسئله پیروی می کنند.
م.خاشعی