نماد سایت برنامه چی | Barnamechi

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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


وراثت چیست؟

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

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


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

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


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

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

خروج از نسخه موبایل