آموزش جامع برنامه نویسی جاوا به زبان ساده — بخش چهارم: آشنایی با زبان جاوا
بعد از معرفی برنامهنویسی شیءگرا در بخش سوم سلسله آموزش های جامع برنامه نویسی جاوا، نوبت به آن میرسد که به صورت جزئیتر با زبان جاوا از جمله ساختار و مفهوم کلاس در برنامه نویسی جاوا آشنا شویم.
امکان معرفی همه دستورزبان (Syntax) جاوا در یک آموزش وجود ندارد. در ادامه این مقاله دانش و تجربه کافی برای نوشتن یک برنامه ساده را به شما ارائه میدهیم.
آشنایی با زبان جاوا
در برنامهنویسی شیءگرا همه چیز در مورد شیء است. بنابراین این بخش با دو موضوع آغاز شده است که هر دو بهطور خاص به نحوه مدیریت اشیا در جاوا مربوط هستند: واژههای رزرو شده و ساختار شیء جاوا.
واژههای رزرو شده
زبان جاوا نیز مانند هر زبان برنامهنویسی دیگری واژههای ویژهای را که کامپایلر آنها را خاص میشناسد رزرو کرده است. به همین دلیل امکان استفاده از این واژهها برای نامگذاری سازههای جاوا وجود ندارد. فهرست واژههای رزرو شده (که کلیدواژه نیز نامیده میشوند) بهطور شگفتانگیزی کوتاه است:
abstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | short | static | strictfp | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
همچنین امکان استفاده از واژههای True ،False و Null برای سازههای جاوا وجود ندارد.
یکی از مزیتهای برنامهنویسی در IDE این است که از رنگآمیزی دستورزبان برای واژههای رزرو شده استفاده میکند و بدین ترتیب آنها متمایز میشوند.
ساختار کلاس جاوا
کلاس تعریف مشخصات یک نهاد گسسته (شیء) است که شامل خصوصیات و رفتارهای آن است. کلاس ساختار پایهای شیء را تعریف میکند. در زمان اجرا برنامه یک وهله از شیء ایجاد میکند. شیء مرز کاملاً تعریفشده و همچنین حالت دارد و زمانی که به طرز صحیحی از آن تقاضا شود میتواند کارهایی را انجام دهد. هر زبان شیءگرا قواعدی در مورد نحوه تعریف کلاس دارد.
در زبان جاوا، کلاسها بهصورت زیر تعریف میشوند.
قطعه کد 1- تعریف کلاس در جاوا
package packageName;
import ClassNameToImport;
accessSpecifier class ClassName {
accessSpecifier dataType variableName [= initialValue];
accessSpecifier ClassName([argumentList]) {
constructorStatement(s)
}
accessSpecifier returnType methodName ([argumentList]) {
methodStatement(s)
}
// This is a comment
/* This is a comment too */
/* This is a
multiline
comment */
}
کد فوق حاوی انواع مختلفی از سازهها است. package در خط 1، import در خط 2 و class در خط 3 نمونههایی از این سازهها هستند. این سه سازه در فهرست واژههای رزرو شده هستند و ازاینرو باید دقیقاً آنچنانکه در کد فوق آمدهاند نوشته شوند. نامهایی که به سازههای دیگر در کد فوق دادهایم و مفاهیمی که حاوی آن هستند را توضیح میدهیم.
به خط 11 تا 15 در کد فوق توجه کنید که خطوط توضیح هستند. در اغلب زبانهای برنامهنویسی، برنامهنویسها توضیحاتی برای کمک به مستندسازی کد قرار میدهند. دستورزبان جاوا امکان نوشتن توضیحهای یکخطی و همچنین چندخطی را ارائه میکند.
// This is a comment
/* This is a comment too */
/* This is a
multiline
comment */
توضیح یکخطی باید تنها در یک خط ارائه شود گرچه میتوان چند توضیح یکخطی را کنار هم قرار داد تا یک بلوک توضیح را بسازند. یک توضیح چندخطی با /* شروع میشود و باید با */ پایان یابد و میتواند در چند خط بسط یابد.
در ادامه با معرفی package شما را با سازههایی که در قطعه کد 1 در بالا آمدهاند بیشتر آشنا میکنیم.
کلاسهای package
در زبان جاوا میتوان نامهایی برای کلاسها انتخاب کرد مثلاً Account ،Person، یا LizardMa. ممکن است برخی اوقات حالتهایی پیش بیاید که مجبور شوید برای دو مفهوم که تفاوت اندکی دارند از نام یکسانی استفاده کنید. این حالت که تصادم نام (name collision) نامیده میشود بهوفور رخ میدهد. زبان جاوا از packages برای رفع این تعارض استفاده میکند.
پکیج جاوا سازوکاری برای ارائه یک فضای نام است. فضای نام حوزهای است که درون آن نامها منحصربهفرد هستند، اما خارج از آن لزومی به انحصار نیست. برای شناسایی منحصربهفرد سازهها باید با مشخص کردن فضای نام، آن را کاملاً مشخص کنید.
پکیجها همچنین روش مناسبی برای ساختن برنامههای پیچیدهتر با واحدهای گسسته عملکردی هستند.
برای تعریف کردن یک پکیج باید از کلیدواژه package و پسازآن نام معتبر برای پکیج استفاده کرد و در انتها علامت ; را قرار داد. اغلب نامهای پکیج از این استاندارد رایج استفاده میکنند:
package orgType.orgName.appName.compName;
این تعریف پکیج بهصورت زیر میتوان تجزیه کرد:
- orgType نوع سازمان است مثلاً com ،org یا net
- orgName نام دامنه سازمان است مثلاً faradars ،oracle یا ibm
- appName نام برنامه است که بهصورت اختصار میآید.
- compName نام جزئی برنامه است.
در سراسر این آموزش از همین روش استفاده شده است و توصیه میشود که از این روش برای تعریف همه کلاسهای جاوا در پکیجها نیز استفاده کنید (زبان جاوا اجباری به استفاده از این روش ندارد. کلاً نیازی به تعریف پکیج وجود ندارد ولی در این حالت باید نام همه کلاسها منحصربهفرد باشند و همگی در پکیج پیشفرض باشند.)
گزارههای import یا Import statements
پس از تعریف کلاس، نوبت گزاره import میرسد. گزاره import برای کامپایلر جاوا مشخص میکند کجا میتواند کلاسهایی که درون کد ارجاع یافتهاند را بیابد. هر کلاسی معمولاً برای انجام پارهای کارها به کلاسهای دیگر نیاز دارد و گزاره import در مورد آنها به کامپایلر جاوا توضیح میدهد.
گزاره import معمولاً بهصورت زیر به نظر میرسد:
import ClassNameToImport;
کلیدواژه import و پس از آن نام کلاسی که باید وارد شود و سپس علامت ; میآید. نام کلاس باید بهطور کامل بیاید به این معنی که باید شامل نام پکیج باشد.
برای وارد کردن همه کلاسهای پکیج میتوان از *. پس از نام پکیج استفاده کرد. برای نمونه این گزاره import همه کلاسهای پکیج com.makotojava را وارد کلاس میکند:
import com.makotojava.*;
وارد کردن کل یک پکیج ممکن است کد را ناخوانا بکند بنابراین توصیه میشود که تنها کلاسهایی که موردنیاز است را با نامهای کاملشان وارد کنید.
در بخش پنجم از این سلسله آموزش ها با نحوه اعلان کلاس در زبان جاوا آشنا خواهیم شد.