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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


وراثت چیست؟

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

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

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


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

نظر شی گرایی

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


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

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

درباره نویسنده

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

  1. معین جعفری

    سلام ممنونم از مطالب و سایت خوبتون , من با با سرچ کردن توی گوگل تونستم جلسه هفتم سری اموزش های جاوا تونو پیدا بکنم که اسمش “جلسه هفتم – دیتا تایپ چیست؟ معرفی دیتا تایپ های زبان جاوا” بودش محتوای کاملی بود و وقتی دیدم نوشته جلسه ی هفتم پیگیر شدم که جلسات قبل ترش رو پیدا بکنم و بیشتر بخونم. هیچ لینک یا راهنما و یا حتی گزینه سرچی توی سایت پیدا نکردم حتی توی مطالب نشر شده توسط نویسنده هم نتونستم پیداش بکنم , یه گزینه دانلود جزوه پی دی اف پیدا کردم روی اون که زدم انتهای فایل پی دی اف لینک جلسه قبل و بعد رو گذاشته بود , تونستم تا جلسه پنجم که الان دارم زیرش کامنت میزنم تونستم پیش برم ولی این حتا دانلود پی دی افم نداره و من چطوری میتونم به اولین جلسه دسترسی پیدا بکنم ؟؟؟ سئو سایت کمی ضعیف هست و به راحتی اصلن نمیشه توش چیزی رو که میخوای پیداش بکنی اما مطالبی که گذاشتیذ کامل و مفید هست , میخوام بدونم که چطور به جلسه های دیگه دسترسی داشته باشم ؟ ممنونم

  2. خیلی خوب و ساده بود توضیحتون من میخوام برنامه نویسی اندروید رو شروع کنم یه سوال داشتم ازتون اینکه وقتی دوره رایگان و مقدماتی که شما قرار دادین تو سایت رو دیدیم بعدش باید چه دوره ای رو ببینیم که بتونیم مسلط بشیم به برنامه نویسی اندروید؟ یه سوال دیگم دارم به نظرتون اموزش های غیر رایگانی که وجود داره تو اینترنت ارزش اینکه بخوایم مبلغی براش پرداخت کنیم رو دارن؟

    1. سلام و خسته نباشید خدمت شما دوست عزیز.
      اینکه چه آموزشی رو ببینید بستگی به این داره که چه مدل آموزشی رو میپسندین. میتونین از دوره های موجود توی اینترنت استفاده کنید که بعضی هاشون کیفیت بالایی دارن و به درد بخور هستن. میتونین بیرون کلاس بردارین با اساتیدی که وجود دارن و میتونین کلاس خصوصی بگیرین بصورت مجازی. برای دوره های آنلاین سرچ بزنین چون دوره آموزشی ما هنوز تکمیل نشده. برای کلاس خصوصی مجازی هم میتونین با ایمیل مجموعه ما در ارتباط باشین: barnamechi@gmail.com

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

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

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

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

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

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

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

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

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

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

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

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

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