بایگانی دسته: Java

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 برید و همه‌ی اعمال رو انجام بدید.

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

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

Oracle Java

آموزش برنامه نویسی Java – شمارش Enumeration

شمارش Enumeration یک نمونه اعلام لیست

در قسمت قبلی مربوط به پروژه‌ی گربه‌سانان ما میتونستیم تو قسمت نژاد و جنسیت عبارتی رو به صورت String ذخیره بکنیم که این از نظر یک پروژه‌ی تجاری کار غلطیه که دست کاربر باز باشه و بتونه هر چیزی بنویسه… پس باید یک لیست از نژاد های مختلف آماده کنید که دسترسی بهش هم خیلی ساده باشه.
برای این کار نباید یه کلاس اضافه کنیم چون فقط برنامه رو سنگین کردیم.
طریقه‌ی نوشتن شمارش Enumeration به این شکله

شکل تابع شمارش Enumeration شبیه به همون Class هستش که فقط به جای Class از enum استفاده میشه
خوب با توجه به پروژه‌ی گربه سانان باید اکثر پراپرتی‌ها تبدیل به تابع شمارش Enumeration بشن.
به صورت زیر باید تابع enum رو به پروژه اضافه کنید.

افزودن کلاس

در مرحله بعد به جای گزینه‌ی Class گزینه‌ی enum رو انتخاب کنید.
اسم enam رو انتخاب کنید و OK و بعد از اون میبینید که شمارش Enumeration ساخته شده.
اولین شمارش Enumeration که باید اضافه کنید GenderType هستش که کاربر فقط نر و یا ماده بودن حیوان رو انتخاب کنه.
پس داخل تابع enum که اسمش GenderType هست مثل کد زیر male و female رو اضافه کنید.

همونطور که دیدید با کاما گزینه‌ها رو از هم جدا کنید.
خوب ای داستان رو برای پراپرتی FeatureType ,OwnershipType , PedigreeType, ,Size بنویسید.

حالا که همه چیز آمادست برید تو کلاسی که پراپرتی‌های گربه‌سانان رو نوشتین و کد رو به صورت زیر تصحیح کنید تا با شمارش Enumeration عمل کنه

و بعد Getter Setter رو برای همشون دوباره بنویسید.

شمارش Enumeration یکی از مبحث‌های ساده بود که به صورت مختصر براتون توضیح دادیم.
با پنگوئن همراه باشید 🐧

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 قبول میکنه.

Oracle Java

آموزش برنامه نویسی Java – شرط Condition

شرط Condition ، سمت و سو‌ی کد نویسی

شرط Condition در Java یکی از راه‌های هَندِلینگ کاربر و کد هستش… شرط Condition به طور کلی یکی از دستورات مهم در زبان‌های برنامه‌نویسی هست که در کل ماجرا شبیه هم هستن اما فرق‌های کوچیکی دارن که اینجا من شرط در Java رو بهتون آموزش میدم.
شرط به دو قسمت کلی تقسیم میشن که اولی با دستورات if ، else if ، if if ، else هستند که یه داستان دارن و دومی Switch Case
مثل حلقه Loop هر شرط از دو بخش اصلی تشکیل شده؛ شرط و دستور که در هر مرحله انجام میشه
خوب براتون چند نمونه از کد شرط Condition تعریف میکنم که این سناریو‌ها رو دنبال میکنه؛
۱) یک شرط داریم که اگر برقرار بود یه خروجی به ما میده.

خوب تو شرط بالا ما گفتیم که اگر X از ۲ کوچکتر بود برامون دستور ;()System.out.print چاپ بشه که اگر امتحان کنید میبینید که جمله‌ی “شرط برقرار است” رو در کنسول میبینید و دیاگرام اون به این صورتِ

if Statement
شرط if

۲) یک شرط داریم که یا برقراره و یا برقرار نیست که برای هر دو دستوری به اون میدیم.

خب در اینجا اگر شرط برقرار بود یه دستور و اگه برقرار نبود یه دستور دیگه میتونید بنویسید

if - else Satement
شرط if else

۳)مثل سناریو ۲ اما با این فرق که چند شرط داریم که یا برقراره و یا برقرار نیست که برای هر کدوم دستوری به اون میدیم.

توجه : در داخل پرانتز شرط باید == قرار داده بشه و اگر به جای == فقط یک مساوی بذارید مقدار عدد رو در داخل متغیر قرار میده و کل کد اشتباه میشه

۴) یک شرط در درون یک شرط داریم که باید هر دو برقرار باشه.

همونطور که دیدید به چهار روش مختلف تعریف میشن…

و اما Switch Case
شرط Condition در قالب Switch Case
شبیه سناریو سوم تو if هستش اما با دستورات متفاوت…

به جای break دقت کنید… کد رو با A ، B ، C ، D ، F و ورودی‌های دیگه امتحان کنید تا منطق کد نویسی رو یاد بگیرید

switch statement
Switch Condition

در اینجا Case نقش else if رو داره و default نقش else

با Pangoan.net همراه باشید🐧

