قواعد نحوی و کامپایل شدن در جاوا
در آموزه ویدئویی حاضر به قواعد نحوی و اصول کامپایل شدن در جاوا پرداخته شده است. کاربران با قواعد ایجاد کلاس های جاوا بهمراه یک مثال آشنا می شوند و در ادامه با قواعد مهم نحوی جاوا از جمله حساسیت به حروف کوچک و بزرگ یا نحوه بازخورد جاوا به فضاهای خالی اشاره می گردد. کاربران با شناسه ها و کلمات کلیدی آشنا می شوند و در نهایت کنوانسیون های نامگذاری شرح داده می شود.
فهرست مطالب آموزش
کلاس ساده جاوا
همه ی کدهای جاوا در کلاس ها تعریف میشن.
برای هر فایل سورس کدی، حداقل یک کلاس جاوا با پسوند دات java تعریف میشه.
می تونید این فایل های متنی-رو، در هر ویرایشگر متنی که خواستید ایجاد کنید، البته من از IntelliJ IDEA برای پوششِ این دوره آموزشی استفاده می کنم.
کامپایلر java c، کد متن اصلی شمارو، به کدهای بایتی کامپایل میکنه تا بتونه توسط jvm تفسیر بشه،
و سپس فرمان جاوا یا java command اون کدرو اجرا میکنه.
در تصویر زیر برنامه ی معروف Hello World رو واستون آوردم.
قوانین مهم سینتکس جاوا
نام این کلاس Main هستش، پس این برنامه در یک فایل متنی با نام Main.java تعریف شده. خط اول این برنامه مربوط به معرفی پکیج برنامه هستش. کلاس های جاوا معمولا از پکیج ها تشکیل میشن. یک پکیج “رشته ی” منحصربفرد جهانی هستش که معمولا با نام دامنه ی برنامه به صورت معکوس شروع میشه. یعنی اگه دامنه ی من malekpour.com باشه، می تونم پکیجم رو با رشته ی com.malekpour شروع کنم برای اینکه اطمینان حاصل کنم که یک شناسه ی منحصربفرد جهانی باشه.
بعد اگه بیشتر از یک کلاس با نام Main در یک برنامه وجود داشت، می تونم با استفاده از نام پکیج، بینشون تمایز ایجاد کنم. بعد از اون قسمت معرفی کلاس رو داریم. کلمه ی public یعنی که این کلاس برای کل برنامه در دسترس هست. نکته قابل توجه این هست که هر فایل سورس کدی، باید شامل حداقل یک کلاس public باشه. نام کلاس Main هستش، که شناسه ی اون محسوب میشه. و تنها یک متدرو پیاده سازی می کنه که اونم اسمش Main هست. توجه داشته باشید که برای نام متدها از حروف کوچیک، برای حرف اول اونها استفاده میشه.
یک برنامه ی کنسولی همیشه شامل یک متد main میشه. برنامه کنسولی یعنی برنامه ای که ورودی و خروجیش و کلاً اجرای اون در یک محیط متنی و کنسولی هستش؛ یعنی گرافیکی نیست. و همیشه این متد main یکی از این سه کلمه ی کلیدی public, static و void رو حتماً داره. Public به معنی این هست که متد برای کل برنامه در دسترس هست. Static یعنی اون متد میتونه به طور مستقیم از طریق صدا زدن نام کلاسش فراخونی بشه؛ به جای اینکه بیاییم یک نمونه از کلاسو ایجاد کنیم و بعد متدرو صدا بزنیم. یعنی برای فراخونی متد استاتیک از یک کلاس به جای اینکه بگیم new نام کلاس، و بعد اون متد؛ کافی هست نام کلاس رو بنویسیم و بعد متد استاتیک رو فراخونی کنیم. همچنین این نکته قابل ذکر هست که در متدهای استاتیک نمیشه از کلمه ی کلیدیه this استفاده کرد و واسش بی معناست. و در آخر void هم یعنی که این متد هیچ مقدار بازگشتی نداره ینی هیچ مقداریو برنمی گردونه و فقط یک عملیات خاص انجام میده. همچنین لازم هست که متد main یک آرایه ی رشته ای رو به عنوان آرگومان یا پارامتر ورودی دریافت کنه.
که اون باید یک آرایه از string ها باشه. ولی نام این آرایه دلخواه هست و الزامی نیست که args باشه، می تونید اسمش رو هر چیزی که دلتون خواست بذارید. در نهایت، کد اجرایی ای که قرار در متد main اجرا بشه. این کد رشته ی Hello World رو در کنسول چاپ میکنه و همونطور که در تصویر اخیر می بینید در انتهای این خط یک سیمی کالون قرار داره، به معنی اینکه این خط کد به پایان رسیده. یکی از قوانین جاوا این هست که آخر هر دستور یک سیمیکولون قرار داده میشه. من در تصویر زیر واستون چند تا از قوانین مهم سینتکس جاوا رو آوردم. جاوا به حروف کوچیک و بزرگ حساسه
و همه ی شناسه ها در حوزه ی مربوط به خودشون باید به صورت منحصربفرد تعریف بشن.
میخوام یک مثال بزنم تا بهتر متوجه بشید، از اونجاییکه جاوا یک زبان حساس به حروف کوچک و بزرگ هستش، پس در این زبان مثلاً، سه آیدی موجود در تصویر زیر، یا نام متغیر که الان در اسلایدِ زیرمی بینیدشون؛ متفاوت از همدیگه در نظر گرفته میشن.
قواعد نحوی و کامپایل شدن در جاوا
firstname ای داریم که همه ی حروفش کوچیک هست، firstName بعدی با یک حرف بزرگ در وسطش و FIRSTNAME آخر با کلیه ی حروف بزرگ. این سه تا متغیر یا مقدار از هم متمایز هستن و هر کدامشان نماینده یک متغیر یا مقدار جداگانه هستن. همچنین در جاوا، فضاهای خالی تاثیری روی تفسیر کدتون ندارن و اصلا دیده نمیشن.
مثلا در ویژوال بیسیک و چند تا برنامه ی دیگه، رها کردن یک خط به معنی این هستش که عبارت جاری تمام شده.
ولی در جاوا رها کردن یک خط دقیقا مثل یک فضای خالی یا یک کاراکتر تب در نظر گرفته میشه. در حقیقت همه ی این سه نوع کاراکتر یعنی اسپیس، تب و یک خطِ خالی؛ در طول فرآیند کامپایل به عنوان یک بیت فضای خالی در نظر گرفته میشن و توسطِ کامپایلر اصطلاحاً collapsed میشن. خب میریم سراغ انتهای یک کد یا عبارت، در جاوا وقتی یک خط کد تموم شد باید از کاراکتر سیمی کالون استفاده کنید.
مثلا کدی که من الان در اسلاید زیر ارائه کردم،
شناسه ها و کلمات کلیدی در جاوا
به برنامه میگه که این رشته رو در کنسول چاپ کنه؛ و لازمه که کاراکتر سیمی کالون در انتهای اون قرار بگیره.
خیلی وقتا میشه که این کاراکتر رو یادمون میره بذاریم و برنامه با ارر مواجه میشه. نکته قابل توجه دیگه در جاوا، این هست که برای شناسه ها یا نام های کلاس ها، متغیرها، و اجزای دیگه؛ نمیشه از کلمات کلیدی این زبان استفاده کرد.
زبان جاوا یک مجموعه ی کامل از کلمات کلیدی داره که باید اونارو یاد بگیرید.
بد نیست بدونید کلمات کلیدی مثل for, while, assert و دیگر کلمات کلیدی رو نمی تونید برای نام متغیرهاتون استفاده کنید؛ و اگه اینکارو بکنید، کامپایلر اونو رد میکنه. بازم میگم که نام های کلاس ها، متدها، متغیرها،و بقیه ی نام ها به عنوان شناسه شناخته میشن.
و همه ی شناسه ها باید با یک کاراکتر از حروف الفبا یا یک کاراکتر آندراسکو شروع بشن.
نمی تونید در ابتدای نامِ شناسه از اعداد و یا کاراکترهای خاص دیگه استفاده کنید.
کنوانسیون های نامگذاری در جاوا
در جاوا قواعد نامگذاری زیادی وجود داره که باید اونارو یاد بگیرید و أزشون استفاده کنید.
نام های کلاس ها همیشه با یک حرف بزرگ شروع میشن.
مثلا MyClass نام یک کلاس هست
و با M بزرگ شروع شده، ولی بعد از حرف اول می تونید از حروف کوچیک هم استفاده کنید، که البته از حروف بزرگ وسط نام ها برای خوانایی بهتر استفاده میشه. متدها، متغیرها، و دیگر اعضای یک کلاس همیشه باید با یک کاراکتر کوچیک شروع بشن.
مثلا متد doSomething که در اسلاید تصویر زیر، به عنوان مثال آوردمش؛ با d کوچیک شروع شده.
و این متد یک آرگومان یا پارامتر ورودی که با w کوچیک شروع میشه رو دریافت می کنه.
اگه شما این شناسه هارو با کاراکترهای بزرگ تایپ کنید، برای کدتون مشکلی پیش نمیاد و درست کار میکنه. ولی اینکار غیر حرفه ای هست و اگه توسعه دهنده های دیگه کدتون رو ببینن اصلاً جالب نیست.
و اما ثابت ها همیشه کل حروفشون بزرگ هستش.
البته باید بگم که هیچ کلمه ی کلیدی ثابتی در جاوا وجود نداره.
یک ثابت، همیشه استاتیک و final هست. استاتیک یعنی اینکه اون متغیر یک عضوی از کلاس هستش و final هم، یعنی مقداری که برای این ثابت تعریف و تنظیم شده در طول برنامه غیر قابل تغییر هست. مثالِ موجود در تصویر فوق، یک رشته ی ثابت با نام FIRSTNAME هستش که مقدارش Mahsa هست و چون این متغیر ثابت هست همه ی حروف FIRSTNAME بزرگ هستند.
در این قسمت یکسری از مهمترین قواعد نحوی رو گفتم که باید در موردشون می دونستید تا بتونید کار با جاوارو شروع کنید. البته در طول این دوره آموزشی به کرات با این قواعد و قواعد زیاد دیگه ای کار خواهیم کرد.
اصغر بوشهری
از تلاش شما در ارائه آموزش بی نظیرتون سپاسگذاری می کنم.
امید است در تمام مراحل زندگی موفقیت را با طهاکو تجربه نمایید.
طهاکو
درود؛ کیفیت شایسته فرهیختگی شماست