برنامه‌نویسی شی‌گرا

از ویکی‌پدیا، دانشنامهٔ آزاد.

برنامه نویسی شی‌گرا (به انگلیسی Object Oriented Programming مخفف OOP) شیوه‌ای ازتحلیل و طراحی نرم افزار است که بر تجزیه‌ی مسئله به اشیاء تاکید دارد. اشیاء صور انتزاعی از ماهیت‌های مطرح در مسئله هستند که دو جنبه دارند. اشیاء دارای حالت یا داده بوده و همچنین دارای عملیات بر روی داده‌ها می‌باشند. این نوع نگرش دارای مزایای بسیاری از جمله مدیریت پیچیدگی وهزینه نگهداری کمتری است.

در برنامه نویسی شی‌گرا (Object Oriented) همه چیز یک شی (Object)است. هر شی ویژگی‌ها(Properties) و توابع مربوط به خودش را دارد.

زبانهای برنامه نویسی شی گرا، زبانهایی هستند که در آن برنامه نویس می‌تواند اشيا مختلفی را تعریف نماید و از اشیاء تولید شده استفاده نماید. هر شی یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Methods خوانده می‌شوند. در این روش از برنامه نویسی دید برنامه نویس به سیستم دید شخصی است که سعی می نماید به پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها سیستم را تولید نماید.

[ویرایش] مثال

در اطراف ما اشیا زیادی وجود دارد و در طبیعت همه چیز از اشياء ساخته شده است. مثلا یک شی را در نظر میگیریم:یک ماشین باربری.این ماشین یک سری خصوصیات دارد، مثلاً چهار چرخ، یک پدال ترمز، یک پدال گاز، یک فرمان و یک محل بزرگ برای قرار دادن اشياء در آن و... این ماشین در صورتی که ما به پدال گاز آن فشار بدهیم حرکت می‌کند، در صورتی که فرمان آن را بچرخانیم تغییر مسیر می‌دهد. پس این شی علاوه بر یکسری خصوصیات، یک سری رفتار مشخص هم به ما نشان می‌دهد. ولی آیا فقط این ماشین است که این کار را انجام می‌دهد؟ مسلما نه. تمامی ماسین ها این کار را انجام میدهند. پس مامی‌توانیم این ماشین را 'تعریف' کنیم و بگوییم:

ماشین باربری وسیله‌ای است که چهار چرخ، یک گاز، یک ترمز، یک فرمانو یک محل برای حمل بار دارد و اگر پدال گاز آن فشار داده شود حرکت می‌کند. این تعریف این ماشین است ولی خود آن نیست! ما هر موقع چنین ماشینی بخواهیم به کارخانه تولید آن می رویم و از فروشندگان میخواهیم تا با توجه به این تعریف یک ماشین به ما بدهند.

مفاهیم فوق دقیقا در زبانهای برنامه نویسی شی گرا استفاده شده و مورد استفاده قرار میگیرند. در زبانهای برنامه نویسی شی گرا هم اشیاء زیادی وجود دارند که برنامه نویسان می‌توانند از آنها استفاده کنند. اگر در حال حاضر به صفحه کامپبوتر خود نگاه کنیم، اشياء برنامه نویسی مختلفی را مشاهده می‌کنیم. مثلاً همین برنامه مرورگر ما، دارای یک شی دگمه است که عنوان آن در بالای صفحه، با نامهای back، forward، stop و .. چیده شده است. این دگمه‌ها همه از نوع دگمه (buttin)هستند و با هم تفاوتها و شباهتهایی دارند. مثلاً هر کدام داری تصویر متفاوت هستند و با کلیک روی آنها عمل متفاوتی انجام داده می‌شود. ولی در برخی از چیزها هم مشترکند، مثلاً روی همه آنها می‌شود کلیک کرد یا وقتی ماوس را روی هر کدام میبریم، یک پیام به ما نمایش میدهند. (بااین حال مثلا تفاوت رنگ آن ها ملاک نیست.)برنامه نویسان شی گرا از اشيا موجود استفاده می‌کنند و یا اشياء جدیدی را درست می‌کنند و با قرار دادن این اشیاء سیستم را تشکیل می دهند.'''

[ویرایش] ارتباط اشیاء

مجدداً به مثال ماشین باربری بر میگردیم وحالا یک ماشین سواری را تعریف کنیم. ماشین سواری شی است که چهار چرخ، یک ترمز، یک پدال گاز و یک صندوق عقب دارد. این تعریف به تعریف ماشین باربری بسیار شبیه است. به عبارت دیگر ما به یک تعریف جدید رسیده ایم، به اسم خودرو.'خودرو' وسیله‌ای است که چهار چرخ، یک ترمز، یک پدال گاز دارد. پس از این به بعد تعریف ماشین باربری و ماشین سواری خیلی ساده تر می‌شود.

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

  • اگر کسی به درب کارخانه مراجعه کند و بگوید که'خودرو' میخواهد، چیزی دریافت نمیکند. خودرو یک تعریف انتزاعی است، برای تعریف خودرو شی وجود ندارد پس مشتری تنها میتواتند ماشین باربری یا ماشین سواری بخواهد.
  • کارواش را در نظر می گیریم. این کارواش "خودرو" را تمیز می‌کند و دیگر به طور جزئی عنوان نمیکند که کدام نوع خودرو را تمیز می‌کند. به عبارت دیگر نوع "خودرو" برای کارواش مهم نیست.
  • وقتی شخصی قصد اجاره خودرویی دارد، و میخواهد جنسی را حمل کند در هنگام نماس با متصدی کرایه ماشین میگوید: (اگر خودرو شمااز نوع باربری است، برای من ارسال کنید) ولی اگر قصد جابجا شدن را دارد میگوید :(برای من یک ماشین سواری بفرستید.)

در زبان برنامه نویسی شی گرا نیز اشیا مختلفی وجود دارند که تعریف آنها تکمیل کننده یکدیگر است، به عبارت دیگر اشيا از یکدیگر ارث بری می‌کنند. برخی از تعاریف کاملاً عام است و نمی‌توان از آنها شی ساخت و تنها تعریف هستند. به این تعاریف Interface گفته می‌شود.

زبان‌های دیگر