برنامه نویسی شی گرا چیست؟ اصول برنامه نویسیِ شی گرا در اصطلاحات لیِمَن (بخش دوم)
اصل سوم برنامهنویسی شیءگرا: inheritance (ارثبری)
علاوه بر کلاسها، زبانهای برنامهنویسی شیءگرا زیر کلاسهایی هم دارند. این شامل تمام خصوصیات کلاس والد میشود، اما این زیر کلاسها میتوانند شامل خصوصیات دیگری هم باشند. در بازی شطرنج ما، پیاده (سرباز) به متدی نیاز دارد که در صورت رسیدن به انتهای صفحه، آن را به مهره دیگری تبدیل کند. ما نام این متد را () transformPiece میگذاریم.
تمام مهرهها به متد () transformPiece نیاز ندارند. لذا ما این متد را در کلاس Piece قرار نمیدهیم. در عوض ما میتوانیم زیر کلاسی به نام Pawn (پیاده، سرباز) بسازیم. Pawn چون یک زیر کلاس است، میتواند همه خصوصیات را از Piece ارث ببرد. لذا یک instance (نمونه) از زیر کلاس Pawn شامل یکرنگ، ارتفاع، شکل و حرکت مجاز است. حالا با این کار ما هیچ نگرانی نداریم اگر از آن تابع، تصادفاً روی یک رُخ استفاده کنیم. در اینجا یک تفسیر فنی را بیان میکنیم:
ساخت زیر کلاسها، موجب صرفهجویی در زمان بسیاری میشود. بهجای اینکه برای هر چیزی کلاس جدیدی بسازیم، برنامه نویسان میتوانند یک کلاس پایه ایجاد کرده و سپس هر زمان که لازم بود به زیر کلاسهای جدید بسط میدهیم. (بااینحال، بد بودنِ وابستگی بیشازحد به وراثت ارزش یادداشتبرداری دارد.)
اصل چهارم برنامهنویسی شیءگرا: Polymorphism (چندریختی)
چندریختی نتیجه وراثت است. درک کامل از چندریختی نیاز به مقداری دانش برنامهنویسی دارد، لذا ما فعلاً با مقدمات و اصول اولیه جلو میرویم. بهطور خلاصه چندریختی به برنامه نویسان اجازه میدهد تا از متدهایی بانام یکسان اما با اشیا متفاوت استفاده کنند. برای مثال کلاس Piece ما، ممکن است متد () move داشته باشد که هر مهره را یک حرکت در هر سمتی جابجا کند. این موضوع بدرد مهره شاه میخورد، اما برای هر مهرهای مناسب نیست. برای رفع این مشکل، ما میتوانیم متد () move جدیدی در زیر کلاسِ Rook تعریف کنیم که حرکات مهره را به تعداد نامحدودی فضای روبهجلو، رو به عقب، چپ یا راست تعریف کند. حال وقتی یک برنامهنویس متد () move را invoke میکند (صدا میزند) و از یک piece (مهره) بهعنوان آرگومان استفاده میکند، برنامه دقیقاً میداند که piece (مهره) دقیقاً باید چگونه حرکت کند. این کار باعث صرفهجویی زمان زیادی در فهمیدن اینکه باید از کدام متدهای مختلف استفاده کنید، میشود.
برنامهنویسی شیءگرا بهطور خلاصه
اگر بعد از تعریف 4 اصل اساسی برنامهنویسی شیءگرا کمی سرگیجه پیداکردهاید، زیاد نگران نباشید. موارد مهمی که باید به خاطر داشته باشید در زیر آمده است:
• برنامهنویسی شیءگرا اطلاعات را در موجودیتهای واحدی به نام اشیا جمعآوری میکند.
• هر شیء یک instance (نمونه) واحد از یک کلاس است.
• Abstraction (انتزاع) کارهای درونی یکشی را زمانی که لزومی به دیدن آنها نداریم، مخفی میکند.
• Encapsulation (کپسولهسازی) متغیرها و متدهای مرتبط را درون اشیا ذخیره میکند و از آنها محافظت میکند.
• Inheritance (وراثت) به زیر کلاسها اجازه میدهد تا از خصوصیات کلاسهای والدین استفاده کنند.
• Polymorphism (چندریختی) به اشیا و متدها اجازه میدهد تا با چندین موقعیت مختلف تنها با یک interface (واسط) سروکار داشته باشند و کنار بیایند.
اگر بتوانید این موارد را به خاطر بسپارید، میتوانید درک درستی از اینکه برنامهنویسی شیءگرا چیست داشته باشید. 4 اصل اساسی برنامه شیءگرا که به آن اشاره شد، ممکن است برای درک کامل، کمی سخت باشند. اما بهمحض اینکه شروع به برنامهنویسی کنید، واضحتر و روشنتر میشوند.
به یاد داشته باشید که ما در این مقاله فقط در مورد کلیات بحث کردیم. زیانهای برنامه شیءگرا مختلف، خواستهها و راههای خود را برای انجام کارها دارند. بهمحض اینکه زبان برنامهنویسی مناسب خودتان را پیدا کردید، شروع به یادگیری نحوه قرار دادن اصول OOP (Object Oriented Programming، برنامهنویسی شیءگرا) در آن زبان در عمل کنید.