برنامه نویسی شی گرا (OOP)

مفهوم برنامه نویسی شی گرا:

برنامه نویسی شی گرا (به انگلیسی: Object-Oriented Programming) که به اختصار آن را (OOP) می نامیم،یک شیوه برنامه نویسی است، که ساختار اصلی این نوع از برنامه نویسی شی‌ها تشکیل می‌دهند. در این شیوه برنامه‌نویسی، برنامه‌ی ما به شی گرایش پیدا میکند، یعنی داده‌ها و توابعی که در برنامه بر روی داده‌های ما عمل میکنند، تا حد امکان در قالب‌هایی به نام شی و در کتار یکدیگر قرار میگیرند. این اشیا نسبت به پیرامون خود، کپسوله میشوند و توایع خارح از آن شی امکان ایجاد تغییر در داده‌های درون شی را نخواهند داشت.

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

مفهوم کلاس:

 

کلاس ها مجموعه ای از اشیای مقدماتی هستند. هر کلاس مجموغه از خصوصیات دارد که وقتی آنها را تعریف می‌کنیم تبدیل به شی می شوند.

برای مثال میتوانیم به بازی شطرنج اشاره کنبم. در این بازی ما میتوانیم کلاسی به نام مهره داشته باشیم. درون این کلاس میتوانیم خصوصیاتی به صورت زیر داشته باشیم.

  • رنگ مهره
  • ارتفاع مهره
  • شکل مهره
  • حرکت‌های مجار مهره

هر شیئی صرفا یک ویژگی خاص که به آن کلاس نعلق دارد را تعریف میکند. بنابراین می‌توانیم شیئی به نام شاه سیاه داشته باشیم. این شاه میتواند تعاریفی برای هر چهار خصوصیت خود داشته باشد (رنگ: سیاه، ارتفاع: بلند، شکل: استوانه شکلی دارای یک تاج، حرکت: یک خانه در هر جهت). این شی میتواند متد‌هایی یا توابعی هم داشته باشد.

 

مفهوم تجرید در برنامه نویسی شی گرا :

 

 

ما برای اینکه از یک وسیله ای استفاده کنبم دلیل نمی‌شود که به طور کامل بدانیم که آن وسیله چطور کار مارا انجام میدهد. برای مثال برای اینکه از لپ تاپ  خود استفاده کنیم نیازی نداریم که به طور کامل بدانیم که سخت افرار چطور عمل میکند، سیستم عامل چیست؟ و سوال هایی از این دست. در برنامه نویسی شی‌گرا هم این مسئله صدق میکند. در مثال بازی شطرنج می‌توانیم یک تابع  ()move داشته باشیم. این تایع ممکن است نیازمند مقادیر بالایی از داده‌ها و تایع‌های دیگر باشد. همچنین ممکن است نیازمند متغیرهایی به صورت موقعیت اولیه و نهایی مهره باشد. علاوه بر این موارد ممکن است به یک تایع دیگر برای زمانی که مهره‌ای یک مهره دیگر را می‌زند نیاز داشته باشد.

ولی لازم نیست ما همه این هارا بدانیم. تنها چیزی که ما باید بدانیم این است که هرگاه از مهره بخواهیم حزکت کند این کار انجام میدهد. این مفهوم تجرید است.

مهفوم کپسوله سازی در برنامه نوسی شی گرا:

کپسول سازی، مخفی سازی (Encapsulation)، به این معنا می‌باشد که باید بعضی خصوصیات یا رفتاهایی که شی دارد باید مخفی گردد. برای مثال فرض کنید که میخواهید با ماشین خود به محل کار خود برید. شما ماشین رو روشن کرده و با استفاده از پدال های گاز و ترمز و چرخش فرمان و… به محل کار خواهید رسید. ولی اگر اتومبیل خود را یک شی فرض کنید. در طول مسیر حرکت شما اعمال محتلفی در حال انجام بوده است. مثلا لنت ترمز با نیرو وارد کردن به دیسک چرخ خودرو باعث کم شدن سرعت می‌شد یا شمع‌ها در زمان های بخصوصی شروع به جرقه زدن میکردند. حال فرض کنید عمل کپسول سازی وجود نداشت و شما مجبور بودید تمام این اعمال را خودتان کنترل کنید. شما هیج گاه به مقصد نمی‌رسیدید. یا سالم نمیرسیدید. این عمل باعث می‌شود که اشیا بدون اینکه از چگونگی کارکرد یکدیگر اطلاع داشته باشند با هم کار کنند.

مفهوم وراثت در برنامه نویسی شی گرا:

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

 

مفهوم چندریختی در برنامه‌نویسی شی‌ءگرا:

چند ریحتی نتیجه وراثت است.

برای مثال فرض کنید در کلاس «مهره»که قبلا آنرا تعریف کردیم یک متد ()move داشتیم که هر مهره را در همه جهات به اندازه یک واحد حرکت می‌داد. این متد برای مهره شاه کاربردی  است؛ اما فقط برای این مهره به درد می‌خورد و در مورد مهره‌های دیگر به کار نمی‌آید. برای حل این مشکل می‌توانیم متد ()move جدیدی در زیرکلاس برای مهره های محتلف تعریف کنیم که حرکت آن مهره را انجام دهد.

در این حالت زمانی که برنامه‌نویس متد ()move را فراخوانی می‌کند، نوع مهره را نیز به عنوان ورودی  تایع ارسال می‌کند تا برنامه بداند که دقیقاً چه مهره‌ای را باید حرکت دهد. بدین ترتیب مقدار زمان زیادی صرفه‌جویی می‌شود. این زمان بدون وجود چندریختی باید صرف این می‌شد که تشخیص دهید چه نوع حرکتی باید انجام دهید.

 

در این نوشته ما کلیاتی از مفهوم برنامه نویسی شی‌گرا را بیان کردیم، و باید به مسئله توجه کنید که هر کدام از زبان های برنامه نویسی ساختار و ترتیب خاص خود را در برنامه نویسی شی گرا دارند.

 

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *