تفکر OOP این بود که نگاه برنامه نویسان به برنامه نویسی به دنیای واقعی نزدیکتر بشود.
برای مثال خانهای که من در آن زندگی میکنم یک نوع شی یا Object است و خانهای هم که شما در آن زندگی میکنید یک نوع Object است،ولی این دو نوع Object ممکن است تفاوتهای بسیار زیادی را باهم داشته باشند
یا تلویزیون یک نوع شی هست که دارای یکسری Attribute یا ویژگی هست مثل:
صفحه نمایش
اسپیکر
کنترل و...
به علاوه اینها هر تلویزیون یکسری Behavior یا بهتره بگیم عملکرد راهم داره،برای مثال:
شی تلویزیون قابلیت پخش تصویر را داره
قابلیت ظبط تصویر را داره
یا قابلیت اتصال به اینترنت را داره
یه اینها میگم رفتارها(Behavior) یا بهتره بگیم عملکرد های شی تلویزیون
مثالی ساد از یک کلاس در جاوا:
در برنامه نویسی شی گرا Object ها دارای ۳ ویژگی هستند:
۱-هر Object دارای یک Identity یا هویت خاص خود است
برای مثال دو انسان را به عنوان شی در نظر بگیرید:
هر دو اینها دارای Attribute های مثال دست،پا،چشم و... هستند
و عملکر های(Behavior) مشابهی هم مثل حرف زدن،دویدن و... دارند
اما دارای هویتهای مجزا هستند مثل جواد و سعید
۲- هر Object دارای Attribute یا خصصیه مخصوص به خودش هست
برای مثال سن جواد ۱۸ سال هست ولی سن سعید ۳۰ سال
۳-هر Object دارای عملکرد یا Behavior هست
مثلاً محمد جواد نویسنده خوبی هست اما سعید سخران خوبی هست
اشیاء یا Object ها به خودی خود ساخته نمیشنوند و باید ریشه در جایی داشته باشند،در اصل Object ها از روی Class ها ساخته میشوند
برای مثال نقشه یک ساختمان را در نظر بگیرید که از روی آن هزاران خانه ی دیگر ساخته میشود.
در واقع هر خانهای که از روی این نقشه ساخته میشود یک Instance یا نمونه از کلاس ساختمان است
پس به Object هایی که از روی کلاس ساخته میشوند یک Instance یا نمونه گفته میشود
در برنامه نویسی شی گرا چهار اصل اساسی وجود دارد:
Abstraction, Polymorphism, Inheritance, Encapsulation
۱-Abstraction-انتزاعی یا کلی
برای درک مفهوم abstract یک کارخانه ی اتومبیل سازی را در نظر بگیرید.
این کارخانه برای ساختن ماشینها یک کلاس کلی یا Abstract به نام car دارد که به صورت کلی Attribute ها و Behavior هایی را که مربوط به ماشین هست را فقط معرفی میکند.
سپس در کلاسهای دیگر،برای مثال -> کلاس خودرو پراید
فیلد ها و متد های Abstract را پیادهسازی میکنید
و بعد از آن از روی کلاس پراید انواع مدل ها Object ساخته میشود،که مثلاً یک Object اون میشه پراید مدل ۱۱۱ و Object دیگر اون پراید ۱۳ میشود و...
۲- Polymorphism-چند ریختی یا چند فرمی
برای درک Polymorphism حیوان سگ را در نظر بگیرید، سگ دارای Behavior یا عملکردی به اسم حس بویایی است.
برای مثال زمانی که دادهای از جنس بوی گربه به این حس منتقل میشود سگ شروع به پارس کردن میکند،
زمانی که دادهای از جنس بوی گوشت به این حس منتقل میشود بزاق دهان سگ ترش میشود
و زمانی که دادهای ازجنس بوی صاحبش به این حس منتقل میشود شروع به دم تکان دادن میکند
در هر این سه حالت تنها حس بویایی سگ است که کار میکنند ،ولی بر اساس نوع دادهای به این حس منتقل میشود سگ عمل متفاوتی را انجام میدهد.
۳- Inheritance-وراثت
یک کلاس میتواند پدر کلاس دیگر باشد،به این معنی که تمام Method ها و Field های کلاس پدر در کلاس فرزند قابل استفاده باش
کلاس فرزند میتواند از فیلد ها و متد ها به همان صورتی که به ارث برده شدهاند استفاه کند یا آنها را باطل کند و از روش مخصوص به خودش استفاده کند، به علاوه این کلاس فرزند میتواند فیلد ها و متد های خودش را اضافه کند
کلاسی که از آن ارث برده میشود کلاس مبنا یا سوپرکلاس نام دارد و کلاسی که ارث میبرد کلاس فرزند،کلاس مشتق شده یا زیرکلاس نامیده میشود
۴-Encapsulation-کپسوله سازی
کپسوله سازی یعنی مخفی کردن بعضی از خصوصیات یا رفتار های یک شی از دید دیگران.
برای مثال: گوشی تلفن را در نظر بگیرید
یک گوشی تلفن میکروفون،اسپیکر،بورد و... را دارد ولی از دید ما مخفی شده و ما به صورت مستقیم نمیتوانیم به میکروفون یا اسپیکر تلفن دسترسی داشته باشیم.
و فقط در صورتی که شماره ای را بگیریم میتوانیم از میکروفون و اسپیکر برای صحبت کردن استفاده کنیم.
برای مثال نمیتوانیم از اسپیکر تلفن برای گوش دادن به آهنگ یا از میکروفون برای ضبط صدا استفاده کنیم
به این عمل Encapsulation-کپسوله سازی گفته میشود.