زمانی که ما یک برنامه جاوا را در نظر میگیریم، میتوان آن را به عنوان مجموعهای از اشیاء تعریف کرد که از طریق فراخوانی متدهای یکدیگر با هم ارتباط برقرار میکنند. اکنون بیایید به طور مختصر نگاهی به مفاهیم کلاس، شیء، متدها و متغیرهای نمونه بیاندازیم.
- شیء (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) میتواند به عنوان یک قرارداد بین اشیاء برای نحوه برقراری ارتباط با یکدیگر تعریف شود. رابطها در مفهوم وراثت نقش حیاتی دارند.
یک رابط متدهایی را تعریف میکند که کلاس مشتق شده (کلاس فرزند) باید از آنها استفاده کند. اما پیادهسازی این متدها به طور کامل به عهده کلاس فرزند است.
چه چیزی در انتظار است؟
بخش بعدی به توضیح در مورد اشیاء و کلاسها در برنامهنویسی جاوا میپردازد. در پایان این بخش، شما قادر خواهید بود تصویری روشن از این که اشیاء چیستند و کلاسها در جاوا چه مفهومی دارند به دست آورید.