شروع کدنویسی در جاوا
قبل از اینکه وارد بحث اصلی آموزش شویم یه مثال خیلی ساده از جاوا اجرا کنیم. قبل از اجرا شما لازم هست JDK را نصب کنید. JDK ابزار توسعه و کامپایل کدهای جاوا هست. همچنین برای کدنویسی پیشنهاد میکنم intellij iDEA نصب کنید
که مراحل نصب و راه اندازی رو میسپارم به دوستان و اگه مشکلی بود تا جلسه بعدی بپرسین حتما
خوب بهتر هست قبل از آموزش اول 2 مثال خیلی ساده از جاوا ببینیم.
خوب بریم سراغ کد نویسی در جاوا:
کد بالا در واقع متن Hello را داخل کنسول یا همون output برای شما چاپ میکند.
برای شروع کدنویسی در جاو به این نکات دقت فرمایید:
- تابع main که همیشه به همین صورت ظاهر میشود در واقع اولین نقطه اجرا کد میباشد. یعنی همیشه کدها با تابع main شروع و امضای این تابع دقیقا همیشه به این شکل میباشد:
public static void main(String args[])
که بعدا در مورد بخش های مختلف آن صحبت میکنیم.
- نکته بعدی اینکه دقت کنید تابع main داخل یک کلاس قرار داره. در واقع در جاوا هر کلاس در یک فایل قرار میگیرد که همیشه اسم فایل و اسم کلاس باید یکی باشد. در اینجا ما این کدها را داخل فایل Main.java نوشتیم.
- نکته بعدی اینکه جاوا case sensitive هست یعنی به کوچک و بزرگ بودن حروف حساس هست.
- نکته بعدی اینکه توی زیانهای شیگرا از کلمه تابع استفاده نمیکنند و بجاش از کلمه متد استفاده میشه. یعنی در واقع تابع main از این به بعد میشه متد main!!
خوب الان یه مثال دیگه با هم ببینیم تا بیشتر در جریان کار قرار بگیرید:
توی این کد ما دو عدد از کاربر (از قسمت output) دریافت کردیم باهم جمع کردیم و در خروجی چاپ کردیم. ولی چطوری؟
فایل جدیدی به نام Main2.java ساختیم و داخل اون کلاس Main2 رو میسازیم تا هربار مجبور به نوشتن امضای main نباشید کافیه بنویسید psvm و دکمه tab کیبورد رو بزنید! خود IDE کد را تکمیل میکند.
خب درخط ۵ ما داریم نمونهای به نام input از کلاس Scanner را میسازیم تا بتوانیم از آن استفاده کنیم. (عجله نکنید بعدا توضیح میدیم این نمونه ساختن به چه نحوه ای است)
و در آخر هم حاصل را چاپ میکنیم.
خب دوستانی که تازه شروع کردن میتوانند برای جلسه بعدی برنامهای بنویسید که ابتدا یک عدد را بگیرد بعد یکی از علامتهای + - * و بعد عدد دوم. و حاصل این دو عدد با توجه به علامت گرفته شده راچاپ کند.
هدف از گفتن این دو مثال فقط این بود که با نحوه کدنویسی آشناییت پیدا کنید.
خوب بریم سراغ بحث اصلی این جلسه که در مورد ۲ اصل اول بحث گذشته یعنی abstraction صحبت کنیم.
خب قبل از اینکه شروع کنیم سوالی زاز شما میپرسم که انتظار دارم به آن فکر کنید. در مثال بالا Scanner یک موجودیت بود یا یک کلاس؟ (با توجه به جلسه قبلی میتونید پاسخ بدین)
در مورد آن فک کنید تا آخر جلسه دربراه آن صحبت کنیم.
خب، مهمترین نکتهای که در طراحی شیگرا باید به آن دقت داشته باشیم فهمیدن موجودیتهای سیستم(پروژهای که به ما داده شده) است. در واقع موجودیت ها همان عاملهای انتزاعی هستند که جلسه اول در مورد آن صحبت کردیم. پس قدم اول ما پیدا کردن موجودیتهای سیستم می باشد.
مثال: موجودیت های سیستم ثبتنام دانشگاه
۱- دانشجو
۲- درس
۳- استاد
۴- دانشگاه
در این مثال آیا واقعا دانشگاه موجودیت است؟
با اینکه ما فقط یک نمونه از آن را درسیستم داریم. جواب این سوال بله هست. موجودیت بودن یا نبودن را تعداد نمونه های آن نشان نمیدهد.
پیدا کردن موجودیتها و مدل کردن سیستم کاری است که به مرور زمان و تجربه خیلی سادهتر می شود ولی نکاتی دارد که باید در طراحی در نظر گرفت و خیلی مهم هستند که با توجه به اینکه این آموزش، آموزش جاوا است ما روی این موضوع وقت نمیگذاریم.
بعد از فهمیدن موجودیتهای سیستم لازم است خصیصه ها یا ویژگیهای موجودیت و توانایی آنها را پیدا کنیم. از این به بعد به خصیصه ها field می گوییم و تواناییها همون متدهای موجودیت هستند.
خب پس ما باید برای تک تک این موجودیت ها field ها رو مشخص کنیم و بعد بریم سراغ متدها. پس کلاسی به نام Student میسازیم به این صورت:
تا اینجا ما این field ها را برای دانشجو در نظر گرفتیم. شاید بعدا بهش اضافه کنیم.
خب یک توانایی یا متد به نام printName اضافه میکنیم که اسم و فامیل را برای ما چاپ میکند به این صورت:
الان بریم ببینیم چطور میتوانیم از این موجودیت دانشجو استفاده کرد. من نمونهای به نام ali از موجودیت دانشجو به این صورت مینویسم.
Student ali = new Student();
این عبارت همون طور که میبینید از ۴ جز اصلی تشکیل شده است. از سمت چپ به راست:
Student در واقع نوع موجودیت را مشخص میکند و ali اسم نمونه است که شما میتوانید هر اسمی بگذارید. در واقع تا اینجا شبیه ساختن یه متغییر از جنس int است:
int a;
که در واقع متغییری به نام a داریم از جنس int میسازیم.
کلمه Student در واقع نوع موجودیت را مشخص میکند و ali اسم نمونه استکه شما میتوانید هر اسمی به اختیار بگذارید. در واقع تا اینجا شبیه ساختن یه متغییر از جنس int است:
int a;
که در واقع متغییری به نام a داریم از جنس int میسازیم.
من یه نمونه دیگه به نام std1 هم از کلاس Student میسازم:
Student std1 = new Student();
خوب ما میتونیم به این صورت به اجزای یک نمونه دسترسی داشته باشیم:
ما در خط ۹ ویژگی id نمونه ali را مقدار ۱ قرار دادیم و در خط بعدی برای ویژگی name نمونه ali مقداری را مشخص کردیم. خط ۱۲ و ۱۳ برای نمونه std1 و درخط های انتهای مقدار آن ها را چاپ کردیم.
در خط ۲۰ هم متد printName را فراخوانی کردیم که درواقع اسم و فامیل کاربر را برای ما چاپ میکند.
فقط دقت کنید در خط ۱۸ ما داریم field رو مقدارش رو چاپ میکنیم که مقدار دهی نکردیم بنابراین جاوا مقدار پیش فرض یعنی null را برای ما چاپ میکند.
نکته که همه دوستان میدانند ولی لازم است یاداوری کنم این است که هر نمونه ویژگیهای خود را دارد و جایگاه ذخیرهسازی آنها در حافظه متفاوت می باشد. یعنی id نمونه اول با id نمونه دوم و همه نمونه های دیگر متفاوت هستند.
تا اینجا برای این جلسه کافی است. جلسه بعدی یاد میگیریم این موجودیت را چطور کپسوله کنیم و مطالب مرتبط با آن را برای شما می گوییم.
تکرار می کنم که بحثها ابتدایی هستند ولی کم کم سرعت یادگیری را بالا میبریم که همه بتوانند استفاده کنند پس کمی صبور باشید.تا به جاهای خوب هم برسیم!
فقط همان طور که قول داده بودم آخر هر جلسه چندتا از نکات نگارشی توی زبان جاوا رو خدمت شما می گویم. دقت داشته باشید که رعایت نکردن این موارد تاثیری در کامپایل شدن یا نشدن کدها ندارد ولی برای نوشتن استاندارد لازم هست رعایت شود.
نکاتی جهت کدنویسی استاندادر در جاوا
1) نام کلاسها با حرف بزرگ شروع می شوند. اگر نام کلاس شامل دو کلمه یا بیشتر باشد حرف اول کلمات را بزرگ می نویسیم.
Test , StudentTest, MyStudent
2)نام متغییرها و نام متدها با حرف کوچک شروع میشوند و اگر چند کلمهای بود، حرف اول کلمات بعدی بزرگ نوشته می شوند.
test, testStudent, printName(), name, id
3) از - یا _ یا $ و کلا از سایر علامت ها برای انتخاب اسم کلاس، متد، متغییر استفاده نکنید.