برنامه نویسی شی گرا (OOP)

دسته بندی: مباحث عمومی

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

آنچه در این صفحه می خوانید:

معرفی برنامه نویسی شی گرا (OOP)

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

Object-oriented programming به اختصار OOP، یک مدل زبان برنامه نویسی است که آبجکت ها به جای action و داده ها به جای منطق سازماندهی شده است. از لحاظ تاریخی، یک برنامه به عنوان یک روش منطقی مورد توجه قرار گرفته است که داده ورودی را دریافت می کند، پردازش می کند و داده های خروجی را تولید می کند. اولین گام در OOP این است که تمام آبجکت هایی که برنامه نویسان می خواهند دستکاری کنند و نحوه ی ارتباط آنها با یکدیگر را شناسایی کنند. این امر اغلب به عنوان مدل سازی داده شناخته می شود. هنگامی که یک آبجکت شناسایی می شود، به عنوان یک کلاس از آبجکت ها تعریف می شود که نوع داده ای که در آن وجود دارد و هر توالی منطقی که می تواند آن را دستکاری کند تعریف می کند. هر توالی منطقی مختلف به عنوان یک متد شناخته می شود. آبجکت ها با رابط های تعریف شده به نام پیام ها ارتباط برقرار می کنند.

مزایای برنامه نویسی شی گرا (OOP)

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

برنامه نویسی شی گرا از اشیاء استفاده می کند، اما همه تکنیک ها و ساختارهای مرتبط به طور مستقیم در زبان هایی پشتیبانی نمی شوند که ادعا می کنند OOP را پشتیبانی می کنند. ویژگی های ذکر شده در زیر بین زبان هایی که به شدت طبقاتی و شی گرا (یا چند پارادایم با پشتیبانی OOP) مورد استفاده قرار می گیرند مشترک است:

مشترک با زبان های غیر OOP

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

برنامه نویسی مدولار امکان گروه بندی رویه ای به پرونده ها و ماژول ها را برای اهداف سازمانی فراهم می کند. ماژول ها به اسامی نام قرار می گیرند بنابراین شناسه های موجود در یک ماژول با یک رویه یا متغیر به اشتراک گذاری همان نام در پرونده یا ماژول دیگر تضاد ندارند.

اشیاء و کلاس ها

زبان هایی که از برنامه نویسی شی گرا پشتیبانی می کنند (OOP) به طور معمول از ارث برای استفاده مجدد از کد و قابلیت توسعه در قالب کلاس یا نمونه های اولیه استفاده می کنند. کسانی که از کلاس ها استفاده می کنند از دو مفهوم اصلی پشتیبانی می کنند:

  • کلاس ها: تعاریف مربوط به قالب داده ها و رویه ایی موجود برای یک نوع یا کلاس از شی خاص. همچنین ممکن است شامل داده ها و رویه ای (معروف به روش های کلاس) باشد ، یعنی کلاس ها شامل اعضای داده ها و توابع عضو هستند
  • اشیاء(موارد کلاس): اشیاء گاه با چیزهایی که در دنیای واقعی یافت می شوند مطابقت دارند. به عنوان مثال، یک برنامه گرافیکی ممکن است دارای اشیایی مانند "دایره"، "مربع"، "منو" باشد. یک سیستم خرید آنلاین ممکن است دارای اشیایی مانند "سبد خرید"، "مشتری" و "محصول" باشد. بعضی اوقات اشیاء نمایانگر اشخاص انتزاعی تر هستند، مانند یک شی که یک پرونده باز را نشان می دهد، یا شیئی که سرویس ترجمه اندازه گیری ها را از ایالات متحده معمولی به متریک ارائه می دهد.

برنامه نویسی شی گرا چیزی بیش از کلاس ها و اشیاء نیست. این یک پارادایم کاملاً برنامه نویسی است که مبتنی بر اشیاء (ساختارهای داده) است که شامل فیلد و روش داده است. درک این موضوع ضروری است؛ استفاده از کلاسها برای سازماندهی دسته ای از روش های نامربوط در کنار هم جهت گیری شی نیست. گفته می شود که هر شی نمونه ای از یک کلاس خاص است (برای مثال، ممکن است یک شیء با نام "Mary" نمونه ای از کلاس Employee باشد). روش های برنامه نویسی شی گرا به عنوان "متد" شناخته می شوند. متغیرها همچنین به عنوان فیلدها، اعضا، ویژگی ها یا ویژگی ها شناخته می شوند. این به شرایط زیر منجر می شود:

  • متغیرهای کلاس: به طور کلی به کلاس تعلق دارند؛ فقط یک نسخه از هر یک وجود دارد
  • متغیرهای instance یا attributes: داده هایی که به اشیاء فردی تعلق دارند. هر شیء نسخه خاص خود را از هر یک دارد.
  • متغیرهای عضو: به متغیرهای کلاس و نمونه اشاره دارد که توسط یک کلاس خاص تعریف شده است.
  • متد های کلاس: به طور کلی به کلاس تعلق دارند و فقط به متغیرهای کلاس و ورودی های فراخوانی دسترسی دارند.
  • متد های instance: متعلق به اشیاء مجزا است و برای متغیرهای instance برای شی خاص مورد استفاده، ورودی ها و متغیرهای کلاس به آنها دسترسی دارند.

