بایگانی برچسب: s

Object-oriented

آموزش شئ گرایی Java – چند ریختی Polymorphism

چند ریختی Polymorphism مهمترین مبحث شئ‌گرایی

از الان تا آینده محور آموزش روی مبحث چند ریختی Polymorphism هستش… در تمام زبان‌های برنامه‌نویسی شئ‌گرا و در همه‌ی مباحث اصلی و فرعی و Design Patternها چند ریختی Polymorphism به شکل‌های مختلف دیده میشه!
اول از توضیح شروع میکنم و بعد نمونه کد رو بهتون نشون میدم.
خب اول از همه اگه مبحث Inheritance رو بلد باشید میدونید که در اونجا یک Property بود که از کلاس بالاتر از خودش ارث میبرد اما اینجا یک Method در یک کلاس زیر مجموعه‌ی خودش Override میشه!
برای مثال اگه شما یک متد به نام دریافت در یک سیستم حساب بانکی رو در نظر بگیرید ، دریافت وجه در یک حساب بلند مدت معنی ندارد و فقط در کلاس‌های BankAccount و CreditAccount دریافت وجه معنی داره و تو کلاس SavingAccount هیچ معنی نمیده چون شما از یک سپرده‌ی بلند مدت بانکی پول دریافت نمی‌کنید!
پس در اینجا متد Withdraw که نقش برداشت از حساب رو داره چند ریختی هستش… این یعنی چند ریختی Polymorphism.
نمونه کد زیر متد Withdraw رو در چند کلاس بهتون نشون میدیم تا چند ریختی Polymorphism رو بطور کامل درک کنید.

با پنگوئن همراه باشید 🐧

Object-oriented

آموزش شئ گرایی Java – ارث بری Inheritance

ارث بری Inheritance کلاس‌ها از یکدیگر

وراثت یا ارث بری Inheritance یکی دیگه از مباحث مهم و پر استفاده در زمینه‌ی شئ‌گرایی در برنامه نویسی هستش.
همینطور که میدونید هر کلاس خاصیت و رفتارهای مختلفی داره و بعضی وقت‌ها ممکنه که چندین ویژگی در چند کلاس مختلف یکسان باشه و فقط یکی دو تا از اونا فرق کنه! تو این مورد از ارث بری Inheritance استفاده میکنیم… یعنی یک کلاس رو به عنوان Super میسازیم که ویژگی و خواص مشترک در اون باشه و بقیه‌ی خواص که نمیشه به همه نسبت داد تو کلاس‌های Sub نوشته میشه…
شاید یه ذره براتون مبهم باشه ولی وقتی تو یک مسئله به کار بره میبینید که خیلی هم راحته. راحت‌ترین و قابل فهم‌ترین مثال همون مثال گربه‌سانان هستش که برای مثال همه‌ی گربه سانان اهلی نمیشن… این یه ویژگی که برای همه صدق میکنه اما مثلا یال رو فقط شیر داره و نمیشه تو کلاس Super قرارش داد. پس ویژگی یال داشتن رو فقط تو کلاس شیر میذاریم.
به نمونه کد زیر یه نگاهی بکنید…

خب این نمونه از کلاس Super بود..

حالا نمونه کد زیر از کلاس Sub هستش.

خب در اینجا میبینید که کلاس Cat ویژگی جدایی داره در حالی که دارای تمام ویژگی‌های کلاس Super هم هست… یعنی اگه برای استفاده از هر کدوم از ویژگی‌ها تو تابع main از کلاس Cat شی بسازید میبینید که ویژگی‌های کلاس Felidea که از اون ارث بری Inheritance کرده هم قابل استفاده هستش.
از طرف دیگه تو اولین خط دستور public class Cat extends Felidae رو میبینید که extends Felidae یعنی کلاس Cat از Felidae ارث بری Inheritance کرده.

با پنگوئن همراه باشید 🐧

Object-oriented

آموزش شئ گرایی Java – متد Method

متد Method و پراپرتی Property دو پایه‌ی اساسی شئ‌گرایی

تو قسمت‌های قبل بهتون گفته بودم که هر شئ یه سری خاصیت داره و یه سری رفتار؛ خاصیت یا پراپرتی در موردش صحبت شد و این قسمت برای آشنایی با متد Method هستش و در کل بحث ساده و پر کاربردیه پس به نمونه‌ی نوشتنش دقت کنید و بعدش چند مثال ازش حل می کنیم.
شکل نوشتن شبیه به یک تابع هستش…
اگر پروژه‌ی گربه‌سانان رو به خاطر داشته باشید برای متد Method میشه زنده بودن رو در نظر گرفت.

خب این ساده ترین مدل از یک متد Method هستش که فقط True/False بر میگردونه که زنده بودن یا نبودن رو معلوم میکنه.
حالا اگه بخوایم یه نمونه با کد‌های کاملتر مثال بزنیم بهتر که موضوع رو یه مقدار پیچیده کنیم.
یه حساب بانکی رو در نظر بگیرید. چه رفتار و خاصیت‌هایی داره؟
به یه متد Method ساده از یه حساب بانکی تو نمونه‌ی کد زیر نگاه کنید.

خوب همینطور که میبینید یک حساب بانکی؛باز بودن، بسته بودن، برداشت، پرداخت و صورت حساب
تو کد بالا تمام اینا اومده.
برای امتحان متد Method به تابع Main برید و همه‌ی اعمال رو انجام بدید.

کپی کردن این کد‌ها به تنهایی ممکنه که برنامه‌تون رو راه بندازه ولی برای تبدیل شدن یه برنامه نویس معمولی به یه مهندس نرم‌افزار نیازه که هر خط از کد شما با فکر نوشته بشه… پس فقط کپی نکنید و ببینید هر خط از کد زیر داره چیکار میکنه.

با پنگوئن همراه باشید 🐧

Object-oriented

آموزش شئ گرایی Java – کپسوله سازی Encapsulation

کپسوله سازی Encapsulation قسمت سوم شی گرایی

تو قسمت‌های گذشته‌ی شئ‌گرایی گفتم که هر Property یا خاصیت سطح دسترسی‌های مختلف مثل Public ، Private و Protected داره که این قسمت به مفهوم این‌ها و راه استفاده ازشون اختصاص داده شده.
خوب اول از سطح دسترسی Public شروع میکنیم؛ سطح دسترسی Public در Propertyها یعنی اون پراپرتی در تمام کلاس‌ها در برنامه قابل استفاده هستش؛ اگه دقت کرده باشین دیدین که ما Name‌ رو تو کلاس گربه‌سانان ساختیم و تو یه کلاس دیگه تو تابع Main از اون استفاده کردیم و به اون مقدار دادیم.
سطح دسترسی بعدی Protected هستش که این نوع فقط قابل تغییر تو کلاس خودش هست و طریق Inheritance ارث‌بری که تو قسمت‌های بعد بهتون آموزش میدیم قابل تغییر هست.
و اما سطح دسترسی Private که فقط تو کلاس خودش قابل استفاده هستش و تو کلاس دیگه و یا از طریق Inheritance ارث‌بری که تو قسمت‌های بعد بهتون آموزش میدیم قابل تغییر نیست.
کپسوله سازی Encapsulation همونطور که از اسمش پیداست باید کاملا کپسوله بشه و راه‌های ورود و خروجش رو تا حد امکان کم کرد؛ پس برای کپسوله سازی Encapsulation نیازه که از Private برای Propertyهامون استفاده کنیم. (سطح دسترسی اگه تنظیم نشه به طور پیشفرض Private هستش).
خوب پس برای کپسوله سازی Encapsulation پراپرتی‌ها باید سطح دسترسی همه رو کم کنیم.
طبق کد زیر و پروژه‌ی گربه‌سانان پراپرتی‌ها رو Private کنید.

خوب کد شما الان کپسوله سازی Encapsulation شد.
ولی صبر کنید… الان نه میتونید مقداری ازش بگیرید نه میتونید مقداری روش تنظیم کنید 😐 راه حل چیه؟
خوب بهتون گفتم که سطح دسترسی Private فقط از تو کلاس خودش قابل تغییره پس یک تابع برای setکردن مقدار و گرفتن مقدار تو همون کلاس بنویسید که سطح دسترسی اون تابع public باشه که فقط با صدا زدن تابع کار خدشو بکنه.
به این تابع‌ها Getter – Setter گفته میشه؛ getter برای گرفتن اطلاعات و Setter برا تنظیم مقدار.
طبق نمونه کد با طریقه نوشتنش آشنا بشید.

همونطور که توابع رو میبینید تابع get مقدار رو return میکنه و تابع set خروجی نداره و void هستش و فقط یک عمل رو انجام میده.
این توابع getter setter رو برای همه‌ی Propertyها بنویسید تا کپسوله سازی Encapsulation به طور کلی انجام بشه.
کد کامل رو میتونید تو نمونه کد زیر ببینید

دقت کنید که Property با متغیر Boolean به جای تابع با اسم get عبارت is هستش.
آخرین نکته اینه که قرار نیست همه‌ی این کد ها رو دستی بنویسید و شرکت Jet Brains به فکر شما بوده.
برای اضافه کردن راحت و سریع getter setterها طبق عکس به منو‌ی کد
IntelliJ IDEA
گزینه‌ی Generate رو بزنید و تو پنجره‌ی باز شده Getter Setter رو بزنین.
Generate
تو پنجره‌ی جدید همه‌ی Propertyها انتخاب کنید و OK رو بزنین تا Getter Setter ها اضافه بشه.
GetterSetter

با پنگوئن همراه باشید 🐧

Object-oriented

آموزش شئ گرایی Java – خاصیت Property

خاصیت Property قسمت دوم شی گرایی

تو قسمت قبل گفتیم که در شی گرایی چند مورد هست که تو این قسمت رو به خاصیت Property اختصاص دادیم.
هر کلاس به ترتیب چند قسمت میشه توش گذاشت که اولین اون خاصیت Property هست. هر شی به طور کلی دو چیز داره! خاصیت و رفتار.
خاصیت Property اولین بخش توضیح یه شی هستش که ترتیب نوشتن اون به این شکله! نوع دسترسی Property+نوع متغیر Property+ نام Property

تو نمونه کد زیر میتونید ببینید

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

شما الان خاصیت Property رو برای یک گربه‌سان تو برنامتون تعریف کردید. خیلی راحت میتونید جای دیگه از برنامه از این خاصیت‌ها استفاده کنید.
برای استفاده برید تو تابع Main و به صورت زیر یک شی از کلاس گربه‌ سانان بسازید و از خاصیت Property استفاده کنید

به شکل نمونه کد زیر میتونید مقدار رو روی خاصیت Property تنظیم کنید.

اگه برنامه رو RUN کنید میبینید که اسم “Ted” روی خاصیت Name سِت شده. به همین روش میتونید بقیه رو جایگذاری کنید.

یادتون نره که متغیر‌های غیر String تو ست کردن نیازی به Double quote نداره و متغیر Boolean فقط true/False قبول میکنه.

Object-oriented

آموزش شئ گرایی Java – کلاس Class

مبحث مهم شی گرایی ، قسمت اول کلاس Class

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

به این شکل… ولی چون هر کلاس کلی کد توش نوشته میشه و هر کدوم از کلاس Class به ترتیب از بالا Property , Constructor , Getter Setter , Method , Override رو دارن پس اگه هر کلاس رو تو پنجره جدا ننویسیم و همه رو توی کلاس Class اصلی پروژه بنویسیم بیشتر به جُک شبیه تا کد برنامه‌نویسی…
پس به صورت زیر عمل کنید تا نحوه‌ی اضافه کردن کلاس Class به پروژه رو یاد بگیرید.

افزودن کلاس
افزودن کلاس
نام کلاس
نام کلاس

نام کلاس رو وارد میکنید و OK و تموم میشه…
کلاس های مورد نظر رو وارد می‌کنید و میتونید از Tool Windows قسمت Project رو انتخاب کنید و کلاس Class رو مدیریت کنید.
افزودن کلاس Class شروع مبحث شئ گرایی بود. شئ گرایی داستان خودش رو داره ولی قبل از ادامه‌یشئ گرایی باید دستورات اصلی برنامه‌نویسی Java رو یاد بگیرید. در مقاله‌های آینده دستورات اصلی مثل حلقه‌ها ، شرط‌ها و آرایه‌ها و … رو بهتون آموزش میدیم.
با پنگوئن همراه باشید.