برنامه نویسی ۸۱ بازدید

«برنامه نویسی شی گرا» (Object-Oriented Programming | OOP) به عنوان یکی از اصلی‌ترین رویکردهای برنامه نویسی محسوب می‌شود. تقریباً تمامی برنامه نویسان و توسعه دهندگان با این مفهوم آشنا هستند و در توسعه پروژه‌های نرم‌افزاری خود از آن استفاده می‌کنند. بدین‌ترتیب، افرادی که قصد دارند در حوزه برنامه نویسی مشغول به کار شوند، باید به یادگیری مفاهیم این رویکرد پرداخته و روش پیاده‌سازی آن را یاد بگیرند. در مقاله حاضر، سعی بر این بوده است با ارائه مثال‌هایی از دنیای واقعی، به پرسشی کلیدی پیرامون «شی گرایی چیست» پاسخ داده شده و اجزای اصلی این رویکرد و اصول مهم آن اشاره شود.

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

در اوایل عصر محاسبات، برنامه نویسی صرفاً محدود به نوشتن برنامه با زبان‌ ماشین می‌شد. زبان ماشین شامل مجموعه‌ای از دستورات در قالب اعداد 0 و 1 (به عنوان مثال، 0110001111) است که برای ماشین و پردازنده‌ها نوشته می‌شود.

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

زبان‌های اسمبلی به منظور طراحی «ریزپردازنده‌ها» (Microprocessors) استفاده می‌شدند. به عبارتی، با اختراع ریزپردازنده‌ها، به مراتب از زبان‌های اسمبلی در صنعت بیش از پیش استفاده شد. با این حال، این زبان‌ها پاسخ‌گوی طراحی و توسعه نرم‌افزارهای کاربردی امروزی نبودند. همین امر سبب شد تا انواع رویکردهای برنامه نویسی «ساختاریافته» (Structured Programming) و «رویه‌گرا» (Procedural Programming) در اواخر دهه 1970 و اوایل دهه 1980 ظهور پیدا کنند.

تاریخچه پیدایش برنامه نویسی شی گرا
تاریخچه پیدایش شی گرایی

رویکرد برنامه نویسی ساختاریافته

مهم‌ترین اصل در رویکرد برنامه نویسی ساختاریافته، تقسیم برنامه به «ماژول‌ها» (Modules) و «توابع» (Functions) مختلف بود. استفاده از ماژول و تابع در این سبک از برنامه نویسی باعث می‌شود درک و خوانایی برنامه بهتر شود.

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

رویکرد برنامه نویسی رویه گرا

رویکرد برنامه نویسی رویه‌گرا با عنوان رویکرد «بالا-به-پایین» (Top-Down) نیز شناخته می‌شود. در این سبک از برنامه نویسی، تمامی دستورات در توالی هم نوشته شده و به‌ترتیب اجرا می‌شوند. زبان‌های برنامه نویسی «بسیک» (Basic)، «کوبل» (Cobol) و «فورترن» (Fortran) را می‌توان جزء زبان‌هایی محسوب کرد که از این رویکرد پشتیبانی می‌کنند.

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

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

شی گرایی چیست ؟

برنامه نویسی شی گرا رویکردی از برنامه نویسی است که برای طراحی یک پروژه نرم‌افزاری، بر روی داده‌ها یا «اشیا» (Objects) تمرکز دارد. به عبارتی، به منظور پاسخ به پرسش «شی گرایی چیست»، باید به مفاهیم اصلی و کلیدی این رویکرد اشاره کرد که در ادامه فهرست شده‌اند:

  • شی
  • «ویژگی‌ها | مشخصه‌ها» (Properties | Attributes)
  • «روال‌ها | متدها» (Procedures | Methods)
  • «کلاس» (Class)

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

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

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

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

مولفه های شی گرایی