کپسوله سازی

Encapsulation یک مفهوم برنامه نویسی شی گرا است که داده ها و توابعی را که داده ها را دستکاری می کند، به هم متصل می کند و هم از دخالت و سوء استفاده در خارج محافظت می کند. رمزگذاری داده ها منجر به مفهوم مهم OOP از مخفی سازی داده ها شد. اگر یک کلاس اجازه دسترسی به کد را نمی دهد تا به داده های داخلی دسترسی داشته باشد و فقط از طریق روش ها اجازه دسترسی دارد، این یک شکل قوی از انتزاع یا اطلاعاتی است که به عنوان encapsulation شناخته می شود. بعنوان مثال برخی از زبانها (جاوا) اجازه می دهند کلاس ها محدودیتهای دسترسی را صریحاً اعمال کنند، به عنوان مثال نشان دادن داده های داخلی با کلمه کلیدی خصوصی و روش های تعیین شده برای استفاده توسط کدهای خارج از کلاس با کلمه کلیدی عمومی. متد ها همچنین ممکن است سطوح عمومی، خصوصی یا واسطه ای مانند محافظت شده طراحی شوند (که اجازه می دهد از همان کلاس و زیر کلاس های آن دسترسی داشته باشید، اما اشیاء یک کلاس متفاوت نیستند). در زبانهای دیگر (مانند پایتون) این فقط توسط کنوانسیون اعمال می شود (برای مثال، روش های خصوصی ممکن است دارای اسامی باشند که با یک زیرخط شروع می شوند). محصور کردن از نگرانی کد خارجی با کار داخلی یک شی جلوگیری می کند. این امر قابلیت تغییر کارایی کد را تسهیل می کند، برای مثال به نویسنده کلاس اجازه می دهد تا نحوه تغییر اشیاء آن کلاس داده های خود را به صورت داخلی و بدون تغییر کد خارجی تغییر دهد (تا زمانی که روش "عمومی" به همان روش کار کند). همچنین برنامه نویسان را ترغیب می کند تا کلیه کدهای مربوط به مجموعه مشخصی از داده ها را در همان کلاس قرار دهند، که آنها را برای درک آسان سایر برنامه نویسان سازماندهی می کند. كپسوله كردن روشی است كه جداسازی را ترغیب می كند.

پلی مورفیسم

subtyping، نوعی از پلی مورفیسم، هنگامی است که فراخوانی کد می تواند آگاه باشد که در کدام کلاس در سلسله مراتب پشتیبانی شده که در آن فعالیت می کند، کلاس والدین یا یکی از فرزندان آن باشد. در همین حال، ممکن است همین نام عملیاتی در بین اشیاء موجود در یک سلسله مراتب ارث متفاوت باشد. به عنوان مثال، اشیاء از نوع Circle و Square از یک کلاس معمولی به نام Shape گرفته می شوند. عملکرد Draw برای هر نوع شکل، آنچه را که برای ترسیم خود در حین فراخوانی کد لازم است، پیاده سازی می کند، نسبت به نوع خاصی از شکل که بی تفاوت است، بی تفاوت باقی می ماند. این نوع دیگری از انتزاع است که کدهای بیرونی را نسبت به سلسله مراتب طبقاتی ساده می کند و separation of concerns را ممکن می کند. از دیگر ویژگی های برنامه نویسی شی گرا می توان به موارد زیر اشاره کرد:

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

زبان های برنامه نویسی شی گرا (OOP)

اولین زبان برنامه نویسی شی گرا بود. جاوا، پایتون، سی پلاس پلاس، ویژوال بیسیک دات نت و روبی امروز محبوب ترین زبان های OOP هستند. زبان برنامه نویسی جاوا به خصوص برای استفاده در برنامه های توزیع شده در شبکه های شرکتی و اینترنت طراحی شده است. Ruby در بسیاری از برنامه های وب مورد استفاده قرار می گیرد. Curl ،Smalltalk ،Delphi و Eiffel نیز نمونه هایی از زبان های برنامه نویسی شی گرا هستند.

