شی گرایی چیست؟

شی گرایی چیست؟ آموزش کامل مفاهیم شی گرایی به زبان ساده

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

این مقاله دارای قسمت های زیر است:
برنامه نویسی شی گرا از کجا آمده است؟
توضیح مفهوم شی گرایی به زبان ساده
وراثت چیست؟
نظر شما چیست؟


 برنامه نویسی شی گرا (OOP) از کجا آمده است؟

شی گرایی از کجا آمده است

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

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

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


توضیح مفهوم شی گرایی به زبان ساده

مفهوم شی گرایی چیست؟

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

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

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

مفهوم شی گرایی

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

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

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

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


وراثت چیست؟

وراثت شی گرایی

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

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


سوالات و نظرات شما؟

نظر شی گرایی

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


منابع بیشتر برای مطالعه

میتوانید از منابع زیر برای مطالعه بیشتر در این زمینه استفاده کنید:

21 دیدگاه دربارهٔ «شی گرایی چیست؟ آموزش کامل مفاهیم شی گرایی به زبان ساده»

  1. بازتاب: راهنمای کامل Thread یا نخ در برنامه نویسی اندروید | برنامه چی | Barnamechi

  2. بازتاب: 7 زبان برنامه نویسی اندروید | برنامه چی | Barnamechi

  3. من تازه میخوام شروع کنم صفر صفرم ولی مفهوم شی گرایی رو خیلی خوب توضیح دادین.ممنونم.آیا برای ترین کردن شماجایی رو هم میتونین پیشنهاد بدین?

    1. سلام خدمت شما دوست عزیز.
      ممنونم از نظر خوبتون و خوشحالم که این مقاله براتون مفید بوده. برای شروع برنامه نویسی اندروید میتونین از دوره رایگان برنامه نویسی اندروید مقدماتی که توی آکادمی برنامه چی موجود هست استفاده کنین. لینک آکادمی:
      http://academy.barnamechi.com
      باز هم سوالی بود در خدمتیم.

  4. واقعا عالی بود
    آیا به تنهایی میشود
    یابایدیه گروه تشکیل بدم
    چند مرحله داره
    چه تعدادنفرمیخادکه باهات همکاری کنند
    با چه قدردرآمدمیتونیم کارکنیم
    چه چیزهایی لازم داریم

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

  5. بازتاب: اکتیویتی اندروید چیست؟ چگونه اکتیویتی اندروید بسازیم؟ | برنامه چی

  6. بازتاب: کامپایلر (Compiler) چیست و چرا از آن استفاده میشود؟ | برنامه چی

  7. پیمان حیدری

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

    1. سلام دوست عزیز.
      ممنونم از نظر خوبتون و خوشحالم که براتون مفید بوده، ویدئو ها هم آماده هستن و به زودی روی سایت قرار میدیم.

  8. اقا این همه سایت در موردش نوشته بودن ولی واسه شما یه چیز دیگه است….
    بسیار سپاسگزارم ..

  9. عالــــــــــــــــــی بودــــــــــــــــــــــــــــــــــــــــــ

  10. انقدر توضیحتون واضح و قابل فهم بود که اصلا جای سوالی برام باقی نموند … واقعا عیول دارید

  11. بازتاب: بیسیک فور اندروید (Basic4Android) ابزار قدرتمند ساخت اپلیکیشن | برنامه چی

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اسکرول به بالا