منو سایت

  • خانه
  • وبلاگ
  • برنامه نویسی شی گرا (OOP) چیست و چرا محبوب است؟

برنامه نویسی شی گرا (OOP) چیست و چرا محبوب است؟

 تاریخ انتشار :
/
  وبلاگ
برنامه نویسی شی گرا (OOP) چیست و چرا محبوب است؟

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

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

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

عینیت گرایی از دو کلمه «ابژه» و «محور» تشکیل شده است. احتمالاً برای درک این دو کلمه حتی نیازی به مراجعه به فرهنگ لغت هم نیست. زیرا «ابژه» به معنای آن چیزی است که در عالم واقع وجود دارد و «گرایش» به معنای علاقه مند شدن به موضوع یا چیزی شبیه آن است که در اینجا منظور همان شیء است. با توجه به این توضیحات، برنامه نویسی شی گرا (OOP) را می توان یکی از مکاتب برنامه نویسی مبتنی بر اشیا دانست. به همین دلیل به آن عینیت گرایی می گویند.

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

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

بذر برنامه نویسی شی گرا در دهه 1960 و زبان سیمولا ظاهر شد. اگرچه توسعه دهندگان در آن زمان OOP را دوست نداشتند، اما تا سال 1980 که دیوید رابینسون یک سرمقاله نوشت، به تکامل ادامه داد. این سرمقاله را می توان اولین افشای رسمی OOP در نظر گرفت. زیرا در آن زمان بسیاری از توسعه دهندگان هنوز از وجود آن بی اطلاع بودند. در آن زمان زبان هایی مانند C++ و Eiffel در بین برنامه نویسان محبوب بودند. شناسایی OOP تا دهه 1990 ادامه یافت. اما با معرفی جاوا به عنوان یک زبان برنامه نویسی جدید، شی گرایی نیز طرفداران زیادی پیدا کرده است.

این روند تا سال 2002 ادامه داشت و همزمان با معرفی Net Framework، مایکروسافت زبان برنامه نویسی C# را نیز معرفی کرد که شی گرا بود. جالب است بدانید افرادی که هنوز وارد دنیای برنامه نویسی نشده اند به راحتی می توانند از پس مفهوم شی گرایی برآیند. اما افرادی که سال ها بدون در نظر گرفتن OOP به عنوان توسعه دهنده کار کرده اند برای درک این پارادایم با ابهامات زیادی روبرو هستند.

مقاله زیر را بخوانید تا با شش نکته مفید برای استفاده بهتر از پایتون آشنا شوید.

پایتون چیست؟

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

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

در این مرحله، به نظر می رسد که مفهوم Building Block با استفاده از کلاس، شی و ویژگی، برنامه نویسی را به یک تجربه جالب و لذت بخش برای شما تبدیل می کند. بیایید نگاهی دقیق تر به این بلوک های ساختمانی بیندازیم.

1. کلاس های برنامه نویسی شی گرا

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

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

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

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

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

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

ویژگی ها چیزهایی هستند که در یک کلاس تعریف می شوند و وضعیت شی را مشخص می کنند. به عبارت دیگر، اشیاء حاوی داده های ذخیره شده ای هستند که در قسمت Attribute قرار می گیرند.

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

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

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

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

برای دانستن نحوه نوشتن کد OOP مناسب، باید با عناصر مهم آن آشنا شویم:

  • کپسوله سازی
  • انتزاع – مفهوم – برداشت
  • میراث
  • پلی مورفیسم

در زیر به طور کامل با این چهار رکن آشنا می شوید.

1. کپسولاسیون

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

2. انتزاع

فرض کنید یک ماشین خودران دارید. برای رفتن از نقطه A به نقطه B با ماشین خود کافی است مختصات نقطه انتهایی ماشین را بدهید و تمام! ماشین شما را به مقصد می رساند. در این مثال شما نیازی به دانستن الگوریتم های مسیریابی و غیره ندارید.

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

3. ارث

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

برای شفاف‌تر شدن همه چیز، فرض کنید می‌خواهید برنامه‌ای بنویسید تا دفتر شرکت خود را خودکار کند. در این برنامه می توانید یک شی با نام “کارمند شرکت” تعریف کنید که در آن ویژگی های مشترک همه کارکنان شرکت تعریف شده است. حال می توانید یک شی دیگر به نام «Company Manager» تعریف کنید که علاوه بر به ارث بردن ویژگی های شیء کارمند، دارای ویژگی های منحصر به فرد مدیر است.

4. چندشکلی

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

تا زمانی که یک عدد صحیح را به عنوان ورودی این برنامه ارائه دهید، همه چیز به خوبی کار می کند. اما زمانی که در این گروه از اعداد یک عدد اعشاری (Float) وجود داشته باشد، برنامه با مشکل مواجه می شود.

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

برای آشنایی با کدهای JASON و ساختار آنها، مقاله زیر را مطالعه کنید.

JASON چیست؟

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

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

برخی از زبان های برنامه نویسی شی گرا عبارتند از:

  • سنگ
  • زمرد
  • مالش در
  • یشم
  • جاوا
  • پایتون
  • C++
  • جاوا اسکریپت
  • ویژوال بیسیک دات نت
  • PHP

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

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

این دلایل باعث شده است که بسیاری از توسعه دهندگان نرم افزار به روش های شی گرا در زبان های برنامه نویسی برای اصلاح این نقص ها روی آورند. از مزایای مهم OOP می توان به موارد زیر اشاره کرد:

1. استفاده مجدد از کد

از طریق ارث و ارث می توانید از یک کد نوشته شده چندین بار استفاده کنید. این بدان معنی است که یک تیم مجبور نیست یک کد را چندین بار بنویسد.

2. قابل استفاده در سیستم عامل های پیشرفته

با OOP، قابلیت استفاده از برنامه های نوشته شده بر روی سیستم عامل های پیشرفته با ویژگی های خاص امکان پذیر است.

3. صرفه جویی در زمان

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

4. ارتقاء نرم افزار آسان تر

به لطف OOP، اکنون ارتقاء نرم افزار آسان است.

5. بهبود امنیت نرم افزار

با کمک کپسوله سازی داده های نرم افزار قابل دسترسی نبوده و در نتیجه امنیت اطلاعات با کمک OOP کاملتر می شود.

برای یادگیری نحوه ایجاد اولین برنامه “Hello, World!” مقاله زیر را در مورد جاوا اسکریپت بخوانید.

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

نتیجه

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

سوالات متداول

1. OOP مخفف چیست؟

OOP مخفف عبارت Object Oriented Programming و مخفف Object Oriented Programming است.

2. شی گرایی به چه معناست؟

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

3. مزایای اصلی استفاده از شی گرایی چیست؟

استفاده از OOP در زبان های برنامه نویسی مزایای زیادی دارد. از جمله استفاده مجدد از کد، اشکال زدایی کد آسان تر، توسعه آسان تر در آینده و صرفه جویی در زمان.