نیک آموز > وبلاگ > مهندسی نرم افزار > ۱۰ تا از مفاهیم زبان برنامه‌نویسی شی‌گرا (OOP) به زبان ساده!!!
۱۰ تا از مفاهیم زبان برنامه‌نویسی شی‌گرا (OOP) به زبان ساده!!!

۱۰ تا از مفاهیم زبان برنامه‌نویسی شی‌گرا (OOP) به زبان ساده!!!

تاریخ انتشار: ۱۶ اردیبهشت ۱۳۹۷
آخرین بروزرسانی: 06 بهمن 1404
زمان مطالعه: 10 دقیقه
۵
(۳)

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

برنامه‌نویسی شی‌گرا چیست؟

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

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

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

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

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

قبل از آشنایی با مفاهیم زبان برنامه‌نویسی شی‌گرا بهتر است کمی با تاریخچه شی‌گرایی آشنا شویم. تاریخچه برنامه‌نویسی شی‌گرا به دهه ۱۹۶۰ برمی‌گردد، زمانی که محققان به‌دنبال روش‌هایی برای مدل‌سازی بهتر سیستم‌های پیچیده و نزدیک‌تر به دنیای واقعی بودند. اولین زبان معروف شی‌گرا، Simula بود که در سال ۱۹۶۷ معرفی شد و مفهوم «کلاس» و «شی» را پایه‌گذاری کرد. بعد از آن، در دهه ۱۹۸۰ زبان Smalltalk توسعه یافت و شی‌گرایی را به‌عنوان یک پارادایم کامل و عملیاتی معرفی کرد، به‌طوری که همه چیز در آن یک شی بود. در دهه ۱۹۹۰، با رشد نرم‌افزارهای بزرگ و نیاز به ساختار و مقیاس‌پذیری، زبان‌هایی مثل ++C و Java شی‌گرایی را وارد دنیای صنعتی و تجاری کردند و از آن زمان تا امروز، OOP به یکی از پایه‌های اصلی توسعه نرم‌افزار تبدیل شده است.

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

زبان نوع شی‌گرایی ویژگی‌های شی‌گرا کاربردهای رایج توضیح
آموزش Java کاملاً شی‌گرا Class، Object، Inheritance، Polymorphism، Encapsulation نرم‌افزارهای سازمانی، اندروید جاوا از پایه برای OOP ساخته شده‌است. تقریباً هیچ کاری خارج از کلاس انجام نمی‌دهید. مناسب پروژه‌های بزرگ و ساخت‌یافته، ولی انعطاف‌پذیری‌اش کم است.
آموزش ++C ترکیبی (رویه‌ای + شی‌گرا) Class، Inheritance، Polymorphism سیستم‌عامل، بازی‌سازی، نرم‌افزارهای سطح پایین قدرت زیاد، کنترل کامل روی حافظه، و در عوض پیچیدگی بالا. شی‌گرایی دارد، ولی مجبور نمی‌کند از آن استفاده کنید.
آموزش #C کاملاً شی‌گرا Class، Interface، Inheritance، Polymorphism اپلیکیشن‌های ویندوز، وب، Unity نسخهٔ منظم‌تر و مدرن‌تر جاوا با ابزارهای قوی. برای معماری تمیز و پروژه‌های صنعتی انتخاب منطقی است.
آموزش پایتون شی‌گرا + چندسبکی Class، Inheritance، Polymorphism هوش مصنوعی، علم داده، وب از OOP پشتیبانی کامل می‌کند، ولی مجبور نمی‌کند. همین آزادی هم نقطهٔ قوتش است هم دلیل کدهای شلخته خیلی‌ها.
آموزش Ruby کاملاً شی‌گرا Everything is Object توسعهٔ وب در روبی حتی عدد هم شی است. زبان برای خوانایی و شی‌گرایی ناب طراحی شده، نه برای سرعت یا کنترل سطح پایین.
آموزش جاوا اسکریپت شی‌گرایی مبتنی بر Prototype Object، Prototype فرانت‌اند و بک‌اند وب مدلش با بقیه فرق دارد. کلاس‌ها ظاهری‌اند؛ اصل ماجرا prototype است.

 

اصول برنامه‌نویسی شی‌گرا
اصول برنامه‌نویسی شی‌گرا

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

