فلسفهای که منجر به شکلگیری زبانهای شیگرا شد، عبارت بود از این واقعیت که نحوه عملکرد مغز و شیوهٔ دریافت اطلاعات از محیط پیرامون و پردازش آن اطلاعات (اندیشیدن)، شیوهای شیگراست، از همین روی میبایستی زبانی تعریف میشد که همین شیوه را مبنای کار خود قرار داده و بازتولید میکرد؛
و دقیقاً به همان شکل که اشیا در جهان خارج، دارای هویت و کارکرد مشخص و یگانه برای خود هستند و در عین حال با دیگر اشیا در ارتباطی تنگاتنگ و مستقیماند، در زبانهای برنامهنویسی نیز میبایستی این اصول کلی برقرار میشد. تا به این شکل، برنامهنویس بتواند با بهرهگیری از زبانی که به روش اندیشیدنش، نزدیکی بیشتری دارد، شیهای مختلفی را تعریف نموده، این شیها را در ارتباط با یکدیگر قرار داده و از شیهای پویای تولید شده برای حل مسئلۀ پیش روی استفاده نماید. امروزه اکثر زبانهای دستوری برنامهنویسی از فنون شیگرایی پشتیبانی میکنند.
زبانهایی مانند جاوا، سی پلاس پلاس(++c)، سی شارپ، دلفی و پایتون از جمله زبانهای شیگرا هستند. حتی بسیاری از زبانهای روالگونه که ساختار برنامهها در آنها بلوکهایی با نام پروسیجر است، امروزه از فنون شیگرایی نیز پشتیبانی میکنند. زبانهای سی++ و پیاچپی از این جمله هستند. هر شیء یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Operation خوانده میشوند. در این پارادایم برنامهنویسی، دید برنامهنویس به سیستم، دید شخصی است، که سعی مینماید با پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها، سیستم را تولید نماید.
یک مثال ساده برای درک بهتر شی گرایی
یک خودرو را به عنوان یک شئ در نظر بگیرید، ویژگیهایی مانند رنگ، وزن، سرعت و… از جمله مواردی هستند که میتوان به عنوان ویژگیهای یک خودرو در نظر گرفت، همچنین یک خودرو مجموعه رفتارهایی مانند، حرکت کردن، ترمز گرفتن، بوق زدن و… را نیز از خود نشان میدهد.
به هر موجودیتی که دارای خصوصیت، اطلاعات، وضعیت یا رفتار خاصی باشد یک شئ یا Object گفته میشود، این آبجکت را میتوان به صورت فیزیکی یا منطقی در نظر گرفت.
به اطلاعات و ویژگیهای موجود برای یک شئ خصوصیت یا Atribute میگویند و اعمالی که یک شئ میتواند از خود بروز دهد رفتار یا Behavior نام دارند.
در مثال بالا خودرو را به عنوان یک شئ یا Object در نظر بگیرید، خصوصیات این شئ عبارتند از رنگ، سرعت و… که همان Attributeها هستند، همچنین اعمالی مانند حرکت کردن، بوق زدن و… رفتارها یا Behaviorهای این شئ نامیده میشوند.
مفهوم کلاس (Class) در شئگرایی چیست؟
به زبان ساده میتوان کلاس را به عنوان قالبی برای اشیا در نظر گرفت، مثلا خودروی BMW یک نمونه شئ از کلاس خودرو است، کلاسها معمولا در بردارندهی خصوصیات و رفتار اشیا هستند، مثلا کلاس خودرو دربردارندهی ویژگیهای یک خودرو مثل سرعت، وزن، رنگ و… است و هر مدل خودرویی که از این کلاس در نظر بگیریم تمامی ویژگیهای گفته شده در کلاس را درون خود خواهد داشت،
مفهوم ارثبری (Inheritance) در شی گرایی
به زبان بسیار ساده، اشیا خصوصیات و رفتارها را از کلاس والد خود به ارث میبرند، به عنوان مثال خودروی BMW خصوصیاتی مانند سرعت، وزن، رنگ و… را از کلاس اصلی (والد) خود به ارث برده است، هر شئ دیگری نیز از این کلاس بسازید این ویژگیها را در خود دارد، یک کلاس میتواند تعدادی ویژگی را از کلاس دیگری به ارث ببرد، در این صورت شئ ساخته شده از کلاس جدید، ویژگیهای هردو کلاس را در خود خواهد داشت، این مفهوم را ارثبری مینامیم.
آشنایی با مفهوم Public و Private در کلاسها
دادههای موجود در کلاس از بیرون قابل دستیابی نیستند و این مفهوم به کمک وضعیت Private برای دادهها امکانپذیر خواهد بود، در حالت کلی حالات مختلفی برای دادهها قابل استفاده است، حالت Private یعنی دادهها تنها داخل کلاس شناختهشده هستند و در خارج از کلاس امکان مشاهده و تغییر آنها وجود نخواهد داشت، اما در نقطهی مقابل در حالت Public است که اطلاعات موجود در کلاس در خارج از بدنهی کلاس نیز قابل دستیابی و تغییر هستند.
مزایای برنامهنویسی شئگرا
هرچند برنامهنویسی شئگرا در ابتدا شاید کمی پیچیده به نظر برسد و احتیاج به تجزیه تحلیلهای اولیهی برای پیادهسازی برنامه داشته باشد، اما در دراز مدت و در مراحل تست و نگهداری برنامه به شدت به کمک شما خواهد آمد، از ویژگیهای برنامهنویسی شئگرا میتوان به موارد زیر اشاره کرد:
- افزایش امنیت برنامه
- کاهش هزینه نگهداری
- قابلیت استفاده مجدد
- تحلیل سادهتر برنامه