Oracle Java

آموزش برنامه نویسی Java – حلقه Loop

حلقه Loop ، تکرار در دستور

همونطور که میدونید هر پروژه‌ی برنامه نویسی بیشتر از پنج هزار خط کد داره و تا جایی که امکانش هست باید از تکرار در کد نویسی پرهیز کنیم. حلقه Loop یکی دیگه از راه های جلوگیری از تکرار و راه‌حلی برای ادامه‌ی یه دنباله هستش.
هر حلقه Loop از دو بخش اصلی تشکیل شده؛ شرط حلقه و دستور حلقه که در هر مرحله از تکرار اون انجام میشه
حلقه Loop در Java چند نوع مختلف داره؛ for – while – do…while
حلقه for دارای نقطه‌ی شروع ، نقطه‌ی پایان و الگوریتم حرکتی در هر مرحله هستش. که تو نمونه کد به راحتی میتونید با اون آشنا بشید.

همونطور که دیدید حلقه Loop for به این صورت نوشته میشه؛ در قسمت اول یه متغیر از نوع int تعریف میکنیم و عدد اول رو صفر قرار میدیم. در قسمت دوم میگیم که تا عدد ۱۰ برو جلو و در قسمت آخر میگیم که در هر مرحله به i یک واحد اضافه کن. “میشه به جای i++ نوشت i+1=i ولی i++ از لحاظ کد نویسی درستتر هستش” و در خروجی این رو بهتون میده

الگوریتم فلو حلقه loop
for loop

 

حلقه while شبیه for هستش تنها با این تفاوت که در قسمت شرط حلقه فقط نقطه‌ی پایان نوشته میشه… اگر هم نیاز به الگوریتم حرکتی داشتید اون رو تو دستور حلقه که در داخل بدنه‌ی حلقه Loop نوشته میشه اضافه کنید.

همینطور که میبینید عدد ۰ بوده و خارج از بلاک کد حلقه Loop هست و تو شرط حلقه نوشته شده که x تا کوچکتر مساوی از ۱۰ باید جلو بره و در دستور هر مرحله یک عدد به x اضافه میشه. خروجی هم مثل حلقه‌ی قبلیه

الگوریتم حلقه while
while loop

 

حلقه do…while شبیه به while هستش اما فرقش رو میتونید تو نمونه کد زیر به طور کامل ببینید.

این نمونه هم خروجی یکسان داره ولی میتونید فرق رو ببینید.

الگوریتم حلقه do...while
do…while loop

حلقه Loop
با پنگوئن همراه باشید.

Oracle Java

آموزش برنامه نویسی Java – آرایه در Java

آرایه در Java ، یه سطل متغیر

آرایه در Java یعنی یک پک از یک نوع متغیر … خیلی وقتا شما به مقدار زیادی از متغیر‌ها نیار دارید ، مثلا ۱۰۰تا متغیر از نوع Integer . خوب برای این‌کار اگه ۱۰۰تا int تعریف کنیم که کار درستی نیست.
در اینجا بحث آرایه در Java پیش میاد ، البته این موضوع صرفا مربوط به جاوا نیست و در همه‌ی زبان‌های برنامه‌نویسی هستش… در ++C ، در #C ، در Python و …

در کل داستان وقتی شما یه آرایه در Java تعریف می‌کنید در واقع یک پک از یه نوع متغیر تعریف کردید که در صورت نیازتون میتونید پُرش کنید ، مقدارش رو تغییر بدین و در هر جایی در داخل براکد کد با دادن آدرس Index به اون دسترسی پیدا کنید.

به این صورت از ابتدا نوع متغیر ، براکت باز و بسته “که البته در Java در داخلش عدد قرار نمیگیره… در زبان‌های دیگه مثل C , C Sharp و ++C در داخل اون تعداد متغیر‌های آرایه نوشته میشه ” و بعد از اون نام آرایه و در آخر سیمیکالن.
// آرایه در Java //
نوع دیگه‌ای هم هست که در همون خط مقدار دهی انجام میشه

در کد بالا به ترتیب از چپ به راست خونه‌های آرایه در Java رو دارید و نکته‌ی مهم اینه که Syntax ها از صفر شروع میشن یعنی الان در کد بالا آرایه پنج عضو داره اما عدد ۶ در خونه یا Syntax چهارم هستش… عدد ۲ در خونه‌ی صفر ، ۳ در یک ، ۵ در دو ، ۷ در سه و ۶ در چهارم هستش.

در اینجا اگر بخوایم Syntax چهارم رو عوض کنیم باید به صورت زیر عمل کنین…

همینطور که میبینین الآن من عدد ۶ رو با ۲۰ عوض کردم. به این صورت شما میتونید هر عددی رو در هر جای آرایه در Java با عددی دیگه تعویض ، حذف یا اظافه کنید.

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

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 رو یاد بگیرید. در مقاله‌های آینده دستورات اصلی مثل حلقه‌ها ، شرط‌ها و آرایه‌ها و … رو بهتون آموزش میدیم.
با پنگوئن همراه باشید.