برنامه‌نویسی شی‌گرا یک الگوی طراحی است که در آن برنامه با استفاده از اشیا (Objects) و کلاس‌ها (Classes) سازماندهی می‌شود به‌جای اینکه فقط دستورات پشت سر هم اجرا شوند. این سبک برنامه‌نویسی در توسعهٔ نرم‌افزارهای بزرگ، پیچیده و قابل نگه‌داری بسیار کاربردی است، چون باعث می‌شود سیستم به بخش‌های مستقل تقسیم شود و هر بخش بتواند جداگانه توسعه، تست و اصلاح شود. OOP به تیم‌های توسعه امکان می‌دهد که بخشی از پروژه را بدون تأثیر روی بقیه گسترش دهند، کدهای تکراری را کاهش دهند و امنیت و ساختار بهتری در برنامه ایجاد کنند. همچنین این روش با مدل‌سازی مفاهیم دنیای واقعی به شکل اشیا، فهم پروژه را برای برنامه‌نویسان و افراد غیرتخصصی ساده‌تر می‌کند، به خصوص زمانی که پروژه بزرگ می‌شود یا نیاز دارد توسعهٔ سریع داشته باشد.

مفاهیم زبان برنامه‌نویسی شی‌گرا معنی کاربرد در OOP مثال ساده
Object (شی) موجودیتی با داده و رفتار واحد اصلی در OOP که برنامه با آن ساخته می‌شود ماشین، کاربر، محصول
Class (کلاس) قالب یا نقشه‌ی ساخت شی تعریف ویژگی‌ها و رفتارهای شی کلاس Car که مشخصات ماشین را دارد
Attribute / Property (ویژگی/خصوصیت) داده‌های مربوط به شی نگهداری اطلاعات شی color, age, price
Method (متد) عملکرد یا رفتار شی کارهایی که شی انجام می‌دهد drive(), calculatePrice()
Constructor (سازنده) متدی برای ایجاد شی و مقداردهی اولیه تنظیم مقدار اولیه‌ی ویژگی‌ها Car("red", 2020)
Destructor (تخریب‌کننده) متدی برای آزادسازی منابع قبل از حذف شی مدیریت حافظه یا منابع در C++: ~Car()
Encapsulation (کپسوله‌سازی) محافظت از داده‌ها با مخفی‌کردن جزئیات جلوگیری از تغییرات اشتباه و کنترل دسترسی private age; public getAge()
Abstraction (انتزاع) نمایش فقط ویژگی‌های ضروری کاهش پیچیدگی و تمرکز روی کار اصلی نمایش ماشین با start() بدون توضیح موتور
Inheritance (وراثت) ارث‌بری کلاس جدید از کلاس موجود استفاده مجدد از کد و ایجاد سلسله‌مراتب ElectricCar از Car ارث می‌برد
Polymorphism (چندریختی) یک رابط، چند رفتار انعطاف‌پذیری و کاهش شرط‌ها draw() برای شکل‌های مختلف
Interface (رابط) قرارداد برای کلاس‌ها تضمین وجود متدها در کلاس‌ها کلاس‌ها باید متد pay() را داشته باشند
Abstract Class (کلاس انتزاعی) کلاس پایه‌ای که نمی‌توان از آن شی ساخت تعریف قالب مشترک برای زیرکلاس‌ها Shape که فقط draw() را تعریف می‌کند
Overloading (بارگذاری متد) تعریف چند متد با یک نام ولی پارامترهای مختلف افزایش انعطاف در استفاده از متدها add(int a, int b) و add(double a, double b)
Overriding (بازنویسی متد) تغییر رفتار متد در زیرکلاس پیاده‌سازی خاص برای هر کلاس draw() در Circle و Rectangle
Association (ارتباط) رابطه‌ی ساده بین دو کلاس استفاده از یک کلاس در کلاس دیگر Student و Course
Aggregation (تجمیع) رابطه «یک-به-چند» با مالکیت ضعیف بخش‌ها می‌توانند مستقل باشند کلاس Library و Book
Composition (ترکیب) رابطه «یک-به-چند» با مالکیت قوی اگر والد حذف شود، فرزند هم حذف می‌شود Car و Engine
Dependency (وابستگی) استفاده‌ی یک کلاس از کلاس دیگر در لحظه نشان‌دهنده‌ی وابستگی کوتاه‌مدت Order از PaymentService استفاده می‌کند

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

روش طراحی شی‌گرا شامل ۴ رکن اصلی می‌باشد که بهتر است درک خوبی از آنها داشته باشیم تا بتوانیم از هر کدام به درستی در جایگاه خودش استفاده کنیم و از مزایای آن بهره ببریم.
1- Abstraction
2- Encapsulation
3- Inheritance
4- Polymorphism

Abstraction

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

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

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

Encapsulation

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

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

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

Inheritance

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

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

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

