زمانی که ما یک برنامه جاوا را در نظر میگیریم، میتوان آن را به عنوان مجموعهای از اشیاء تعریف کرد که از طریق فراخوانی متدهای یکدیگر با هم ارتباط برقرار میکنند. اکنون بیایید به طور مختصر نگاهی به مفاهیم کلاس، شیء، متدها و متغیرهای نمونه بیاندازیم.
- شیء (Object) − اشیاء دارای حالات و رفتارها هستند. به عنوان مثال: یک سگ دارای حالات – رنگ، نام، نژاد و همچنین رفتارهایی مانند تکان دادن دم، پارس کردن، خوردن است. یک شیء نمونهای از یک کلاس است.
- کلاس (Class) − یک کلاس میتواند به عنوان یک الگو یا طرحی تعریف شود که رفتار/حالاتی را که اشیاء از نوع خود پشتیبانی میکنند، توصیف میکند.
- متدها (Methods) − یک متد در واقع یک رفتار است. یک کلاس میتواند متدهای زیادی داشته باشد. این متدها جایی هستند که منطق نوشته میشود، دادهها دستکاری میشوند و تمام عملیات انجام میشود.
- متغیرهای نمونه (Instance Variables) − هر شیء مجموعهای منحصر به فرد از متغیرهای نمونه دارد. وضعیت یک شیء توسط مقادیری که به این متغیرهای نمونه اختصاص داده میشود، ایجاد میشود.
اولین برنامه جاوا
بیایید نگاهی به کد سادهای بیاندازیم که کلمات “Hello World” را چاپ میکند.
مثال کامپایلر را باز کنید.
public class MyFirstJavaProgram {
/* This is my first java program.
* This will print 'Hello World' as the output
*/
public static void main(String []args) {
System.out.println("Hello World"); // prints Hello World
}
}
بیایید نگاه کنیم به نحوه ذخیرهسازی فایل، کامپایل و اجرای برنامه. لطفاً مراحل زیر را دنبال کنید:
-
Notepad را باز کرده و کد را مانند بالا وارد کنید.
-
فایل را با نام
MyFirstJavaProgram.javaذخیره کنید. -
یک پنجره Command Prompt باز کنید و به دایرکتوری که فایل را در آن ذخیره کردهاید بروید. فرض میکنیم که در
C:\ذخیره کردهاید. -
عبارت
javac MyFirstJavaProgram.javaرا تایپ کرده و Enter بزنید تا کد شما کامپایل شود. اگر در کد شما هیچ خطایی نباشد، پنجره Command Prompt شما به خط بعدی خواهد رفت (فرض میکنیم که متغیر Path تنظیم شده است). -
حالا، عبارت
java MyFirstJavaProgramرا تایپ کنید تا برنامه شما اجرا شود.
شما قادر خواهید بود عبارت Hello World را در پنجره مشاهده کنید.
خروجی
C:\> javac MyFirstJavaProgram.java
C:\> java MyFirstJavaProgram
Hello World
نحو پایه
در مورد برنامههای جاوا، نکات زیر بسیار مهم است:
حساسیت به حروف بزرگ و کوچک − جاوا حساس به حروف بزرگ و کوچک است، به این معنی که شناسههای Hello و hello در جاوا معانی متفاوتی خواهند داشت.
نام کلاسها − برای تمام نامهای کلاس، اولین حرف باید بزرگ باشد. اگر چندین کلمه برای تشکیل نام کلاس استفاده شود، اولین حرف هر کلمه داخلی باید بزرگ باشد.
مثال − class MyFirstJavaClass
نام متدها − تمام نامهای متد باید با حرف کوچک شروع شوند. اگر چندین کلمه برای تشکیل نام متد استفاده شود، هر کلمه داخلی باید با حرف بزرگ شروع شود.
مثال − public void myMethodName()
نام فایل برنامه − نام فایل برنامه باید دقیقاً با نام کلاس مطابقت داشته باشد.
هنگام ذخیرهسازی فایل، باید آن را با نام کلاس ذخیره کنید (یادتان باشد که جاوا حساس به حروف بزرگ و کوچک است) و پسوند .java را به انتهای نام اضافه کنید (اگر نام فایل و نام کلاس مطابقت نداشته باشد، برنامه شما کامپایل نخواهد شد).
اما لطفاً توجه داشته باشید که اگر کلاس public در فایل وجود نداشته باشد، نام فایل میتواند متفاوت از نام کلاس باشد. همچنین وجود کلاس public در فایل الزامی نیست.
مثال − فرض کنید نام کلاس MyFirstJavaProgram است. در این صورت فایل باید به صورت MyFirstJavaProgram.java ذخیره شود.
public static void main(String args[]) − پردازش برنامه جاوا از متد main() شروع میشود که بخشی ضروری از هر برنامه جاوا است.
شناسههای جاوا
تمام اجزای جاوا نیاز به نام دارند. نامهایی که برای کلاسها، متغیرها و متدها استفاده میشوند، شناسهها نامیده میشوند.
در جاوا، نکات مختلفی وجود دارد که باید در مورد شناسهها به خاطر بسپارید. این نکات به شرح زیر است:
- تمام شناسهها باید با یک حرف (A تا Z یا a تا z)، علامت ارز ($) یا یک زیرخط (_) شروع شوند.
- پس از اولین کاراکتر، شناسهها میتوانند هر ترکیبی از کاراکترها را داشته باشند.
- یک کلمه کلیدی نمیتواند به عنوان شناسه استفاده شود.
- مهمترین نکته این است که شناسهها حساس به حروف بزرگ و کوچک هستند.
مثالهای شناسههای مجاز: age, $salary, _value, __1_value.
مثالهای شناسههای غیرمجاز: 123abc, -salary.
اصلاحکنندههای جاوا
مانند سایر زبانها، امکان تغییر کلاسها، متدها و غیره با استفاده از اصلاحکنندهها وجود دارد. دو دسته از اصلاحکنندهها وجود دارد:
- اصلاحکنندههای دسترسی −
default,public,protected,private - اصلاحکنندههای غیر دسترسی −
final,abstract,strictfp
ما جزئیات بیشتری را در مورد اصلاحکنندهها در بخش بعدی بررسی خواهیم کرد.
متغیرهای جاوا
در جاوا، انواع مختلفی از متغیرها وجود دارد:
- متغیرهای محلی
- متغیرهای کلاس (متغیرهای استاتیک)
- متغیرهای نمونه (متغیرهای غیر استاتیک)
آرایههای جاوا
آرایهها اشیایی هستند که چندین متغیر از یک نوع مشابه را ذخیره میکنند. با این حال، یک آرایه خود یک شیء در حافظه است. ما در فصول بعدی به نحوه اعلام، ساخت و مقداردهی آرایهها خواهیم پرداخت.
ENUMهای جاوا
ENUMها در جاوا 5.0 معرفی شدند. ENUMها یک متغیر را محدود به داشتن یکی از چندین مقدار از پیش تعریف شده میکنند. مقادیر موجود در این فهرست شمارششده به نام enum شناخته میشوند.
با استفاده از enumها میتوان تعداد باگها را در کد خود کاهش داد.
برای مثال، اگر یک برنامه برای یک فروشگاه آبمیوه تازه در نظر بگیریم، میتوان اندازه لیوان را به کوچک، متوسط و بزرگ محدود کرد. این کار باعث میشود که هیچ فردی نتواند اندازهای غیر از کوچک، متوسط یا بزرگ سفارش دهد.
مثال
class FreshJuice {
enum FreshJuiceSize{ SMALL, MEDIUM, LARGE }
FreshJuiceSize size;
}
public class FreshJuiceTest {
public static void main(String args[]) {
FreshJuice juice = new FreshJuice();
juice.size = FreshJuice.FreshJuiceSize.MEDIUM ;
System.out.println("Size: " + juice.size);
}
}
خروجی
مثال بالا نتیجه زیر را تولید خواهد کرد
حجم: MEDIUM
توجه − enumها میتوانند بهطور مستقل یا داخل یک کلاس اعلام شوند. متدها، متغیرها و سازندهها میتوانند داخل enumها نیز تعریف شوند.
کلمات کلیدی جاوا
فهرست زیر کلمات رزرو شده در جاوا را نشان میدهد. این کلمات رزرو شده نمیتوانند بهعنوان نام ثابتها، متغیرها یا هر شناسه دیگری استفاده شوند.
کلمات رزرو شده و توضیحات در جاوا
-
abstract طبق واژهنامه، انتزاع کیفیتی است که با ایدهها به جای رویدادها سر و کار دارد.
-
assert کلمه کلیدی
assertدر جاوا برای تعریف ارزیابیها (assertions) استفاده میشود. ارزیابی یک دستور در جاوا است که صحت هرگونه فرضیاتی که در برنامه انجام شده باشد را تضمین میکند. -
boolean نوع داده
booleanیکی از هشت نوع داده اولیهای است که جاوا از آن پشتیبانی میکند. این نوع داده امکان ایجاد متغیرهایی با مقادیر بولی (trueیاfalse) را فراهم میکند. -
break دستور
breakدر زبان برنامهنویسی جاوا دو کاربرد دارد:- زمانی که دستور
breakدر داخل یک حلقه استفاده میشود، آن حلقه بلافاصله خاتمه مییابد و کنترل برنامه به دستور بعد از حلقه میرود. - میتواند برای خاتمه دادن به یک case در دستور
switchاستفاده شود.
- زمانی که دستور
-
byte نوع داده
byteیکی از هشت نوع داده اولیهای است که جاوا از آن پشتیبانی میکند. این نوع داده امکان ایجاد متغیرهایbyteکه مقادیر بایت را میپذیرند فراهم میآورد. -
case کلمه کلیدی
caseقسمتی از دستورswitchاست که به یک متغیر این امکان را میدهد که برای مقایسه با یک لیست از مقادیر آزمایش شود. -
catch یک استثنا (یا رویداد استثنایی) مشکلی است که در طول اجرای برنامه پیش میآید.
-
char نوع داده
charیکی از هشت نوع داده اولیهای است که جاوا از آن پشتیبانی میکند. -
class جاوا یک زبان شیگرا است. یک کلاس الگو یا طرحی است که رفتار و وضعیت یک شی از نوع خود را توصیف میکند.
-
const کلمه کلیدی
finalبرای تعریف مقادیر ثابت یا متدها/کلاسهای نهایی در جاوا استفاده میشود. -
continue کلمه کلیدی
continueمیتواند در هر ساختار کنترلی حلقهای استفاده شود. -
default کلمه کلیدی
defaultقسمتی از دستورswitchاست که به یک متغیر این امکان را میدهد که برای مقایسه با یک لیست از مقادیر آزمایش شود. -
do حلقه
do...whileمشابه حلقهwhileاست، به جز اینکه حلقهdo...whileتضمین میکند که حداقل یک بار اجرا شود. -
double نوع داده
doubleیکی از هشت نوع داده اولیهای است که جاوا از آن پشتیبانی میکند. -
if دستور
ifمیتواند با یک دستورelseاختیاری همراه باشد که زمانی که عبارت بولی نادرست باشد اجرا میشود. -
enum کلاس
Enumدر جاوا پایه مشترک تمام انواع شمارش در زبان جاوا است. -
extends کلمه کلیدی
extendsبرای وراثت خصوصیات یک کلاس استفاده میشود. این کلمه کلیدی به کلاس اجازه میدهد که ویژگیهای یک کلاس دیگر را به ارث ببرد. -
final کلمه کلیدی
finalبرای تعریف مقادیر ثابت یا متدها/کلاسهای نهایی در جاوا استفاده میشود. -
finally کلمه کلیدی
finallyبرای تعریف یک بلوکfinallyاستفاده میشود. بلوکfinallyپس از بلوکtryیاcatchقرار میگیرد و همیشه اجرا میشود، صرف نظر از اینکه استثنایی رخ داده باشد یا نه. -
float نوع داده
floatیکی از هشت نوع داده اولیهای است که جاوا از آن پشتیبانی میکند. این نوع داده امکان ایجاد متغیرهایfloatکه مقادیر اعشاری را میپذیرند فراهم میآورد. -
for حلقه
forیک ساختار کنترل تکرار است که به شما این امکان را میدهد که حلقهای را برای تعداد خاصی دفعات به طور مؤثر بنویسید. -
goto دستور
gotoدر حال حاضر توسط جاوا پشتیبانی نمیشود. این کلمه کلیدی برای آینده رزرو شده است. بهعنوان جایگزین، جاوا از برچسبها (labels) با دستوراتbreakوcontinueپشتیبانی میکند. -
if یک دستور
ifشامل یک عبارت بولی است که به دنبال آن یک یا چند دستور قرار میگیرد. -
implements معمولاً کلمه کلیدی
implementsبا کلاسها استفاده میشود تا خصوصیات یک اینترفیس را به ارث ببرد. -
import کلمه کلیدی
importبرای وارد کردن پکیجها استفاده میشود. -
instanceof کلمه کلیدی
instanceofیک عملگر است که فقط برای متغیرهای ارجاعی شیء استفاده میشود. -
int نوع داده
intیکی از هشت نوع داده اولیهای است که جاوا از آن پشتیبانی میکند. -
interface یک اینترفیس یک نوع ارجاعی در جاوا است. شبیه به کلاس است و مجموعهای از متدهای انتزاعی میباشد.
-
long نوع داده
longیکی از هشت نوع داده اولیهای است که جاوا از آن پشتیبانی میکند. -
native کلمه کلیدی
nativeبرای تعریف متدهایی استفاده میشود که در خارج از جاوا (معمولاً به زبان C یا C++) پیادهسازی شدهاند. -
new کلمه کلیدی
newبرای ایجاد یک شی جدید از یک کلاس استفاده میشود. -
package پکیجها در جاوا برای جلوگیری از تعارض نامها، کنترل دسترسی، و تسهیل در جستجو و استفاده از کلاسها، اینترفیسها، شمارشها و الحاقات استفاده میشوند.
-
private متدها، متغیرها و سازندگانی که بهصورت
privateاعلام شدهاند فقط میتوانند در داخل کلاس خود دسترسی داشته باشند. -
protected اصلاحکننده دسترسی
protectedنمیتواند برای کلاسها و اینترفیسها اعمال شود. -
public یک کلاس، متد، سازنده، اینترفیس و غیره که بهصورت
publicاعلام شدهاند، از هر کلاس دیگری قابل دسترسی هستند. -
return کلمه کلیدی
returnبرای بازگشت از یک متد استفاده میشود. -
short نوع داده
shortبرای ذخیره اعداد صحیح کوتاه در جاوا استفاده میشود. -
static کلمه کلیدی
staticبرای ایجاد متغیرهایی استفاده میشود که بهصورت مستقل از هرگونه نمونه ساخته شده از کلاس وجود خواهند داشت. -
strictfp کلمه کلیدی
strictfpبرای اعمال دقت ثابت در محاسبات شناور استفاده میشود. -
super کلمه کلیدی
superمشابه با کلمه کلیدیthisاست و به والدین یک کلاس اشاره دارد. -
switch دستور
switchبه شما این امکان را میدهد که یک متغیر را با یک لیست از مقادیر برای برابری آزمایش کنید. -
synchronized کلمه کلیدی
synchronizedبرای همگامسازی دسترسی به متدها در محیطهای چندریسمانی استفاده میشود. -
this کلمه کلیدی
thisبرای شناسایی شیء جاری استفاده میشود. -
throw اگر یک متد استثنای بررسی شده را مدیریت نکند، باید آن را با کلمه کلیدی
throwsاعلام کند. -
transient کلمه کلیدی
transientبرای جلوگیری از سریالسازی یک متغیر استفاده میشود. -
try متدها برای مدیریت استثناها از ترکیب کلمات کلیدی
tryوcatchاستفاده میکنند. -
void کلمه کلیدی
voidبرای تعریف متدهایی که هیچ مقداری باز نمیگردانند استفاده میشود. -
volatile کلمه کلیدی
volatileبرای متغیرهایی استفاده میشود که در محیطهای چندریسمانی تغییر میکنند. -
while دستور حلقه
whileدر زبان برنامهنویسی جاوا به طور مکرر یک دستور هدف را تا زمانی که یک شرط خاص صحیح باشد اجرا میکند.
کامنتها در جاوا
جاوا از کامنتهای تکخطی و چندخطی مشابه C و C++ پشتیبانی میکند. تمامی کاراکترهای موجود در داخل هر کامنت توسط کامپایلر جاوا نادیده گرفته میشوند.
مثال
public class MyFirstJavaProgram {
/* This is my first java program.
* This will print 'Hello World' as the output
* This is an example of multi-line comments.
*/
public static void main(String []args) {
// This is an example of single line comment
/* This is also an example of single line comment. */
System.out.println("Hello World");
}
}
خروجی
Hello World
استفاده از خطوط خالی
یک خط که تنها شامل فضای خالی باشد، ممکن است با یک کامنت همراه باشد، به عنوان یک خط خالی شناخته میشود و جاوا کاملاً آن را نادیده میگیرد.
وراثت در جاوا
کلاسها میتوانند از کلاسهای دیگر مشتق شوند. به طور اساسی، اگر نیاز به ایجاد یک کلاس جدید داشته باشید و کلاسی وجود داشته باشد که بخشی از کدی که به آن نیاز دارید را داشته باشد، میتوان کلاستان را از آن کد موجود مشتق کرد.
وراثت در جاوا به شما این امکان را میدهد که فیلدها و متدهای کلاس موجود را بدون نیاز به نوشتن دوباره کد در کلاس جدید، دوباره استفاده کنید. در این سناریو، کلاس موجود به عنوان کلاس والد (superclass) و کلاس مشتق شده به عنوان کلاس فرزند (subclass) شناخته میشود.
رابطها در زبان جاوا
یک رابط (Interface) میتواند به عنوان یک قرارداد بین اشیاء برای نحوه برقراری ارتباط با یکدیگر تعریف شود. رابطها در مفهوم وراثت نقش حیاتی دارند.
یک رابط متدهایی را تعریف میکند که کلاس مشتق شده (کلاس فرزند) باید از آنها استفاده کند. اما پیادهسازی این متدها به طور کامل به عهده کلاس فرزند است.
چه چیزی در انتظار است؟
بخش بعدی به توضیح در مورد اشیاء و کلاسها در برنامهنویسی جاوا میپردازد. در پایان این بخش، شما قادر خواهید بود تصویری روشن از این که اشیاء چیستند و کلاسها در جاوا چه مفهومی دارند به دست آورید.