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

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


اشتراک گذاری :

۱۳۹۸/۲/۴- تعداد بازدید : ۲۲۹۲ بار - دسته بندی : شی گرائی

شی گرائی یا اصطلاحا 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. به همین راحتی نیاز نیست برای تمام نقش ها و عملیات آن کدنویسی عادی انجام بدیم و میبینید که کدنویسی ، مدیریت و ... چقدر راحت تر میشود 

 

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

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

 

اتمام مقاله 


مطالب زیر ممکن است برای شما مفید باشد
6 ترفند ذهنی برای یادگیری سریع لینوکس اوبونتو چیست ؟ بررسی گذشته و حال اوبونتو روش هایی برای افزایش فروش در فروشگاه های اینترنتی چگونگی ترک عادت نیمه رها کردن کارها مقایسه بین react Native و Kotlin
تولید کننده
مدرس دوره
مهندس عباس نیک زاد
سوابق تحصیلی
  • دیپلم ریاضی و فیزیک از تیزهوشان
  • لیسانس کارشناسی مهندسی نرم افزار
  • کارشناس ارشد هوش مصنوعی
  • دارای مدرک IELTS نمره ۷/۵
  • دارای مدرک GMAT نمره ۷۲۰
سوابق شغلی
  • مدیر کل شرکت آوای هوشمند سام به شماره ثبت ۴۴۸۳۸ و شناسه ی ملی ۱۴۰۰۶۷۷۷۰۵۱
  • تدرس در دانشگاه ها و آموزشگاه های معتبر از سال ۱۳۹۴
  • مدرس دوره های آموزشی در زمینه ی برنامه نویسی از سال ۹۵ ( آواسام ، سامنتا )
  • مدیر کل انجمن علمی دانشگاه به مدت یکسال و مدیر انجمن علمی کامپیوتر به مدت یکسال
  • برنامه نویس اپلیکیشن های اندرویدی مختلف برای سازمان های دولتی ، شرکت های خصوصی و ...
  • بازی سازی با انجین یونیتی به مدت دو سال در تیم k2games
  • برنامه نویسی و طراحی وب بصورت فریلنسر از سال ۱۳۹۰
تخصص ها
  • تسلط کامل بر فریمورک های PHP همچون Codeigniter , Laravel , Yii , ….
  • برنامه نویسی موبایل و تبلت های هوشمند اندرویدی به مدت ۴ سال با زبان Java kotlin objective-c javascript
  • مسلط به مفاهیم گرافیکی و نرم افزار های گرافیکی Photoshop , corel , illustrator و …
  • مسلط به مدلسازی سه بعدی Blender
  • مسلط به بازی سازی و زبان سی شارپ در انجین Unity3D
  • تسلط کامل بر مفاهیم هوش مصنوعی
  • متخصص در زمینه لینوکس
  • تسلط کامل برنامه نویسی زبانهای C , Python , C++ , C# , Java , JavaScript
  • تسلط کامل بر فریمورک ها یا کتابخانه های محبوب جاوااسکریپت نظیر Angular , Vue.js , React , Jquery و …
  • مطالعه و فعالیت در زمینه ی امنیت و هک

برچسب ها : برنامه نویسی شی گرا شی گرایی آموزش شی گرایی آموزش برنامه نویسی شی گرائی آموزش برنامه نویسی شی گرایی شی گرایی در پی اچ پی شی گرایی در php شی گرایی در c شی گرایی در c++ شی گرایی چیست ؟

برای نوشتن نظر باید وارد شوید ورود