برنامه‌نویسی شئ‌گرا چیست؟ (توضیحی بسیار ساده)

ترجمه و تالیف : ارسطو عباسی
تاریخ انتشار : 13 خرداد 98
خواندن در 3 دقیقه
دسته بندی ها : برنامه نویسی

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

برنامه‌نویسی شئ‌گرا کاملا براساس یک سری کلاس و یک سری شئ توسعه داده می‌شود.

حال شاید فکر کنید که منظورمان از این سخن چیست؟ خب برای درک این قضیه ابتدا نیاز داریم که روش عادی و حالتی که سابقا با استفاده از آن برنامه‌نویسی می‌کردیم را به یاد بیاوریم. 

حالت عادی به چه شکلی است؟

برنامه‌نویسی شئ‌گرا چیست؟ (توضیحی بسیار ساده)

سابقا که با استفاده از زبان‌های برنامه‌نویسی شبیه به C و یا COBOL کدنویسی می‌کردیم از حالتی به نام برنامه‌نویسی رویه‌ای استفاده می‌کردیم. منظورمان از کلمه رویه‌ای برنامه‌نویسی است که آن را ساختاریافته می‌نامند. در این حالت برنامه به صورت یکسری خط پشت سر هم اجرا می‌شد و این روند از خط اول برنامه تا خط پایانی ادامه داشت. کامپایلر نیز برای اجرای کدها دقیقا همین روند را پیش می‌گرفت.

برنامه‌نویسی شئ‌گرا چیست؟ (توضیحی بسیار ساده)

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

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

برای مثال ما می‌توانیم یک کلاس والد داشته باشیم که کلاس فرزند تمام خصوصیات آن را به ارث می‌برد و حتی ویژگی‌های جدیدی را به آن اضافه می‌کند. این مثال مطمئنا برای‌تان عجیب و غریب است. خب بیایید دقیقا مفهوم کلاس‌ها و شی‌ء‌ها را متوجه شویم.

کلاس‌ها و شئ‌ها

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

بنابراین این موارد همه می‌توانند در یک دسته‌بندی مشخص «اشیاء با قابلیت حمل و نقل» به عنوان مثال قرار بگیرند. این دسته را کلاس می‌نامیم.

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

برنامه‌نویسی شئ‌گرا چیست؟ (توضیحی بسیار ساده)

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

در زیر می‌توانید حالت پایه‌ای از تعریف یک کلاس را در یک زبان برنامه‌نویسی مشاهده کنید:

برنامه‌نویسی شئ‌گرا چیست؟ (توضیحی بسیار ساده)

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

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

بحث اشیاء و کلاس‌ها تنها یک بخش کوچک اما اساسی از برنامه‌نویسی شئ‌گرا است. با این حال برنامه‌نویسی شئ‌گرا دارای حالت‌ها و ویژگی‌های بسیار دیگری مانند ارث‌بری، کپسوله‌سازی، چند ریختی و… است. 

در زیر می‌توانید با توضیحاتی مختصر در ارتباط با این موارد اطلاعات بیشتری را کسب کنید:

  • ارث‌بری – ارث‌بری یعنی اینکه شما یک سری داده‌ها را از یک کلاس دیگر به ارث می‌برید و همچنین یک سری اطلاعات به آن اضافه می‌کنید. «تصور بکنید که خودتون یه سری پول دارید اما وقتی پدرتون فوت میکنه، پول‌های ایشونم میاد تو جیب‌تون». در برنامه‌نویسی ما هر چقدر کلاس که بخواهیم می‌توانیم درست کنیم. اما این کلاس‌ها حداقل باید از یک کلاس والد ارث‌بری بکنند. این کلاس معمولا کلاس اصلی برنامه‌ است. اما یک کلاس می‌تواند از کلاس‌های دیگر نیز ارث بری بکند. ارث بری به برنامه‌نویس اجازه می‌دهد تا از بازنویسی کدها اجتناب بکند و کدهای تکراری ننویسد.
  • انتزاع داده‌ای – یک کلاس نامی منحصر به فرد دارد. این ویژگی می‌تواند بسیار کاربردی باشد. همچنین ما با یک روشی که به آن Access Specifier می‌گوییم می‌توانیم کنترل داده‌های کلاس را در اختیار بگیریم. با تعیین این کار روابط بین اشیاء را به صورت واضح تعیین می‌کنید.
  • کپسوله‌سازی – جمع کردن یک مجموعه داده در یک واحد تکی را کپسوله سازی می‌گویند. این کار به برنامه‌نویس این امکان را می‌دهد تا بتواند دسترسی به یکسری داده را تنها به ماژولی بدهد که آن را ساخته است. به صورتی ساده باید بگویم که داده‌ها در خارج از دنیای آن ماژول در دسترس نخواهد بود و تنها توابعی که جمع آوری شده‌اند در آن کلاس قابل دسترس هستند.
  • چند ریختی – منظور از این مقوله فرم‌ها و شکل‌هایی است که در یک برنامه‌نویسی شئ‌گرا اتفاق می‌افتد.
  • نوع داده‌ای جدید – کلاس‌ها به برنامه‌نویسان این امکان را می‌دهد تا بتوانند نوع داده‌ای منحصر به فرد خودشان را ایجاد بکنند. این ویژگی‌ برای برنامه‌نویسانی که می‌خواهند نوع داده‌ای منحصر به فردی داشته باشند که یکسری خروجی منحصر به فرد را ارسال می‌کند بسیار مناسب است.

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

هر چیزی که شما در جهان مشاهده می‌کنید علاوه بر یکسری مزایا یکسری معایب نیز دارد. برنامه‌نویسی شئ‌گرا نیز درست مانند این مقوله، معایبی دارد. در لیست زیر می‌توانید لیستی از این معایب را مشاهده بکنید:

  • روند یادگیری سخت – درک کامل برنامه‌نویسی شئ‌گرا و کانسپت‌های آن می‌تواند بسیار سخت باشد. زمان زیادی می‌خواهد و گاهی اوقات افراد واقعا نمی‌دانند با این موضوعات چگونه کار بکنند.
  • سرعت پایین – کامپایل یک برنامه که با پارادایم شئ‌گرا نوشته شده است زمان بیشتری را نسبت به کامپایل یک برنامه در پارادایم رویه‌ای می‌طلبد. دلیل این موضوع این است که در برنامه‌نویسی شئ‌گرا دستورالعمل‌های بسیار بیشتری وجود دارد که باید اجرا شود.
  • اعتبار کم – منظور از اعتبار کم این است که مشکلاتی در دنیای واقعی وجود دارد که واقعا با استفاده از برنامه‌نویسی شئ‌گرا به خوبی قابل حل نیستند و شما باید سراغ پارادایم‌های دیگر برنامه نویسی بروید.

در پایان

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

منبع

گردآوری و تالیف ارسطو عباسی
آفلاین
user-avatar

من ارسطو‌ام :) کافی نیست؟! :)

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید