کلاسها و برنامه نویسی شیء گرا دو مفهوم گنگ برای بسیاری از برنامه نویسان هستند که در این مطلب قصد داریم این دو مفهوم را به صورت کامل تشریح کنیم.
دنیای برنامه نویسی شاهد تحولات بزرگی بوده است و با شکل اولیه خود بسیار متفاوت است. در ابتدا کدها به شکل پشت سر هم ردیف میشدند و مدیریت این حجم از کدها کار واقعا طاقت فرسایی بود.
در مرحله بعد توابع روی کار آمدند و تحول بزرگی در برنامه نویسی ایجاد کردند. توابع به این منظور رونمایی شدند تا وظایف مشخص و تکراری را به صورت سازمان یافته انجام دهند. مثلا اگر در حین اجرای برنامه خود ده بار نیازمند بررسی فضای باقی مانده سیستم خود هستید، این کار با مراجعه به یک بخش مشخص انجام شود و هر ده بار این کد نوشته نشود.
شکل ساختار یافته توابع برنامه نویسی شیء گرا است که برنامه نویسی را پیچیده تر ولی قدرتمند تر کرد. برنامه نویسی شیء گرا بدلیل پیچیدگی درونیای که دارد منتقدان جدیای دارد و بسیاری از متخصصین به دلایل متنوع با آن مخالف اند ولی در برنامه نویسی هیچ راهی جز آموختن و استفاده از آن ندارید. تقریبا تمام زبانهای برنامه نویسی مهمی که امروزه در بازار و در دنیای برنامه نویسی از آنها استفاده میشود بر پایه برنامه نویسی شیء گرا هستند. برخی از زبانها مانند Java شما را ملزم میکنند از برنامه نویسی شیء گرا استفاده کنید، برخی دیگر از زبانها الزامی برای این کار ندارند ولی امکان ندارد بتوانید یک برنامه مهم بدون قابلیت شیء گرایی در آنها بنویسید. پس نتیجه میگیریم برای برنامه نویس شدن حتما با مفهوم شیء گرایی آشنا باشید.
همان طور که از نام شیء گرایی مشخص است این نوع برنامه نویسی بر پایه اشیاء ایجاد شده است و هدف آن ایجاد سیستمی بر پایه اشیاء و ارتباطات بین اشیاء است.
تعریف کلاس
برخی از انواع دادهها در تمام زبانهای برنامه نویسی مشترک هستند، مانند نوع integer که نشان دهنده اعداد صحیح و یا نوع float که نشان دهنده نوع اعشاری و یا نوع string که نشان دهنده متن است.
در برنامه نویسی گاهی نیازمند تعریف مسائل پیچیده تر هستیم که آنها را تحت عنوان کلاس معرفی میکنند. مثلا بخواهیم بگوییم نوع داده یک ماشین را تعریف کنیم. طبیعتا یک نوع داده integer تنها یک عدد میپذیرد ولی نوع داده ماشین میتواند خاصیتهای زیر را بپذیرد:
- رنگ ماشین
- حجم موتور ماشین
- مالک ماشین
- نوع دنده ماشین
- مارک چرخهای استفاده شده در ماشین
- و ....
در برنامه نویسی شیء گرا نوع دادههای پیچیده را کلاس و اجزایی که توسط کلاس ساخته میشوند را شیء میگوییم.
در پایین اصطلاحاتی را به شما معرفی میکنیم که شاید فعلا خیلی برایتان مفهموم نباشند ولی آنها را یاد بگیرید تا در آینده به کارکرد آنها پی ببرید.
وراثت کلاس ها
کلاسها میتوانند از هم ارث بری هم داشته باشند و کلاسها را میتوان به کلاسهای والد و فرزند تقسیم کرد.
مخفی سازی و یا کپسوله سازی
به این معنی است که اشیاء تشکیل شده توسط کلاسها اطلاعی از عملکرد یکدیگر ندارند. مثلا فرض کنید یک شی مسئول محاسبه فضای باقی مانده سیستم و یک شی دیگر مسئول دریافت میزان فضای اشغال شده سیستم است، لزومی ندارد که اشیاء از عملکرد هم اطلاعی داشته باشند و هر شیء عملکرد جداگانهای دارد.
چند شکلی
اشیاء مختلف را میتوان با کلاسی واحد ساخت و نتیجه رفتار متفاوت خواهد بود.
نتیجه گیری
مبحث شی گرایی به این جا ختم نمیشود و سعی داریم در آینده برای زبانهای برنامه نویسی مطرح شی گرایی را آموزش دهیم. هیتوس را دنبال کنید.
با عرض سلام و خسته نباشید خدمت شما آقای مهندس موسوی عزیز
آقای موسوی خواستم در رابطه با مطالب آموزش اندرویدی که گداشتین تشکر کنم مطالب بسیار جالب و شکیلی و خیلی قشنگی رو آماده کردین
مهندس موسوی فقط یک سوالی نداشتم اگه توصیح بدین خیلی ممنون میشم از شما.
مهندس جان کارکرد متد oncreate و مخصوصا پارامتر ورودی اون Bundle savedinstancestate چه کاری رو انجام میده؟
و دستوز super. چه وظیفه ای رو انجام میده؟
سلام علی جان. ممنون از ابراز لطفتون
پارامتر savedInstanceState منجر به ذخیره موقعیت فعلی در حافظه می شه. مثلا فرض کنید شما دارید از گوشی استفاده می کنید که یک شخصی به شما زنگ می زنه، طبیعتا بدلیل اولیت موجود در تلفن همراه اکتیویتی جاری مخفی و اکتیویتی تماس کاربر اجرا می شود. وقتی تماس شما تماس شد بدلیل ذخیره بودن وضعیت با savedInstanceState می تونید فعالیت خودتون رو در اکتیویتی دنبال کنید.
super یک متد در شی گرایی هست که با استفاده از اون می تونید خصوصیات والد رو دستکاری کنید، و با دستور super موجود onCreate دارید عملی رو به عمل والد ترجیح می دید.