بسم الله الرحمن الرحیم

زبان برنامه نویسی شیء گرا

فهرست علوم
علوم کامپیوتر
کامپیوتر
نکات اچ تی ام ال-html
نکات سی اس اس-css
رسم کردن با css
مخفی و آشکار کردن با سی اس اس

نکات جاوا اسکریپت-java script
پنجره مودال در جاوا اسکریت
مخفی و آشکار کردن با جاوااسکریپت
نکات پی اچ پی-php
وارد کردن متن در وسط فایل با پی اچ پی-php
فهرست جامع تمام اینتیتی های مورد نیاز



شی گرایی چیست؟ — در برنامه نویسی و به زبان ساده

سایت فرادرس

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

 

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

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

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

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

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

تاریخچه پیدایش شی گرایی

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

مثال از شی گرایی

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

مثال از اصل وراثت

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

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

انواع ارث بری در شی گرایی

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

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

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

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

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

 
 

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

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

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

جمع‌بندی

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


















فایل قبلی که این فایل در ارتباط با آن توسط حسن خ ایجاد شده است