بدین منظور، می‌توان برای رسیدن به پاسخ پرسش «شی در شی گرایی چیست»، از مثالی قابل لمس در دنیای واقعی نظیر خودرو استفاده کرد. خودرو را می‌توان به عنوان یک مفهوم کلی در نظر گرفت که دارای ویژگی‌هایی مانند نام، رنگ، سال تولید، اندازه و تعداد چرخ‌ها است. این ویژگی‌ها در شی گرایی، «مشخصه» (Attribute) نامیده می‌شوند. همچنین، خودرو دارای عملکردهایی نظیر روشن شدن، حرکت کردن، شتاب گرفتن و متوقف شدن است که هر یک از این عملکردها و رفتارها را در بحث شی گرایی «متد» (Method) می‌نامند.

بنز را می‌توان «نمونه‌ای» (Instance) از خودرو در نظر گرفت که تمامی مشخصه‌ها و متدهای این مفهوم کلی را دارا است. کامیون را نیز می‌توان به عنوان نمونه دیگری از مفهوم کلی خودرو تلقی کرد که به لحاظ مشخصه‌ها و متدها، با بنز مشابهت دارد. به عبارتی، هر دو ماشین، دارای مشخصه‌های نام، رنگ، سال تولید و تعداد چرخ هستند اما مقادیر این مشخصه‌ها برای هر یک از اشیاء بنز و کامیون یکسان نیست. به عنوان مثال، هر یک از این دو ماشین می‌توانند به لحاظ رنگ بدنه، با هم متفاوت باشند.

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

مطلب پیشنهادی:
شی در برنامه نویسی چیست ؟ — مفهوم آبجکت به زبان ساده
در این مقاله به این سوال پاسخ داده شده که شی در برنامه نویسی چیست، همچنین به سایر موضوعات پیرامون مفهوم شی در برنامه نویسی هم پرداخته شده است.

مشخصه در برنامه نویسی شی گرا چیست ؟

مشخصه‌ها یا «متغیرها» (Variables) به عنوان «ویژگی‌های» (Characteristics) شی تلقی می‌شوند. زمانی که شی جدیدی ساخته می‌شود، می‌توان اطلاعات آن شی را با استفاده از مشخصه‌ها ذخیره کرد. در مثال قبل، ماشین بنز، شی جدیدی است که مشخصه‌های مختلفی نظیر نام، رنگ، تعداد چرخ‌ها، تعداد پنجره‌ها و سایر ویژگی‌ها دارد.

متد در شی گرایی چیست ؟

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

معرفی فیلم های آموزش برنامه نویسی

مجموعه فیلم های آموزش شی گرایی

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

  • برای یادگیری بیشتر درباره شی گرایی و دسترسی به همه آموزش های برنامه نویسی فرادرس + اینجا کلیک کنید.

کلاس در برنامه نویسی شی گرا چیست ؟

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

مفهوم کلاس در شی گرایی

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

مثال از شی گرایی
مثالی از مولفه های شی گرایی

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

  • کلاس می‌تواند شامل «زیرکلاس‌های» (Subclasses) دیگری باشد که تمامی این زیرکلاس‌ها، از کلاس والد خود ارث‌بری می‌کنند.
  • زیرکلاس‌ها می‌توانند دارای مشخصه‌ها و متدهایی باشند که در کلاس والد تعریف نشده‌اند.
  • ساختار کلاس و زیرکلاس‌های آن، ساختار سلسله‌مراتبی است.
مطلب پیشنهادی:
مفهوم کلاس در برنامه نویسی — همراه با نمونه مثال عملی
در این مقاله، ابتدا به تعاریف و مباحث نظری مفهوم کلاس در برنامه نویسی شی گرا و سپس به آموزش عملی و مثال‌های مختلف پیرامون آن پرداخته شده است.

اصول شی گرایی چیست؟

رویکرد برنامه نویسی شی گرا علاوه‌بر مفاهیم شی و کلاس، بر چهار اصل شی گرایی نیز تاکید دارد که عبارت‌اند از:

