جادوی اشیاء در برنامه نویسی شیءگرا
برنامه نویسی هم مثل خیلی از کارهای دیگر روش های مختلفی دارد. مثلاً پختن یک غذا یا ساختن یک کاردستی هر کدام می تواند به شیوه های مختلفی اجرا شود. برنامه نویسی هم می تواند از راه های مختلفی مساله ها را حل کند. در واقع روش های متفاوت فکر کردن باعث می شود که روش های متفاوتی در برنامه نویسی وجود داشته باشد. یکی از این روش ها برنامه نویسی شیءگرا است.
برنامه نویسی شیءگرا به ما کمک می کند تا:
- کدهای ساده تر و جمع و جورتر داشته باشیم.
- مدل سازی مساله آسان تر باشد.
- برنامه های پیچیده تمیزتر و مرتب تر و در نتیجه قابل فهم تر باشند.
- کدهای ما قابلیت استفاده چند باره داشته باشند.
اما مدل سازی یعنی چه؟
ما برای حل کردن مسائل اطرافمان راحت تریم تا با چیزهایی که از قبل می شناسیم مساله خود را مدل سازی کنیم، یعنی همانند آن ها را در دنیای واقعی در نظر بگیریم. مثلاً اگر بخواهیم یک بازی بسازیم که یکی از غول های آن یک پرنده باشد یا یک خرس قهوه ای هر کدام مدل سازی مخصوص به خود را دارد. اگر شخصیت غول بازی یک پرنده باشد:
- پرنده پرواز می کند و به جاذبه زمین و فشار هوا غلبه می کند.
- پرنده باید مرتب بال بزند یا در جایی بنشیند.
- پرنده دارای دو بال یا چندین بال در حالت های فانتزی است.
اما اگر غول بازی یک خرس قهوه ای باشد:
- باید سنگین به نظر برسد.
- به سختی و نسبتاً کند حرکت کند.
- توانایی ایستادن روی دو پای خود را داشته باشد.
- چنگال تیز داشته باشد.
- قادر به پرواز نباشد.
مدل سازی در برنامه نویسی شیءگرا
برای مدل سازی هر کدام از این کاراکترها ما به دنیای واقعی نگاه می کنیم و برخی ویژگی هایی که می شناسیم را به آن ها نسبت می دهیم تا بتوانیم چیزی مشابه را در بازی که طراحی می کنیم به وجود بیاوریم. اما گاهی هم ممکن است از تخیل خود کمک بگیریم و مثلاً خرسی را طراحی کنیم که پرواز هم می کند. به هر صورت این یک نوع مدل سازی است. حالا اگر قرار باشد خرس پرواز بکند پس باید همه ویژگی های مربوط به پرواز یک پرنده را هم در خود داشته باشد.پس وقتی در دنیای برنامه نویسی و بازی ها هستیم مهم نیست چیزی که مدل سازی می کنیم در دنیای واقعی عیناً وجود دارد یا خیر. مهم این است ویژگی های مربوط به آن کاراکترها مدل درستی داشته باشند.
مفهوم شیء در برنامه نویسی شیءگرا
از نظر برنامه نویسی شیء گرا هر چیزی یک شیء است. هر شیء هم ویژگی های مخصوص خود را دارد.اینکه ما در برنامه های خود هر چیزی که وجود دارد را یک شیء در نظر بگیریم ساختن برنامه را برای ما ساده تر می کند. به این ترتیب اجزاء برنامه را به خوبی از هم جدا می کنیم و درباره رفتار هر کدام از اشیاء فکر می کنیم. اینکه نسبت به یکدیگر و اتفاقاتی که می افتد چه واکنشی نشان بدهند و در هر لحظه چه کاری باید انجام دهند.
به اطرافتان نگاه کنید؛ هر چیزی که می بنید یک شیء است. هر کدام ویژگی هایی دارد. مثلاً من در اتاقم یک کولر گازی دارم که ویژگی های آن به این صورت است:
- رنگ: سفید
- ارتفاع: حدود 1 متر
- دارای دو حالت سرد و گرم
- دارای کنترل از راه دور
اما هر شیء دارای یک مجموعه از رفتارهایی است. مثلاً کولر من با زدن دکمه روشن و خاموش، یک واکنش نشان می دهد. روشن می شود یا خاموش. اگر دما به حد نرمال برسد و کولر روی حالت خودکار تنظیم شده باشد به حالت خواب می رود.
حالا بیایید با یک مجموعه از اشیاء دیگر ویژگی ها و رفتارهای آن ها رو مرور کنیم. ما یک مجموعه ماشین داریم.
ماشین های ما هر کدام یک مجموعه ویژگی دارند که هیچ گاه تغییر نمی کند؛ مثل:
- رنگ
- سال تولید
- مدل
- سرعت موتور
- وزن
این مجموعه از ویژگی ها به عنوان متغیر خصوصی هر ماشین نامیده می شود. به این دلیل به آن ها خصوصی می گوییم که مخصوص هر ماشین است و ارتباطی به ماشین ها و اشیاء دیگر ندارد. این مجموعه از متغیرها به ما کمک می کند تا یک ماشین جدید با آن تعریف کنیم. مثلا یک ماشین زرد رنگ، با سال تولید 1400، سرعت موتور تا 150 کیلومتر در ساعت، مدل iCar، وزن 1500 کیلوگرم. این ماشین جدید هم یک شیء مشابه ماشین های دیگر است اما با ویژگی های متفاوت!
این ماشین ها یک مجموعه از ویژگی هایی هم دارند که در طول زمان ممکن است تغییر کند؛ مثل:
- وضعیت ایمنی (ماشین سالم است یا خیر)
- وضعیت تصادف
- نور چراغ ها
این ویژگی ها متغیرهایی از ماشین ها هستند که قابل تغییر هستند و خصوصی نیستند.
ماشین ها علاوه بر ویژگی هایی که گفتیم دارای یک مجموعه عملکرد یا رفتار هستند؛ مثل:
- بوق زدن
- حرکت کردن
- سبقت گرفتن
- تصادف کردن
در برنامه نویسی شیء گرا به طبقه بندی اشیاء “کلاس” می گویند. مثلاً همه ماشین هایی که در تصاویر می بینید از کلاس ماشین هستند. کلاس شامل مجموعه متغیرهای خصوصی اشیاء می شود. یعنی وقتی در برنامه نویسی یک شیء جدید از کلاس ماشین بسازیم، همه متغیرهای خصوصی شامل “رنگ، وزن، سرعت موتور و سال تولید” هم با آن مشخص می شود.
به هر کدام از ویژگی های ماشین ها مثل رنگ ، وزن و بوق زدن “متد” گفته می شود. متد ها عملکردهایی هستند که اشیاء دارند.
بعضی ویژگی ها، متغیرها و عملکردها خصوصی اند و توسط سایر اشیاء قابل دستیابی و دستکاری نیستند. مثلاً یک درخت کاری به رنگ ماشین ندارد. این نوع از عملکردها “متدهای خصوصی” نامیده می شوند.
برخی دیگر از ویژگی ها عمومی هستند؛ مثلاً در صورت برخورد ماشین به درخت، درخت می تواند باعث تغییر وضعیت ایمنی و سلامت ماشین شود. پس وضعیت ایمنی ماشین یک متد عمومی است. به آن دسته از عملکردهای اشیاء که توسط اشیاء دیگر قابل تغییر هستند “متدهای عمومی” گفته می شود.
در این قسمت تنها با مفاهیم ابتدایی برنامه نویسی شیءگرا آشنا شدید. در بخش های بعدی درباره اصول پیاده سازی این روش بیشتر صحبت خواهم کرد.
درباره زهره دارابیان
من تی تی ام. تی تی در زبان گیلکی به معنای شکوفه ست. در انگلیسی کوتاه شده Teacher Technologist ست. به معنای معلم فناور یا معلمی که به تکنولوژی علاقمنده یا موضوعات تکنولوژی رو درس میده. همیشه علاقمند به یادگیری ام و همین طور یاددادن. کار من ساده کردن دنیای علم و تکنولوژی هست. برای همین اینجام می نویسم، محصولات کمک آموزشی، روش های یادگیری و دوره های آموزشی جذاب طراحی می کنم. اینجا کلاس درسی ست به وسعت همه ایران. به دنیای یادگیری با آیکد همراه با تی تی خوش اومدید!
نوشتههای بیشتر از زهره دارابیان
1 Comments
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.