شی گرائی یا اصطلاحا 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 ۲ را تولید کنیم حتما باید مقدار مدل را به model ۲ تغییر دهیم و این تعریف ویژگی های جدید است . 

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

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

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

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

 

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

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

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

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

 

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

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

 

اتمام مقاله 


مطالب زیر ممکن است برای شما مفید باشد

 تگ های header را در سئو سایت دست کم نگیرید رادیو صفر و یک - پادکست شماره ی 9 ام - اینترنت بی اینترنت رادیو صفر و یک - پادکست شماره ی 3 ام - شرکت جت برینز و محصولاتش برای برنامه نویسان رادیو صفر و یک - پادکست شماره ی 5 ام - دیپ فیک چیست ؟‌ آخرین مرز میان حقیقت و دروغ رادیو صفر و یک - پادکست شماره ی 1 ام - معرفی رادیو صفر و یک و زندگینامه ی گوینده

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

 کارگاه آموزشی نحوه ی آپدیت ورژن فریمورک laravel کارگاه آموزش کار با API های اینستاگرامی دوره ی آموزش ساخت اپ گالری تصاویر آنلاین با کاتلین کارگاه آموزشی کار با Grunt js

پایان

ابزارهای توسعه اپلیکیشن های Cross Platform

کدایگنایتر یا لاراول ؟ کدام فریمورک پی اچ پی

10 زبان برنامه نویسی برای یادگیری در سال 2019

یک ,شی ,های ,ویژگی ,کلاس ,ماشین ,ویژگی های ,برنامه نویسی ,نویسی شی ,را به ,یک شی ,زبان برنامه نویسی

مشخصات

تبلیغات

آخرین ارسال ها

برترین جستجو ها

آخرین جستجو ها

اخبار دنیای فیلم و سریال تیــــــمـای ناآرام موسسه انجام پایان نامه تهران مشاور اغماء یکه سازان موسسه خیریه بیت الکوثر زنگی آباد مرجع بازی های فشرده اندروید و کامپیوتر بیز موزیک elmerooz مدیریت بازاریابی و فروش محصولات خرد و خانگی