برای فهمیدن یک راه حل ابتدا باید صورت سوال را فهمید؛ برنامه نویسی شی گرا یک راه حل است برای یک مسائله قدیمی در برنامه نویسی و مهندسی نرم افزار: چطور کدی بنویسیم که منعطف(در برابر غیرقابل تغییر)، شفاف(در برابر مبهم) و ساده(در برابر پیچیدگی غیر ضروری) باشد؟
به این پرسش پاسخ های مختلفی داده شده و شئ گرایی یکی از این پاسخ ها است.
تا اینجای موضوع به دو نتیجه مهم می رسیم:
۱-شئ گرایی به انسان مربوط می شود نه به ماشین.
۲-شئ گرایی یک الگوی برنامه نویسی هست.
بنابراین دغدغه ما در برنامه نویسی شئ گرا تولید کدهای خوانا، منطعف و ساده هست.
حال ببینیم شی گرایی چطور در این هدف به ما کمک می کند: راه حلی که شی گرایی پیشنهاد می دهد یک راه حل الهام گرفته از دنیای واقعی و طبیعت است خوب این یعنی چی؟ در دنیا یکسری شئ داریم که با اشیا دیگر در در تعامل و ارتباط هستند. سوالی که در وهله اول پیش می آید این هست که اصلا تعریف شئ در طبیعت چی هست؟ آیا یک سیب یک شئ است آیا یک میز یا ماشین بنر یک شئ است؟ جوابی که هر انسانی به این سوال می دهد این است که بله قطعا اونها یک شئ هستند پس ویژگی هایی که از یک شئ در ذهن ما هست اینها هستند:
۱-ما متوجه هستیم که اشیا از یکدیگر جدا هستند(وجود و هویت خودشان را دارند): برای مثال وقتی به دو سیب شبیه هم نگاه می کنیم متوجه هستیم که با اینکه شبیه هم هستند ولی اگر من یکی از سیب ها را بخورم دیگر سیب همچنان سالم باقی می ماند اشیا در هم پیچیده نیستند برای مثال سیب و هواپیما دو شئ هستند که از هم جدا هستند حال ممکن است ما یک سیب را داخل یک هواپیما ببریم اما با این کار هرگز هویت سیب و هواپیما یکی نمی شود پس اشیا ممکن است اشیا دیگر را داخل خود داشته باشند اما باز هم در این شرایط هویت و وجود این دو شئ از هم جدا است.
۲-هر شئ مشخصه های مربوط به خودش را دارد (ویژگی هایی که وضعیت کنونی شئ را توصیف می کنند): یک سیب ممکن است زرد یا سبز یا قرمز باشد یک لیوان ممکن است ظرفیت ۱ یا ۱۰ لیتر داشته باشد یک لامپ ممکن است خاموش یا روشن باشد و این ها همان چیزهایی است که به عنوان مشخصه یا ویژگی از یک شئ نامبرده می شود برای مثال ویژگی رنگ ویژگی ظرفیت یا ویژگی روشن/خاموش بودن. ویژگی ها مقادیری از جنس خودشان دارند برای مثال ویژگی ظرفیت با لیتر تعریف می شود و نمی توان گفت که لیوان من ۱۰ متر حجم آب دارد. مقادیر این ویژگی ها وضعیت کنونی شئ را تعیین می کنند واضح است که ویژگی یک شئ از اشیا دیگر جدا هست مثلا من لامپ اتاق خودم را خاموش می کنم اما این کار تمام لامپ های جهان را خاموش نمی کند. اکثر اشیا بیشتر از یک ویژگی دارند یک لیوان می تواند حجم ۱ لیتر داشته باشد ولی در همان زمان ممکن است زرد، آبی یا رنگ دیگری باشد.
۳-در دنیای واقعی اکثر اشیا رفتارهایی مخصوص نوع خود دارند: یک ماشین حرکت می کند یک سیب فاسد می شود یک موبایل زنگ می زند و هرکدام از این رفتارها مخصوص نوع آن شئ است مثلا دیده نشده که یک سیب زنگ بزند یا موبایل پرواز کند.
در پست بعدی توضیح خواهم که چطور تعریف اشیایی که در برنامه نویسی داریم با تعریف اشیا در دنیای واقعی شباهت زیادی دارند.