بسیاری از زبان های برنامه نویسی که به طور گسترده مورد استفاده قرار می گیرند مانند C++ ، Java ،Python و غیره، چند پارادایم هستند و آنها از برنامه نویسی شی گرا تا حد بزرگتر یا کمتری پشتیبانی می کنند، معمولاً در ترکیب با برنامه نویسی ضروری و رویه ای استفاده می شوند.از دیگر زبان های مهم شی گرا شامل C# ،PHP ،JavaScript ،Ruby ،Perl ،Object Pascal ،Objective-C ،Dart ،Swift ،Scala ،Common Lisp ،MATLAB و Smalltalk می باشد.

مقایسه برنامه نویسی شی گرا (OOP) با برنامه نویسی تابعی (Functional)

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

در زیر لیست نکاتی که تفاوت بین برنامه نویسی کاربردی و OOP را توضیح می دهد، آورده شده است:

  • برنامه نویسی تابعی برای انجام بسیاری از عملیات های مختلف که داده ها برای آنها ثابت شده است، استفاده می شود. برنامه نویسی شی گرا برای انجام چند عملیات که دارای رفتار مشترک و انواع مختلفی هستند، استفاده می شود.
  • برنامه نویسی تابعی داشتن یک مدل برنامه نویسی بدون تابعیت است. برنامه نویسی شی گرا، دارای یک مدل برنامه نویسی حالتمند است.
  • در برنامه نویسی تابعی، یک حالت وجود ندارد. در برنامه نویسی شی گرا حالت وجود دارد.
  • در برنامه نویسی تابعی، یک تابع واحد اصلی کاربردی است. در شیء گرا، یک شی واحد اصلی کاربردی است.
  • در برنامه نویسی تابعی، تابع های آن عوارض جانبی ندارند به این معنی که هیچ تأثیری روی کدی که در چندین پردازنده اجرا می شود ندارد. در برنامه نویسی شی گرا، روش های آن می توانند عوارض جانبی داشته و بر پردازنده ها تأثیر بگذارد.
  • در برنامه نویسی تابعی، تمرکز اصلی برنامه نویسی کارهایی است که ما انجام می دهیم. در برنامه نویسی شی گرا، محور اصلی برنامه نویسی این است که ما چگونه انجام می دهیم.
  • برنامه نویسی تابعی عمدتا از انتزاع بیش از داده ها و انتزاع بر رفتار پشتیبانی می کند. برنامه نویسی شی گرا به طور عمده از انتزاع بیش از داده ها پشتیبانی می کند.
  • برنامه نویسی تابعی عملکرد بالایی در پردازش داده های بزرگ برای برنامه ها دارد. برنامه نویسی شی گرا برای پردازش داده های بزرگ مناسب نیست.
  • برنامه نویسی تابعی از عبارات شرطی پشتیبانی نمی کند. در برنامه نویسی شی گرا می توان از عبارات شرطی مانند عبارت if-other و عبارت switch استفاده کرد.
آیا این نوشته را دوست داشتید؟
codewithmosh-object-oriented-programming-in-javascript

آموزش برنامه نویسی شیء گرا در جاوااسکریپت - CodeWithMosh


در این دوره اصول برنامه نویسی شی گرا با جاوااسکریپت را یاد خواهید گرفت. همچنین نحوه اجرای مفاهیم OOP در جاوااسکریپت و ویژگی های پیچیده JavaScript را ف...

1398/12/10 2139 بازدید
teamtreehouse-object-oriented-swift

آموزش سوئیفت شی گرا


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

1398/11/04 489 بازدید
teamtreehouse-object-oriented-javascript-challenge

آشنایی با جاوااسکریپت شی گرا - چالش


با ساختن یک بازی سرگرم کننده و تعاملی به نام "Four in a Row"، مهارت های جاوااسکریپت شیء گرای خود را تمرین کنید. آنچه یاد خواهید گرفت: جاوا اسکریپت شی...

1398/10/15 1023 بازدید
teamtreehouse-object-oriented-php-basics

آشنایی با مبانی PHP شی گرا


در PHP، کانتینرها با استفاده از کلاس ها تعریف می شوند. یک کلاس شامل تمام توابع و متغیرهایی است که یک شی را توصیف می کند. آنچه یاد خواهید گرفت:اصطلاحات...

1398/10/15 893 بازدید
teamtreehouse-object-oriented-objective-c

آموزش Objective-C شی گرا


در ادامه ی دوره مبانی Objective-C، شما باید با مفاهیم مهم مانند کلاس ها، آبجکت ها، مدیریت حافظه، pointers و غیره آشنا شوید. این دوره برای توسعه iOS با...

