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