در ادامه مطلب حاضر، به توضیح هر یک از این اصول به همراه مثالی از دنیای واقعی پرداخته می‌شود.

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

اصل کپسوله سازی در برنامه نویسی شی گرا چیست ؟

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

به منظور تعریف کلاس، می‌توان سه حالت «خصوصی» (Private)، «محافظت شده» (Protected) و «عمومی» (Public) را برای تعریف مشخصه‌ها و متدها در نظر گرفت:

  • حالت خصوصی | «رابط داخلی» (Internal Interface): به متدها و مشخصه‌هایی که حالت خصوصی دارند، فقط می‌توان از طریق سایر متدهای درون کلاس دسترسی داشت.
  • حالت محافظت شده: به متدها و مشخصه‌های کلاس والد که حالت محافظت شده دارند، فقط می‌توان از طریق زیرکلاس‌ها (کلاس‌های فرزند) دسترسی داشت.
  • حالت عمومی | «رابط خارجی» (External Interface): به متدها و مشخصه‌هایی که حالت عمومی دارند، می‌توان از بیرون کلاس نیز دسترسی داشت.

کپسوله سازی چیست

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

مطلب پیشنهادی:
کپسوله‌سازی در ++C و C — به زبان ساده
در این مقاله قصد داریم نمونه‌هایی از کپسوله‌سازی در ++C و C را مورد بررسی قرار دهیم. همچنین روش‌های دور زدن آن را نیز معرفی می‌کنیم.

اصل انتزاع در شی گرایی چیست ؟

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

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

مثال از اصل انتزاع

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

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

اصل وراثت در شی گرایی چیست ؟

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

مثال از اصل وراثت
نمونه‌ای از اصل وراثت در شی گرایی

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

  • «وراثت منفرد» (Single Inheritance): در این نوع وراثت، هر کلاس فرزند تنها دارای یک کلاس والد است.
  • «وراثت چندگانه» (Multiple Inheritance): در این نوع وراثت، هر کلاس فرزند می‌تواند دارای بیش از یک کلاس والد باشد.
  • «وراثت چند سطحی» (Multi-Level Inheritance): در این نوع وراثت، کلاس فرزند، از کلاس والدی ارث‌بری می‌کند که آن کلاس، به عنوان کلاس فرزند، از کلاس والد دیگری ارث می‌برد.
  • «وراثت سلسله‌مراتبی» (Hierarchical Inheritance): در این نوع وراثت، ساختار ارث‌بری کلاس‌ها به‌صورت سلسله‌مراتبی است. به عبارتی، یک کلاس والد وجود دارد که تمامی کلاس‌های فرزند از آن ارث‌بری می‌کنند.
  • «وراثت ترکیبی» (Hybrid Inheritance): این نوع وراثت، ترکیبی از روش‌های ارث‌بری منفرد و چندگانه است.
انواع ارث بری در شی گرایی

در ادامه مطلب حاضر، به توضیح آخرین اصل شی گرایی، یعنی چندریختی، پرداخته می‌شود.

اصل چندریختی در شی گرایی چیست ؟

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

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

چنانچه کلاس والد وسایل نقلیه، متدی با نام «روشن کردن وسیله نقلیه» داشته باشد و کلاس‌های فرزند از این کلاس والد ارث‌بری کنند، تمامی کلاس‌های فرزند نیز متد «روشن کردن وسیله نقلیه» را به ارث می‌برند؛ اما می‌توان نحوه روشن کردن وسیله نقلیه در هر یک از کلاس‌های فرزند را به شیوه‌ای متفاوت تعریف کرد. به عنوان مثال، یکی از وسایل نقلیه ممکن است با زدن یک دکمه، شروع به کار کند و وسیله نقلیه دیگر را بتوان با استفاده از چرخاندن یک سوییچ روشن کرد.

مطلب پیشنهادی:
پلی مورفیسم در برنامه نویسی چیست ؟ — مفهوم به زبان ساده + مثال
چندریختی یا پلی مورفیسم در برنامه نویسی مفهوم مهمی در شی است. در این مقاله، این سوال پاسخ داده شده که پلی مورفیسم در برنامه نویسی چیست.

