بررسی روش شئ گرا:

بعد از بررسی اجمالی تاریخچه برنامه نویسی ومعرفی اصول روش ساخت یافته میخواهیم به بررسی روش شئ گرا بپردازیم.

روش شئ گرا از چند دیدگاه قابل بررسی است که در ادامه به تبیین هر یک از دیدگاه ها خواهیم پرداخت.

1.3  اهداف روش شئ گرا:

هدف اصلی این روش که باعث ایجاد تفاوت های  ساختاری با روش ساخت یافته شداین بود که برنامه ها به واحدهای کوچکتری به نام شئ تقسیم شوند که وظیفه ایجاد برنامه  و روابط بین اشیاء بر عهده خود اشیاء باشد تا از این طریق نه تنها از حجم کد نویسی کم شود بلکه برنامه نویس بیشتر زمان وفکر خود را روی طراحی سیتم مورد نظر متمرکز کند.

برای دستیابی به این هدف لازم است که برنامه به صورت یک دنیای واقعی از اشیاء که ارتباطی واقعی دارند دیده شود.

زمانی که توسط این دیدگاه اشیاء مورد نیاز توسط برنامه نویس ایجاد گردد  وظیفه سیستم تنها کنترل روی اشیاء وروابط بین آنها خواهد بود.

به عنوان مثال یک پنجره را در نظر بگیرید .

رسم شئ پنجره بر عهده خودش می باشد و برنامه نویس هنگام طراحی سیستم هیچگونه نگرانی راجع به اینگونه مسائل نخواهد داشت.

همین مساله باعث راحت تر شدن اشکالزدایی برتامه خواهد شد زیرا به محض وقوع یک خطا در برنامه برنامه نویس میداند که اشکال یا از شئ است و یا ازسیستم   واینکه اشکال از جای دیگری نمی تواند باشد.در نتیجه به سرعت عملیات اشکالزدایی انجام خواهد شد.

روش برنامه نویسی شئ گرا میگوید برای دستیابی به اهداف فوق لازم است به بالاترین سطح از "Abstraction" برسیم.

 حال به توضیح بیشتر راجع به مفهوم "abstraction"  میپردازیم.

Abstraction در لغت به معنای تجرد یا انتزاع است.

وبه مفهوم یک برداشت واحد از مجموعه مشاهدات میباشد.

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

حال به توضیح این مفهوم در برنامه نویسی شئ گرا میپردازیم.

در این روش برنامه نویس باید سعی کند اشیایی راتعریف کند که برنامه را از تعریف اشیاء بیشتر بی نیاز کند. در واقع او همواره  باید به دنبال اشیاء مادر بگردد.

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

ضمناً این کلاس برای اجرای توابع درونی خود باید حتی المقدور به کلاس های دیکر نیازی نداشته باشد وبه نوعی مستقل از سایر اجزای سیستم باشد واین همان مفهوم تجرد یا abstraction    در برنامه نویسی شئ گرا می باشد.

به عنوان مثال فرض کنید در حال نوشتن برنامه ای هستید که بخشی از آن مربوط به طراحی سیستم یک ماشین است.

هر ماشین دارای یک سری خصوصیات از قبیل : نام و رنگ و حجم موتور و تعداد سرنشین و شماره شاسی و . . . میباشد.

در عین حال دارای مجموعه ای از رفتارها است که باید  توسط توابع برای ماشین پیاده سازی شود.

 رفتارهايي از قبیل:

  حرکت کردن و ایستادن و حمل مسافر و شتاب داشتن و تعویض دنده هاو . . .

که هر کدام از این توابع نیاز مستقیم به بعضی از خصوصیات ماشین دارند که باید توسط پارامتر به آنها پاس شوند. اگر بخواهیم به روش ساخت یافته این برنامه را طراحی کنیم باید هر یک از این توابع را به صورت کاملاً جاگانه تعریف کنیم و پارامتر های مورد نیاز را نیز به آنها پاس کنیم.

یعنی در پایین ترین سطح از abstraction  به طراحی بپردازیم.

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

با تشکر فراوان از دوستان عزیز

 سيدمحمود شجاعي كياسري و بهاره مرادی