ایجاد یک اپلیکیشن ساده در جاوا
در این مقاله قصد داریم یک اپلیکیشن ساده ی جاوا ایجاد کنیم که متنی را در خروجی نشان می دهد.
در ابتدا، ممکن است حتی ساده ترین اپلیکیشن جاوا، گیج کننده به نظر برسد. اپلیکیشن زیر را در نظر بگیرید. این برنامه در 7 خط نوشته شده است و تنها وظیفه ی آن این است که عبارت "First Java application" را در خروجی چاپ کند:
توضیح دستور تولید کننده ی خروجی در برنامه ی بالا
در این برنامه، عبارت ;("System.out.println("First Java application کار اصلی را انجام می دهد. درست مثل بقیه ی دستورات جاوا، این دستور نیز با بک علامت سمی کالن(;) خاتمه می یابد.
عبارت "First Java application" یک رشته است که از تعدادی کاراکتر تشکیل شده است. این عبارت به طور کامل در خروجی نشان داده می شود. در زبان برنامه نویسی جاوا، تمام رشته ها باید بین علامت های دابل-کوتیشن("") قرار گیرند. در عکس 1.5 توضیحات بیشتری درباره ی دستور مورد نظر داده شده است.
نکات مهم:
نکته1: اکثر دستورات جاوا را می توان با شکستن خط ها، در چند خط نوشت. اما یک رشته(ی لیترال) را نمی توان شکست و در چند خط قرار داد.
نکته2: یک عبارت دستوری، می تواند در چند خط ادامه یابد تا زمانی که به یک سمی کالن ختم شود.
نکته: از نقطه ها در دستور System.out.println برای جدا کردن کلاس ها و اشیاء و متدها استفاده می شود.
رشته ی "First Java application" در بین یک جفت پرانتز قرار گرفته است، بنابراین یک آرگومان محسوب می شود. آرگومان ها همان اطلاعاتی هستند که به یک متد داده می شوند. بعضی از متدها، برای کار کردن نیاز به آرگومان دارند.
نکات مهم:
نکته 1: به هنگام فراخوانی یک متد، باید یک جفت پرانتز در جلوی نام آن متد قرار دهیم.
نکته 2: متد ()println تنها به یک آرگومان نیاز دارد. بعداً در این کتاب، با متدی به نام ()showMessageDialog آشنا خواهید شد که به دو آرگومان نیاز دارد. و یا با متدهایی آشنا خواهید شد که به آرگومان های بیشتری نیاز دارند.
نکته 3: شما می توانید از متد ()println بدون هیچ آرگومانی نیز استفاده کنید. این عمل را می توانید زمانی به کار ببرید که می خواهید یک خط خالی ایجاد شود.
همان طور که در دستور ;("System.out.println("First Java application مشاهده می کنید، دستور ()println یک متد است که عبارت "First Java application" به آن داده شده است. متد ()println خروجی را در یک خط از صفحه نمایش چاپ می کند و به خط بعدی می رود. بنابراین خروجی های بعدی، در یک خط جدید قرار می گیرند.
در دستور ;("System.out.println("First Java application، کلمه ی out، یک شیء است که در کلاس System قرار دارد و به دستگاه استاندارد خروجی، اشاره می کند.
نکته:
شیء out یک نمونه از کلاس PrintStream است که حاوی چندین متد مختلف از جمله متد ()println است.
برنامه نویسان جاوا، برای راحتی کاربران، کلاس های System و PrintStream و شیء out و متد ()println را طراحی کرده اند.
نکته:
متد ()print بسیار شبیه به متد ()println است. هنگام استفاده از متد ()println، پس از اینکه پیام ما چاپ شد، به خط بعدی می رویم. اما اگر از متد ()print استفاده کنیم، به خط بعدی نمی رویم. و در همان خط که خروجی نمایش یافته است، باقی می مانیم.
نکته:
جاوا حساس به حروف بزرگ و کوچک است. بنابراین می توان گفت که کلاس System کاملا با کلاس های SYSTEM یا sYsTeM تفاوت دارد.
بررسی کلاس First که در عکس 1.4 نشان داده شده است
هر چیزی که در داخل یک برنامه ی جاوا قرار داشته باشد، جزئی از یک کلاس است.
عبارت public class First یک کلاس ایجاد می کند که نام آن First است.
قواعد نام گذاری در جاوا
- یک شناسه ی جاوا، باید با یک حرف از الفبای انگلیسی یا یک حرف از الفبای غیر انگلیسی( مثل α یا Ω) یا یک زیر خط(_) یا یک علامت دلار شروع شود.نام کلاس نمی تواند با یک عدد شروع شود.
- یک شناسه ی جاوا تنها می تواند حاوی حروف و اعداد و زیرخط(_) و یا علامت دلار باشد.
نکته:
جاوا بر اساس یونیکد بنا شده است. یونیکد یک سیستم بین المللی ارائه ی کاراکتر می باشد. شما می توانید در ضمیمه ی B، در مورد یونیکد مطالب بیشتری را مشاهده کنید.
- یک شناسه ی جاوا نمی تواند برابر با یک کلمه ی کلیدی همچون public یا class باشد(برای مشاهده ی لیست کلمات کلیدی، جدول 1.1 را مشاهده کنید).
- یک شناسه ی جاوا نمی تواند یکی از مقادیر true یا false یا null باشد. این سه مورد ذکر شده، کلمات کلیدی نیستند و به آنها مقادیر اولیه گفته می شود. اما در جاوا، این کلمات رزرو شده اند و نباید به جای شناسه ها مورد استفاده قرار گیرند.
نکته:
با اینکه کلمات const و goto بعنوان کلمات کلیدی رزرو شده اند، اما در برنامه نویسی جاوا از آنها استفاده نمی شود و تابعی ندارند. این کلمات رزرو شده اند تا توسعه دهندگان جاوا در آینده آنها را ارائه دهند.
نکته:
استفاده از حروف بزرگ در نام کلاس ها، با اینکه ضروری نیست، یک استاندارد است. حتی می توانیم برای خوانایی بهتر، دیگر حروف را نیز برحسب نیاز به صورت بزرگ بنویسیم. در جدول 1.2 می توانید لیست برخی نام های کلاس معتبر را مشاهده کنید.
در جدول 1.3 تعدادی نام برای کلاس ها را مشاهده می کنید. از این نام ها می توان در جاوا استفاده نمود اما خلاف عرف هستند و استفاده از آنها توصیه نمی شود( اما اگر از آنها استفاده شود کلاس مورد نظر کامپایل خواهد شد). همچنین در جدول 1.4 چند مثال از نام کلاس های غیرقانونی را مشاهده می کنید.
جدول 1.2:
توضیحات | نام کلاس |
این نام با یک حرف بزرگ شروع می شود. | Employee |
این نام با یک حرف بزرگ شروع می شود و دارای فاصله نیست و هر کلمه ی آن با حرف بزرگ شروع می شود. |
UnderGradStudent |
این نام با یک حرف بزرگ شروع می شود و دارای فاصله بین کلمات نیست و هر دو کلمه ی آن با حرف بزرگ شروع می شوند. | InventoryItem |
این نام نیز با یک حرف بزرگ شروع می شود و دارای فاصله نیست. | Budget2012 |
نکات مهم:
نکته1: در صورتی که شما قرارداد های ایجاد شده برای جاوا را رعایت کنید، درک برنامه هایی که می نویسید، برای دیگر برنامه نویسان آسان خواهد بود. این کتاب از قراردادهای وضع شده برای جاوا پیروی می کند.
نکته2: به این روشی که در آن ابتدای یک شناسه و دیگر کلمات جدید دنبال آن، با حروف بزرگ نوشته می شود، پوشش پاسکال گفته می شود. (روش شتری نیز نامیده می شود).
جدول 1.3:
نام کلاس | توضیحات |
Undergradstudent | در این نام، کلمات بعدی با حروف بزرگ نوشته نشده اند و خوانایی این نام کم است. |
Inventory_Item | برای مشخص کردن کلمات بعدی، معمولا از زیرخط(_) استفاده نمی شود. |
BUDGET2012 | استفاده از کلمات به طور کامل با حروف بزرگ، مرسوم نیست. |
budget2012 | این رسم نیست که ابتدای کلمه با حرف کوچک شروع شود. |
جدول 1.4:
نام کلاس | توضیحات |
Inventory Item | استفاده از فاصله در تعریف یک نام، غیرقانونی است. |
class | class یک کلمه ی کلیدی رزرو شده است. |
2012Budget | نام کلاس ها نباید با یک عدد شروع شود. |
phone# | استفاده از علامت # در یک نام کلاس ممنوع است. |
در عکس 1.4 و در عکس 1.6 ، به عبارت public class First عنوانِ کلاس گفته می شود.
در داخل این عنوان، از کلمه ی class استفاده شده است و پس از آن کلمه ی First قرار گرفته شده است که نام کلاس را مشخص می کند. کلمه ی رزرو شده ی public سطح دسترسی را مشخص می کند. سطح دسترسی، مشخص می کند که کلاس ایجاد شده، در چه مکانی می تواند مورد دسترسی قرا بگیرد. کلمه ی public دارای بیشترین سطح دسترسی است. برای آموزش کامل سطوح دسترسی، به فصل 3 مراجعه کنید.
پس از اینکه عنوان یک کلاس را نوشتیم، باید محتوای این کلاس را در بین آکولادها قرار دهیم. یعنی باید متدها و متغیرها را در داخل این آکولادها قرار دهیم.
در عکس 1.4 و عکس 1.6 تنها یک متد در بین آکولادهای کلاس First قرار دارد. نام این متد ()main است.
نکته: همان طور که مشاهده می کنید، کلاس First شامل یک متد به نام ()main است. و در داخل متد ()main یک متد به نام ()println وجود دارد.
نحوه ی قرار گیری آکولادها
در یک برنامه ی جاوا، بعد از هر آکولاد باز شده(})، باید یک آکولاد بسته({) وجود داشته باشد. اما برای کامپایلر جاوا تفاوتی ندارد که آکولادهای باز و بسته در کجا قرار گیرند. بعنوان مثال کد زیر دقیقاً مانند کد نشان داده شده در عکس 1.4 عمل می کند. تنها تفاوتی که این کد، محل قرار گیری آکولاد ها است.
برنامه نویسان جاوا، از روش های مختلفی در نحوه ی قرارگیری آکولادها استفاده می کنند. و تمام برنامه هایی که با این روش ها نوشته می شوند به درستی کار می کنند.
درک مفهوم متد ()main در جاوا
درک عنوان متد، درمتد ()main کمی پیچیده است. هنگامی که شما این کتاب را به پایان برسانید، معنا و هدف هریک از آیتم های عنوان متد، برای شما روشن خواهد شد. اما در این قسمت به یک توضیح کوتاه و مختصر بسنده می کنیم.
در عنوان متد، یعنی در عبارت (public static void main(String[] args کلمه ی public مشخص کننده ی سطح دسترسی است. در زبان جاوا، کلمه ی کلیدی static به این معنی است که این متد حتی اگر که هیچ شیء ای از این کلاس وجود نداشته باشد، قابل استفاده است و می تواند مورد دسترسی قرار بگیرد. در عکس 1.7 می توانید قسمت های مختلف متد ()main را مشاهده کنید.
در زبان انگلیسی، کلمه ی void به معنی "خالی" است. هنگامی که ما از کلمه ی کلیدی void در قسمت عنوان از متد ()main استفاده می کنیم، به این معنی نیست که متد ()main خالی است، بلکه بدین معنی است که متد ()main هنگامی که صدا زده شود، هیچ مقداری را برنمی گرداند. در فصل 3، در مورد نحوه ی برگرداندن مقادیر بیشتر توضیح خواهیم داد.
همه ی کلاس ها، شامل متد ()main نیستند. در حقیقت اکثر کلاس ها شامل متد ()main نیستند. اما تمام اپلیکیشن های جاوا باید شامل یک کلاس باشند که حاوی یک متد public به نام ()main باشد. این در حالی است که اکثر اپلیکیشن های جاوا دارای کلاس ها و متدهای دیگری نیز هستند. هنگامی که شما یک اپلیکیشن جاوا را اجرا می کنید، ماشین مجازی جاوا(JVM) همواره ابتدا متد ()main را اجرا می کند.
در عنوان متدی که تعریف کردیم، یعنی (public static void main(String[] args، عبارات قرار گرفته بین پرانتزها (String[] args) درواقع نوع آرگومان را مشخص می کنند. درست مانند رشته ی "First Java application" که به متد ()println انتساب داده شده است. عبارت String یک کلاس از جاوا است که می توان از آن برای نگهداری کاراکترهای رشته ای استفاده نمود.
از متغیر args برای نگهداری رشته ها استفاده می کنیم که ممکن است به تابع ()main ارسال شوند. ( به طور ساده تر می توان گفت که args یک آرگومان است که یک آرایه ی رشته ای می تواند در آن قرار گیرد).
در صورتی که مقادیری بعنوان آرگومان به تابع ()main ارسال شوند، این متد می تواند اعمالی را بر روی آنها انجام دهد. مثلا می تواند آنها را نمایش دهد. اما در عکس 1.4، متد ()main از آرگومان args هیچ استفاده ای نمی کند.اما با این وجود، باز هم شما باید یک آرگومان را در بین پرانتزهای متد ()main قرار دهید.
توجه کنید که نام این آرگومان حتما نباید args باشد، بلکه شما می توانید از هر نام معتبری استفاده کنید. اما استفاده از args مرسوم است.
نکات مهم:
نکته: در این کتاب، ما هیچ آرگومانی را به متد ()main ارسال نمی کنیم اما در برنامه های خودتان، می توانید این کار را انجام دهید. با اینکه هیچ آرگومانی (فعلا) به متد ()main پاس داده نمی شود اما همچنان این متد باید شامل عبارت []String و یک متغیر همچون args باشد که در داخل پرانتزهای آن قرار گیرند.
نکته: هنگامی که از کلاس String در عنوان متد ()main استفاده می کنید، براکت های خالی(یعنی [])، به معنی آرایه ی خالی هستند.
کلاً عبارت String[] args یعنی، در نظر گرفتن یک متغیر به نام args که یک آرایه ی رشته ای است .
در فصل های 7 و 8 و 9 در مورد کلاس String و آرایه ها مطالب بیشتری را خواهید آموخت.
اپلیکیشن ساده ی نشان داده شده در عکس 1.4 ( در ابتدای این مقاله) قسمت های مختلفی دارد که می توانید آنها را به خاطر بسپارید، اما فعلاً برای ساده تر شدن کار، می توانید کد جاوای نشان داده شده در عکس 1.8 را بعنوان نمونه به خاطر بسپارید. در این کد، به جای عبارت AnyClassName می توانید نام کلاس دلخواه خود را قرار دهید و به جای عبارت /******/ می توانید دستوراتی که می خواهید اجرا شوند را قرار دهید.
آزمون(گزینه ی اشتباه را مشخص کنید):
در میان سه عبارت زیر، گزینه ی اشتباه را پیدا کنید.
در هنگام بررسی یک اپلیکیشن جاوا، که یک خروجی را ایجاد می کند:
1. در عنوان متد (public static void main(String[] args کلمه ی public یک تعیین کننده ی دسترسی است.
2. در عنوان متد (public static void main(String[] args کلمه ی static به این معنی است که این متد قابل دسترسی و استفاده است حتی اگر که هیچ شیء ای از این کلاس وجود نداشته باشد.
3. در عنوان متد (public static void main(String[] args کلمه ی void به این معنی است که متد ()main یک متد خالی(تهی) است.
پاسخ: گزینه ی 3 اشتباه است. در عنوان متد (public static void main(String[] args کلمه ی void به این معنی است که متد ()main هنگامی که فراخوانی شود، هیچ مقداری را برنمی گرداند.
- نوشته شده توسط احسان عباسی
- بازدید: 8095