1398/10/14 400 بازدید
teamtreehouse-object-oriented-python

آموزش پایتون شی گرا


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

1398/10/14 3515 بازدید
teamtreehouse-practice-object-interaction

تمرین تعامل آبجکت (Object Interaction)


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

1398/10/08 610 بازدید
teamtreehouse-extending-object-oriented-php

آموزش گسترش PHP شی گرا


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

1398/10/04 737 بازدید
pluralsight-object-oriented-programming-fundamentals-in-c

آموزش اصول برنامه نویسی شی گرا با سی شارپ


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

1398/05/28 4083 بازدید
skillshare-basic-programming-principles-oop-for-beginners

اصول برنامه نویسی شی گرا (OOP) برای تازه کاران


برنامه نویسی شی گرا (OOP) تقریبا در تمامی زبان های برنامه نویسی رایج مانند جاوا، سی شارپ، جاوا اسکریپت یا PHP بکار می رود. در این دوره با مبانی برنامه...

1398/01/31 3648 بازدید
skillshare-visual-studio-the-oop-c-programming-course

برنامه نویسی شی گرا در سی شارپ با ویژوال استودیو


به دوره برنامه نویسی شی گرا در سی شارپ با ویژوال استودیو خوش آمدید! قبل از شروع بحث در مورد این دوره، باید تأکید شود که این یک دوره پیشرفته است، بناب...

1398/01/26 2704 بازدید
linkedin-programming-foundations-object-oriented-design

آموزش اصول برنامه نویسی - طراحی شی گرا


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

1397/10/12 4301 بازدید
packtpub-hands-on-object-oriented-programming-with-java-11-video

آموزش کامل برنامه نویسی شی گرا با Java 11 


نوشتن برنامه های بزرگ می تواند دردناک باشد. اشیایی که برای برنامه های شی گرا ایجاد می شوند می توانند در برنامه های دیگر مورد استفاده قرار گیرند و در و...

1397/10/10 2638 بازدید
packtpub-beginning-object-oriented-programming-with-javascript

آشنایی با برنامه نویسی شی گرا با جاوااسکریپت


قبل از درک فریمورک های front-end، معماری های serverless و توسعه back-end]، مهم است تا مفاهیم اساسی زبان جاوا اسکریپت را درک کنید. در این دوره با الگوه...

1397/05/30 1262 بازدید
packtpub-java-object-oriented-programming-concepts-integrated-course

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


یک زبان شی گرا کامل، ظریف و پیچیده است که در JVM (ماشین مجازی جاوا) اجرا می شود. زمانیکه در bytecode کامپایل می شود، جاوا می تواند در JVM بدون توجه به...

1397/05/25 1652 بازدید
pluralsight-learn-to-program-with-go

آموزش برنامه نویسی با زبان Go


زبان Go راه جدیدی برای نگاه کردن به چگونگی ساخت یک زبان برنامه نویسی ارائه می دهد. هر ساختار زبان در نظر می گیرد که چگونه طراح و کامپایلر باید با آن ت...

1397/05/22 2037 بازدید
teamtreehouse-programming-step-by-step-object-oriented-javascript-part-2

کارگاه برنامه نویسی شی گرا جاوااسکریپت - بخش دوم


بعد از اینکه بلوک های پایه ساخت یک زبان برنامه نویسی را یاد گرفتید، هنوز هم مباحث بسیاری برای یادگیری در مورد استفاده از هر یک از آنها و نحوه همکاری آ...

1397/05/12 1125 بازدید
teamtreehouse-programming-step-by-step-object-oriented-javascript-part-1

کارگاه برنامه نویسی شی گرا جاوااسکریپت – بخش اول


بعد از اینکه بلوک های پایه ساخت یک زبان برنامه نویسی را یاد گرفتید، هنوز هم مباحث بسیاری برای یادگیری در مورد استفاده از هر یک از آنها و نحوه همکاری آ...

1397/05/12 1242 بازدید
teamtreehouse-object-oriented-programming-in-unity

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


در Unity، شما می توانید معماری پروژه های خود را با روش های مختلفی انجام دهید. در این دوره، ما یک پروژه موجود و یک قابلیت جدید را با استفاده از برنامه ...

1397/05/06 1314 بازدید
teamtreehouse-intermediate-c-course

آموزش سی شارپ (سطح متوسط)


در این دوره با اصول برنامه نویسی شی گرا آشنا می شوید. سرفصل: پلی مورفیسم انتزاع رابط ها System.Object کلاس های استاتیک متدهای مجازی Pr...

1397/05/06 1798 بازدید