در آخر اگر بخواهیم تعریف آکادمیک‌تری از ارث‌بری داشته باشیم به تعریف زیر خواهیم رسید:
مفهوم ارث‌بری عبارت است از مشتق کردن یک کلاس جدید از کلاس موجود و ارث‌بردن تمام ویژگی‌های قابل دسترس آن و افزودن ویژگی‌های جدید به کلاس مشتق شده. همان‌طور که در تصویر نیز مشخص است رابطه ارث‌بری به رابطه is-a معروف است. به این معنی که گفته می‌شود کلاس فرزند هست از نوع کلاس پدر. به عنوان مثال ماشین مسابقه‌ای از نوع ماشین می‌باشد. نکته دیگری که در پیاده‌سازی اصل ارث‌بری در زبان سی‌شارپ وجود دارد این است که هر کلاس فقط می‌تواند فرزند یک کلاس دیگر باشد. که در اصطلاح گفته می‌شود سی‌شارپ فقط از Single Inheritance پشتیبانی می‌کند.

Polymorphism

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

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

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

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

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

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

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

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

سخن پایانی مفاهیم زبان برنامه‌نویسی شی‌گرا

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

سوالات متداول مفاهیم زبان برنامه‌نویسی شی‌گرا

۱) برنامه‌نویسی شی‌گرا چیست و چرا به‌وجود آمد؟

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

۲) «موجودیت (Entity)» در شی‌گرایی دقیقاً یعنی چه؟

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

۳) چرا شی‌گرایی برای پروژه‌های بزرگ مناسب‌تر است؟

چون پروژه‌های بزرگ پیچیده‌اند و تغییرات زیاد دارند. شی‌گرایی با تقسیم برنامه به بخش‌های مستقل، باعث می‌شود تغییرات در یک بخش روی بقیه تأثیر نگذارد و توسعه تیمی راحت‌تر شود.

۴) تفاوت «شی‌گرایی» با «برنامه‌نویسی رویه‌ای» چیست؟

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

۵) چرا «ارث‌بری (Inheritance)» یکی از اصول مهم شی‌گرایی است؟

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

۶) تفاوت «Abstraction» و «Encapsulation» چیست؟ این‌ها به هم شبیه نیستند؟

  • Abstraction تعیین می‌کند چه چیزهایی باید نمایش داده شوند (چه جزئیاتی لازم است).

  • Encapsulation تعیین می‌کند چه کسی می‌تواند به آن جزئیات دسترسی داشته باشد (میزان دسترسی و محافظت).

    پس نزدیک‌اند اما یکی هدف (انتخاب جزئیات) و دیگری روش (محدود کردن دسترسی) است.

۷) Polymorphism دقیقاً چه مشکلی را حل می‌کند؟

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

۸) چه زمانی باید از شی‌گرایی استفاده کنیم و چه زمانی نه؟

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

۹) آیا تمام زبان‌های برنامه‌نویسی شی‌گرا هستند؟

نه. بعضی زبان‌ها کاملاً شی‌گرا هستند (مثل Java)، بعضی ترکیبی (مثل C++) و بعضی‌ها شی‌گرا + چندسبکی (مثل Python). برخی زبان‌ها هم فقط تا حدی از OOP پشتیبانی می‌کنند.

۱۰) چرا «شی‌گرایی» باعث مدل‌سازی بهتر دنیای واقعی می‌شود؟

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

 

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۳

اولین نفر باش

title sign
دانلود مقاله
۱۰ تا از مفاهیم زبان برنامه‌نویسی شی‌گرا (OOP) به زبان ساده!!!
فرمت PDF
7 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
سیدسروش سیدصدر
مقالات
1 مقاله توسط این نویسنده
محصولات
5 دوره توسط این نویسنده
سیدسروش سیدصدر

سروش سیدصدر بیش از ۱۰ سال است که بصورت حرفه‌ای با سی شارپ و SQL Server کار می‌کند. از دیگر تخصص های او می توان به مدرس دوره های سی‌شارپ در نیک آموز، برنامه نویس Desktop Application با Oracle و #C در سازمان فن آوری اطلاعات و ارتباطات شهرداری تهران، برنامه نویس وب ASP.Net و SQL Server در شرکت ایران هاست، برنامه نویس Desktop Application و #C و SQL Server در شرکت فناوری اطلاعات پارمیس، برنامه نویس وب ASP.Net و SQL Server در شرکت طیف نرم افزاران پارسیان؛ مسلط به تحلیل و طراحی سیستم‌های مالی و اداری، مسلط به مباحث برنامه نویسی ASP.NET MVC، مسلط به مباحث SQL Server، مدرس مباحث سی شارپ و SQL Server

title sign
معرفی محصول
title sign
دیدگاه کاربران

    • خیلی عالی بود، ممنون از شما استاد

    • سروش جان ممنون از مقاله خوبی که در سایت قرار دادی