مزایا و معایب رویکرد شی گرایی چیست ؟

رویکرد شی گرا در مقایسه با سایر رویکردهای برنامه نویسی از مزایایی برخوردار است که در ادامه به آن‌ها اشاره شده است:

  • ویژگی «ماژولار بودن» (Modularity): ساختار برنامه نویسی ماژولار، این امکان را فراهم می‌کند که بتوان برنامه را به بخش‌های کوچک‌تری تقسیم و هر یک از این بخش‌ها را در قالب توابع مختلف پیاده‌سازی کرد. در رویکرد شی گرایی با استفاده از اصل کپسوله‌سازی می‌توان از برنامه نویسی ماژولار بهره برد. این امر باعث می‌شود توسعه نرم‌افزار توسط تیم‌های مختلف سازمان و خطایابی قطعه کدها بهتر و سریع‌تر انجام شوند.
  • قابلیت استفاده مجدد از کدها: با استفاده از اصل ارث‌بری می‌توان از نوشتن کد تکراری در برنامه جلوگیری کرد. همین امر سبب می‌شود از یک قطعه کد در پروژه فعلی یا سایر پروژه‌های برنامه نویسی بتوان به دفعات استفاده کرد.
  • افزایش میزان بهره‌وری: دو اصل ارث‌بری و کپسوله‌سازی در شی گرایی این امکان را فراهم می‌کنند که برنامه‌نویسان به دفعات، از قطعه‌ کدهای نوشته شده در قالب توابع و کلاس‌ها استفاده کنند که در نتیجه، سرعت توسعه پروژه نرم‌افزاری افزایش پیدا می‌کند.
  • قابلیت به‌روزرسانی و مقیاس‌پذیری آسان: برنامه نویسی شی گرا با ارائه چهار اصل خود این امکان را فراهم می‌کند تا بتوان برنامه‌ها را به‌سادگی به‌روزرسانی کرد و هر بخش از نرم‌افزار را به‌صورت جداگانه بسط داد.
  • افزایش سطح امنیت برنامه نویسی: دو اصل کپسوله‌سازی و انتزاع در رویکرد شی گرایی باعث می‌شوند کدهای برنامه از دسترس کاربران خارجی پنهان باشند.
  • انعطاف‌پذیری بالا: اصل چندریختی در شی گرایی باعث می‌شود که بتوان یک متد با نام مشابه را به نحوی طراحی کرد که بر اساس نیاز کاربر، عملکرد متفاوتی داشته باشد.
مزایا و معایب OOP

رویکرد شی گرایی علاوه‌بر مزیت‌های مختلف، دارای معایبی نیز هست که در ادامه به آن‌ها اشاره شده است:

  • میزان حجم کدهای نوشته شده در پروژه‌هایی که از شی گرایی استفاده می‌کنند، بیشتر از سایر رویکردهای برنامه نویسی است. همین امر سبب می‌شود به زمان بیشتری برای اجرای برنامه نیاز باشد.
  • تنها برخی از زبان‌های برنامه نویسی نظیر پایتون، جاوا، جاوا اسکریپت، C++‎ و C#‎ از رویکرد شی گرایی استفاده می‌کنند.
  • از رویکرد شی گرایی نمی‌توان در پیاده‌سازی تمامی پروژه‌های نرم‌افزاری استفاده کرد.
  • از آنجا که رویکرد برنامه نویسی شی گرا بر پایه مفهوم شی شکل گرفته است، پیش از پیاده‌سازی پروژه نرم‌افزاری، باید زمان زیادی را به تشخیص اشیاء اختصاص داد.

جمع‌بندی

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

اگر این مطلب برای شما مفید بوده است، آموزش‌ها و مطالب زیر نیز به شما پیشنهاد می‌شوند:

بر اساس رای ۹ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

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

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد.