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

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

بروزرسانی : 4 ماه پیش
دسته بندی :‌ - شی گرائی

شی گرائی یا اصطلاحا bject-oriented programming یک شیوه ی برنامه نویسی است که سر و کار آن با اشیا است درست مثل دنیایی واقعی که در آن زندگی میکنیم و تمام هر چیزی که میبینیم و لمس میکنیم و استفاده میکنیم یک شی است . برنامه نویسی شی گرائی از طبیعت الهام گرفته شده است تا به برنامه نویس کمک کند تا مسائل پیچیده و بزرگ را بهتر حل کند و کدهایی ملموس تر با قابلیت استفاده ی مجدد بنویسد. یکی از اولین زبان های برنامه نویسی که شی گرا را بصورت عملی و کامل درون خود پیاده سازی کرد زبان برنامه نویسی سی پلاس پلاس بود که تکمیل یافته ی زبان سی بود و به آن شی گرایی اضافه شده بود. 

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

در ادامه ی مقاله تمام موارد بالا را توضیح خواهیم داد 

 

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

  1. کپسوله سازی داده ها :

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

  2. کدنویسی کمتر :

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

  3. ارث بری : 

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

  4. ویژگی چند ریختی : 

    زمانی که شما ویژگی های مادر را در فرزند به ارث برده اید یک سری ویژگیها وجود دارد که مجددا در فرزند تعریف شده است و اینجاست که عمل override اتفاق میوفتد یعنی تمام ویژگی های مشترکی که بین مادر و فرزند وجود داشت ولی مقدار انها در فرزند تفاوت دارد روی ویژگی های قدیمی اعمال شده و آنها را به کل عوض میکند مثلا فرض کنید یک شی ماشین قرمز رنگ داریم که آینه هم دارد ولی در یک ماشین دیگری ویژگی های تمام ماشین قرمز یا اولی را به ارث برده ایم با این تفاوت که در ماشین جدید آینه ها بزرگتر است و همین بزرگ بودن باعث میشود سایز اینه های قدیمی پاک شده و مقدار جدید در نظر گرفته شود .

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

 

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


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

  • model 1 
  • model 2 
  • model 3
  • model 4
  • model 5

برای هر پنج نوع مدل نیاز نیست کلاس جدیدی تعریف کنیم کافیست یک کلاس به نام Car بسازیم که ویژگی های مشترک بین تمام ماشین ها را داشته باشد 

ویژگی های کلاس Car : 

  •  مدل
  • چهار عدد در 
  • دو عدد آینه بغل
  • چهار عدد چرخ 
  • صندوق عقب
  • سیستم صوتی
  • دو عدد صندلی جلو و سه عدد برای عقب
  • موتور
  • کاپوت 
  • ترمز 
  • کلاج 
  • گاز 
  • دیفرانسیل 
  • و ....

و عملیاتی که داخل یک کلاس انجام میگیرد یا تابع های درونی یک کلاس را متُد نام گذاری میکنیم . هر متد مثل یک تابع هست که یک سری عملیات را انجام میدهد 

در کلاس Car  به نظر شما چه متدهایی داریم ؟  کاری که تمام ماشین ها بصورت مشترک انجام میدهد چیست ؟ 

متدهای کلاس Car : 

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

ما از کلاس Car میتوانید به تعداد نامحدود شی ماشین تولید کنیم ولی هر شی ممکن است عملیات جدیدتری یا ویژگی های منحصر به فرد خود را داشته باشد 

مثلا وقتی میخواهیم ماشین model 2 را تولید کنیم حتما باید مقدار مدل را به model 2 تغییر دهیم و این تعریف ویژگی های جدید است . 

ممکن است عملیات استارت زدن در ماشین model 3 متفاوت باشد برای این کار کافیست یک کلاس جدید به نام model 3  بسازیم و از کلاس اصلی Car ارث بری کنیم . 

با ارث بری تمام متدها و پروپرتی های ( خصوصیات ) کلاس Car به کلاس model 3 منتقل میشود و از آنها میتوانیم استفاده کنیم ولی برای اینکه متد استارت زدن متفاوت است یک متد برای استارت زدن داخل کلاس model 3 ایجاد میکنیم و این کار باعث میشود که متد استارت درون model 3 روی متد استارت زدن کلاس Car اصلی بازنویسی شود ( override ) . 

به این صورت میتوانیم ماشین از نوع model 3  را بصورت نامحدود تولید کنیم . به همین راحتی ! 

پس تا اینجا با مفهوم کلاس ، شی ، متدهای درون کلاس و پروپرتی های ( ویژگی های ) یک کلاس آشنا شدیم . 

 

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

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

دوست دارید عملیات این ها در قالب شی گرایی باشد به ترتیب زیر عمل میکنید 

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

 

تقریبا میشود گفت مفهوم بنیادین شی گرائی موارد بالاست ولی با تمرین و تکرار در زبان برنامه نویسی که کار میکنید میتوانید به مفاهیم مسلط تر شوید هر چند شی گرایی یک چیز مشترک است و اگر یکبار یاد بگیرید برای تمام زبان های برنامه نویسی کفایت میکند  و نیاز نیست دوباره و دوباره برای هر زبان برنامه نویسی خاصی آنرا یاد بگیرید 

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

 

نتیجه گیری : 

شی گرایی یا object oriented programming یکی از مباحث اصلی در برنامه نویسی است و امروزه اکثر برنامه نویسان از آن برای پیشبرد اهداف و پروژه های خود استفاده میکنند.برای پیشرفت در سطح یک زبان برنامه نویسی نمونه پروژه هایی انجام بدهید که در آن نیاز به رعایت اصول شی گرایی است یا از زبان هایی مثل جاوا که ذاتا شی گرا هستند استفاده کنید تا مباحث شی گرایی برای شما بخوبی جا بیوفتد. در مقابل برنامه نویسی oop شیوه ی دیگری از برنامه نویسی به نام structured وجود دارد که برخی از برنامه نویسان از آن نیز استفاده میکنند و اصطلاحا به آنها پارادیوم های برنامه نویسی گفته میشود.

لینک کوتاه این مقاله : https://avasam.ir/post/82
این سیستم برپایه ی علاقه مندی شما یک دوره ی مناسب به شما پیشنهاد میدهد
مرا بسوی بهترین دوره ی آموزشی که برای من مناسب است هدایت کن 🤖

دوره های آموزشی مرتبط با این مقاله :

برای استفاده ی دیگران و حمایت از ما در جامعه های زیر به اشتراک بگذارید

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