آموزش برنامه نویسی جاوا: مفاهیم پایه در زبان جاوا

در این جلسه از آموزش می‌خواهیم به نکات کلیدی در جاوا بپردازیم و از هرکدام از آن‌ها مثال‌هایی را با هم کار کنیم. در ابتدا با متغیر‌های سراسری و محلی آشنا می‌شویم. بعد با عملگر ? آشنا می‌شویم که به کد نویسی کمتر کمک می‌کند. همچنین یاد می‌گیریم که چگونه برای ساختار‌های تکرار خود Label‌هایی را در نظر بگیریم و از آن‌ها در برنامه استفاده کنیم. همچنین با کلمه‌های کلیدی continue و break آشنا می‌شویم و در آخر هم بازی ریختن تاس را با استفاده از متد ()random شبیه سازی می‌کنیم.

سرفصل مطالب

  1. متغیر‌های سراسری و محلی (Global And Local Variables)
  2. عملگر ?
  3. استفاده از برچسب برای حلقه‌های تکرار
  4. کنترل اجرای حلقه‌ها با استفاده از continue و break
  5. استفاده از متد ()random از کلاس Math
  6. Linkedin

متغیر‌های سراسری و محلی (Global And Local Variables)

همانطور که در آموزش‌های قبلی دیدیم، می‌توانیم متغیر‌هایی را در قسمت‌های مختلف برنامه‌ی خود تعریف کنیم. اما این متغیر‌هایی که تعریف می‌کنیم، فقط در قسمت‌های خاصی از برنامه قابل دستیابی و استفاده هستند. به آن محدوده‌ای که یک متغیر در آن قابل دستیابی است و ما می‌توانیم به آن متغیر دسترسی پیدا کنیم و از داده‌ی ذخیره شده در آن استفاده کنیم یا داده‌ی آن را تغییر دهیم، محدوده‌ی قابل مشاهده و یا Scope آن متغیر گفته می‌شود. نحوه‌ی تعریف کردن متغیر‌ها به دو صورت است. یا آن‌ها را به صورت سراسری (Global) تعریف می‌کنیم یا به صورت محلی (Local).

نکته‌ی مهمی که قبلا هم به آن اشاره شد این است که هر کلاس و متد دارای یک بدنه است که با استفاده از علامت‌های آکولاد باز } و آکولاد بسته { مشخص می‌شود. این آکولاد‌های باز و بسته محدوده‌ای را برای یک متد و یا یک کلاس مشخص می‌کنند که به آن بلوک (بلاک) آن متد یا کلاس گفته می‌شود. شاید سوالی برای شما پیش بیاید که منظور از محدوده چیست؟ فرض کنید مثلا ما یک متغیر از نوع عدد صحیح در بلاک یک متد تعریف کرده‌ایم. بنابراین آن متغیر فقط در همان بلاک متد قابل استفاده است و قبل و بعد از آن متد به هیچ وجه قابل استفاده نیست. به مثال زیر توجه کنید:

public class MainClass {

	// main method
	public static void main(String[] args) {

	}

	// first method
	static void first() {
		int number = 0;
		System.out.println(number);
	}

	// second method
	static void second() {
		System.out.println(number);
	}

}

همانطور که در کد بالا مشاهده می‌کنید در داخل بلوک کلاس MainClass سه متد وجود دارد. اولین متد، متد ()main که متد اصلی برنامه است. دومین متد، متدی است با نام first و سومین متد، متدی است با نام second. (در اینجا ما کاری به متد اصلی نداریم).

ابتدا در بلوک متد first متغیری از نوع عدد صحیح با نام number تعریف کرده‌ایم و سپس در خط بعد مقدار آن را در خروجی استاندارد نمایش داده‌ایم. اما ما خواستیم مقدار متغیر number را نیز از طریق متد second هم نمایش دهیم. اما اگر این برنامه را در یک IDE بنویسید، زیر متغیر number در متد second خطی قرمز می‌کشد و برنامه اجرا نمی‌شود. برنامه با خطای کامپایل مواجه شده است. علت چیست؟ علت این است که متغیر number به صورت لوکال (Local) یا محلی تعریف شده است. بنابراین پس از اجرای بلوک مربوط به متد first، متغیر number توسط JVM به صورت اتوماتیک از حافظه پاک می‌شود و دیگر همچین متغیری وجود ندارد که ما بخواهیم از آن استفاده کنیم. برای همین هم است که در متد second از number ایراد می‌گیرد. زیرا number یک چیز تعریف نشده است و جاوا آن را نمی‌شناسد.

نکته‌ی دیگری که باید به آن توجه کنید این است که ما وقتی یک متغیر را تعریف می‌کنیم، آن متغیر از آن خطی که تعریف شده به بعد قابل دسترسی است. به کد زیر توجه کنید:

public class MainClass {

	// main method
	public static void main(String[] args) {

	}

	// third method
	static void third() {
		System.out.println(number);
	}

	// first method
	static void first() {
		int number = 0;
		System.out.println(number);
	}

	// second method
	static void second() {
		System.out.println(number);
	}

}

ما در ادامه‌ی کد قبلی، متدی با نام third را قبل از متد first تعریف کرده‌ایم و باز خواسته‌ایم از متغیر number استفاده کنیم. اما باز هم با ارور مواجه می‌شویم.

توجه داشته باشید اگر در داخل یک بلاک، بلاکی دیگر تعریف کنیم، در داخل بلاک دوم (زیر بلاک) می‌توانیم به متغیر‌های بلاک اول دسترسی داشته باشیم. به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {

		for (int i = 0; i < 10; i++) {
			int k = 0;
			for (int j = 0; j < 10; j++) {
				System.out.println(k);
			}
		}
	}

}

 در کد بالا ما یک حلقه‌ی for ایجاد کرده‌ایم که در داخل بلاک حلقه‌ی اولی (حلقه‌ی خارجی) یک متغیر با نام k تعریف کرده‌ایم. و سپس یک حلقه‌ی for دیگر داخل حلقه‌ی اول تعریف کرده‌ایم (حلقه‌های تو در تو) و در داخل بلاک حلقه‌ی دوم از متغیری استفاده کرده‌ایم که در بلوک حلقه‌ی اول تعریف شده است (متغیر k). ما از برنامه هیچ اروری دریافت نمی‌کنیم و برنامه کامپایل و اجرا می‌شود. اما متغیر j در داخل بدنه‌ی حلقه‌ی اولی قابل استفاده نیست.

حالت دومی که ما می‌توانیم یک متغیر را تعریف کنیم، به صورت سراسری، عمومی و یا Global است که در محدوده‌ی یک کلاس تعریف می‌شود. به کد زیر توجه کنید:

public class MainClass {

	int number = 0;

	// main method
	public static void main(String[] args) {

	}

	// third method
	void third() {
		System.out.println(number);
	}

	// first method
	void first() {
		int number = 0;
		System.out.println(number);
	}

	// second method
	void second() {
		System.out.println(number);
	}

}

کد قبلی را کمی تغییر داده‌ایم. این‌بار متغیر number را در محدوده‌ی کلاس تعریف کرده‌ایم. یعنی متغیر number به صورت عمومی، سراسری و یا Global تعریف شده است. (متغیر number قبل از متد ()main تعریف شده است). بنابراین ما می‌توانیم آن را در داخل محدوده‌ی کلاس خود استفاده کنیم. در واقع متد‌های main, first, second, third در داخل بلاک کلاس قرار دارند و می‌توانند از متغیر‌هایی که در داخل کلاس تعریف می‌شوند استفاده کنند.

نکته: به متغیر‌هایی که داخل بدنه‌ی کلاس و خارج از تمام متد‌ها تعریف می‌شوند، Property‌های یک کلاس و یا فیلد‌های یک کلاس گفته می‌شود. در مورد این موضوع در مبحث شی گرایی مفصلا صحبت می‌شود.

عملگر ?

در آموزش‌های قبلی ما با ساختار شرطی if...else آشنا شدیم و مثال‌هایی را کار کردیم. به عنوان مثال یک شرط را بررسی می‌کردیم و اگر آن شرط برقرار بود مقدار متغیری از نوع boolean را true و اگر شرط برقرار نبود مقدار متغیر را false در نظر می‌گرفتیم. در جاوا روش دیگری وجود دارد که ما بجای استفاده از ساختار if...else، از عملگر ? استفاده و یک شرط را بررسی می‌کنیم. شکل کلی استفاده از این عملگر به صورت زیر است:

variable = condition?expresion1:expresion2

کد بالا به این صورت است که اگر حاصل ارزیابی شرط (condition) مقدار true داشته باشد، expresion1 اجرا می‌شود، در غیر این صورت expresion2 اجرا می‌شود و نتیجه به variable نسبت داده می‌شود. به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {
		int num = 10;
		boolean b = false;

		b = num <= 10 ? true : false;

		System.out.println(b);
	}

}

 در کد بالا ما ابتدا یک متغیر از نوع عدد صحیح تعریف کرده‌ایم. و همچنین یک متغیر دیگر از نوع boolean که مقدار پیش فرض آن false است. حالا می‌خواهیم متغیر b را مقدار دهی کنیم. به این صورت است که ابتدا متغیر b را می‌نویسیم و سپس یک علامت مساوی (انتساب) قرار می‌دهیم. بعد می‌آییم یک شرطی را بررسی می‌کنیم. شرط این است که اگر مقدار متغیر num کوچکتر و یا مساوی 10 باشد، مقدار بعد از عملگر ? به متغیر b نسبت داده شود. در غیر این صورت مقدار بعد از دو نقطه (:) به متغیر b نسبت داده شود. در بالا با توجه به اینکه مقدار متغیر num برابر با 10 است، بنابراین شرط ما برقرار است و مقدار true به متغیر b نسبت داده می‌شود. دو نقطه (:) نقش else در ساختار if...else را دارد.

استفاده از برچسب برای حلقه‌های تکرار

در جاوا امکانی وجود دارد که ما می‌توانیم برای حلقه‌های خود یک برچسب (Label) یا اصطلاحا نامی را در نظر بگیریم. به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {

		outer: for (int i = 0; i < 10; i++) {

			inner: for (int j = 0; j < 10; j++) {

			}
		}
	}

}

من ابتدا یک حلقه‌ی for ایجاد کرده‌ام و سپس در داخل حلقه‌ی for، یک حلقه‌ی for دیگری ایجاد کرده‌ام. همانطور که قبلا هم اشاره کردیم به این مدل حلقه‌ها، حلقه‌های تو در تو (Nested Loops)  گفته می‌شود. همانطور که مشاهده می‌کنید من برای حلقه‌ی خارجی نام outer و برای حلقه‌ی داخلی نام inner را در نظر گرفته‌ام. (برای نوشتن برچسب فقط کافی است قبل از ایجاد حلقه یک نامی را نوشته و سپس دو نقطه قرار دهیم و بعد حلقه‌ی خود را بنویسیم). توجه داشته باشید که نوشتن برچسب برای حلقه‌ها، برای خوانایی برنامه نیست. یعنی برای این نیست که ما (برنامه نویس) راحت‌تر تشخیص دهیم که کدام حلقه داخلی و کدام یک خارجی است (البته می‌توان برای این هم استفاده کرد). اما در اصل کاربرد دیگری دارد که در ادامه به آن اشاره می‌کنیم.

کنترل اجرای حلقه‌ها با استفاده از continue و break

در این آموزش ما با ساختار switch آشنا شدیم و کاربرد کلمه‌ی کلیدی break را نیز فهمیدیم. نوشتن break باعث می‌شد که برنامه از ساختار switch خارج شود و دیگر ادامه‌ی آن را اجرا نکند. اما break فقط برای ساختار switch نیست و در جاهای دیگر برنامه هم استفاده می‌شود. به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {
		int counter = 0;
		while(counter <= 10) {
			System.out.println("Num[" + counter + "]: " + counter);
			counter++;

			if (counter == 5) {
				System.out.println("Break");
				break;
			}
		}
	}

}

 برنامه‌ی بالا به این صورت است که حلقه‌ی while تا زمانی که متغیر counter برابر با 10 نشده است ادامه پیدا می‌کند و مقادیر متغیر counter را چاپ می‌کند. اما در داخل بلوک while یک شرطی قرار داده شده است و آن این است که اگر مقدار counter برابر با 5 شد، ابتدا پیغام break را چاپ کند و سپس از حلقه خارج شود. اگر برنامه‌ی فوق را به همین شکلی که در بالا نوشته شده است اجرا کنید، خروجی برنامه تا عدد 4 بیشتر نیست و در آخر هم عبارت Break چاپ می‌شود. خروجی برنامه را در زیر مشاهه می‌کنید:

Num[0]: 0
Num[1]: 1
Num[2]: 2
Num[3]: 3
Num[4]: 4
Break

اما اگر تغییراتی در ساختار if ایجاد کنیم، مثلا متغیر counter را برابر با عدد 15 بجای 5 قرار دهیم، دیگر break اجرا نمی‌شود و در خروجی برنامه اعداد یک تا 10 چاپ می‌شود و عبارت Break هم چاپ نمی‌شود. توجه داشته باشید که بعد از دستور break اگر چیز دیگری بنویسید با خطای کامپایل مواجه می‌شوید و برنامه کامپایل نمی‌شود. در ادامه می‌خواهیم برنامه‌ای بنویسیم که کاربرد continue را آموزش دهیم.

continue به معنی ادامه دادن است و کاربرد آن در جاوا هم دقیقا به همین مفهوم است. به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {
		for (int i = 0; i <= 10; i++) {
			System.out.println("NUM[" + i + "]: " + i);
		}
	}

}

 این کد دقیقا کدی است که در قسمت قبل از آن استفاده کردیم. (البته این‌بار از ساختار for استفاده کرده‌ایم). در زیر خروجی برنامه را مشاهده کنید:

NUM[0]: 0
NUM[1]: 1
NUM[2]: 2
NUM[3]: 3
NUM[4]: 4
NUM[5]: 5
NUM[6]: 6
NUM[7]: 7
NUM[8]: 8
NUM[9]: 9
NUM[10]: 10

 همانطور که مشاهده می‌کنید اعداد 0 تا 10 به درستی نمایش داده شده است. حالا می‌خواهیم برنامه را طوری تغییر دهیم که وقتی شمارنده‌ی برنامه به عدد 5 رسید، عملیاتی را انجام ندهد و دوباره به بررسی شرط حلقه (ابتدای حلقه) برگردد. به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {		
		for (int i = 0; i <= 10; i++) {
			if (i == 5)
				continue;

			System.out.println("NUM[" + i + "]: " + i);
		}
	}

}

 همانطور که مشاهده می‌کنید ما با ساختار if شرطی را بررسی کردیم که اگر شمارنده‌ی حلقه برابر با عدد 5 شد، ادامه‌ی حلقه اجرا نشود و به ابتدای حلقه بازگردد. خروجی اجرای برنامه‌ی فوق را در زیر با دقت نگاه کنید:

NUM[0]: 0
NUM[1]: 1
NUM[2]: 2
NUM[3]: 3
NUM[4]: 4
NUM[6]: 6
NUM[7]: 7
NUM[8]: 8
NUM[9]: 9
NUM[10]: 10

همانطور که مشاهده می‌کنید عدد پنج در خروجی چاپ نشده است. زیرا ما شرطی را در برنامه قرار دادیم که وقتی که شمارنده‌ی برنامه برابر 5 شد حلقه ادامه پیدا کند (یعنی کد‌های بعد از  continue اجرا نشود و به سراغ ابتدای حلقه برود). خب وقتی برنامه به سراغ ابتدای حلقه می‌رود، مسلما به شمارنده‌ی برنامه یک واحد اضافه می‌شود. بنابراین عدد 5 چاپ نمی‌شود.

حالا می‌خواهیم برگردیم به کاربرد برچسب‌ها در برنامه. ابتدا به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {

		outer: for (int i = 0; i < 10; i++) {

			inner: for (int j = 0; j < 10; j++) {
				System.out.println("Inner: " + j);

				if (i == 5) {
					break;
				}
			}
	System.out.println("Outer: " + i);
		}
	}

}

ما اصلا به خروجی برنامه کاری نداریم. در بالا یک حلقه‌ی تو در تو ایجاد کرده‌ایم و برای حلقه‌ی داخلی یک شرطی قرار داده‌ایم تا دستور break اجرا شود. در اینجا زمانی که شرط ساختار if برقرار باشد، دستور break به طور پیش فرض برایحلقه‌ی داخلی اجرا می‌شود. اما فرض کنید ما می‌خواهیم برنامه‌ای بنویسیم که دستور break را از داخل حلقه‌ی داخلی، برای حلقه‌ی خارجی اجرا کنیم. در اینجاست که کاربرد برچسب‌ها به چشم می‌آید. در کد بالا اگر بخواهیم حلقه‌ی خارجی را break کنیم باید کد را به صورت زیر تغییر دهیم:

public class MainClass {

	public static void main(String[] args) {

		outer: for (int i = 0; i < 10; i++) {

			inner: for (int j = 0; j < 10; j++) {
				System.out.println("Inner: " + j);

				if (i == 5) {
					break outer;
				}
			}
	System.out.println("Outer: " + i);
		}
	}

}

همانطور که مشاهده می‌کنید کلمه‌ی کلیدی break را نوشته و سپس در جلوی آن نام برچسب حلقه‌ی مورد نظر را نوشته‌ایم. حالا اگر برنامه را اجرا کنیم و اجرای برنامه به ساختار if برسد و شرط برقرار باشد، break برای حلقه‌ی خارجی اجرا می‌شود.

استفاده از متد ()random از کلاس Math

 ()random یکی از متد‌های کلاس Math است که با استفاده از آن می‌توانیم یک عدد تصادفی اعشاری تولید کنیم. عدد تصادفی‌ای که این متد تولید می‌کند، یک عدد بین صفر و یک است که شامل صفر می‌شود ولی شامل یک نمی‌شود. به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {

		double d = Math.random();

		System.out.println(d);
	}

}

در کد بالا با استفاده از متد ()random یک عدد اعشاری تصادفی ایجاد و در داخل متغیر d ذخیره کرده‌ایم. خروجی برنامه‌ی بالا به صورت زیر است:

0.7197274320722393

برنامه را هر بار که اجرا کنید خروجی‌های متفاوتی را مشاهده می‌کنید. اما عدد تولید شده بین صفر و یک است.

حالا می‌خواهیم یکی از مباحث جذاب برنامه نویسی کاربردی یعنی شبیه سازی بازی ریختن تاس را مورد بررسی قرار دهیم. این برنامه را به شکل‌های مختلف می‌توان پیاده‌سازی کرد. تاس 6 وجه دارد که با ریختن آن یکی از اعداد 1 تا 6 ظاهر می‌شود. نکته‌ی اول این است که اعداد تاس صحیح هستند، در صورتی که اعداد تولید شده توسط متد ()random اعشاری است. پس ابتدا باید عمل Casting را انجام دهیم تا عدد اعشاری را به عدد صحیح تبدیل کنیم. به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {

		double d = Math.random();
		int i = (int) d;

		System.out.println(i);
	}

}

اگر برنامه‌ی بالا را اجرا کنید به جز صفر عدد دیگری را در خروجی مشاهده نمی‌کنید. زیرا همانطور که گفته شد متد ()random عددی اعشاری بین صفر و یک تولید می‌کند که عدد شامل صفر است اما شامل یک نیست. بنابراین قسمت صحیح عدد که صفر است اصلا تغییر نمی‌کند و با هر بار اجرای برنامه فقط قسمت اعشاری آن تغییر می‌کند. حالا ما در کد بالا با کست کردن قسمت اعشاری عدد را از دست داده‌ایم. بنابراین به جز صفر عدد دیگری نمی‌بینیم. حالا برای اینکه عدد تصادفی را به محدوده‌ی مورد نظر خود ببریم (یک عدد بین 0 تا 6) کافی است عدد بدست آمده از متد ()random را در 6 ضرب کنیم تا اعدادی در بازه‌ی 0 تا 6 تولید شود. به شکل زیر:

public class MainClass {

	public static void main(String[] args) {

		double d = Math.random() * 6;
		int i = (int) d;

		System.out.println(i);
	}

}

حالا اگر برنامه را اجرا کنیم عدد بدست آمده، عددی است بین صفر تا 6 که شامل صفر می‌شود اما شامل 6 نمی‌شود. اما از آن‌جا که در تاس عدد صفر وجود ندارد و عدد 6 وجود دارد، بنابراین باید برنامه را طوری تغییر دهیم که عدد‌های تولید شده بین 1 تا 7 باشد. که شامل عدد 1 باشد اما شامل عدد 7 نباشد. راه حل این کار بسیار ساده است. فقط کافی است حاصل عبارت فوق را یک واحد افزایش دهیم. به کد زیر توجه کنید:

public class MainClass {

	public static void main(String[] args) {

		double d = Math.random() * 6 + 1;
		int i = (int) d;

		System.out.println(i);
	}

}

حالا با هر بار اجرای برنامه‌ی فوق، همانند این است که شما یک تاس را ریخته‌اید تا یک عدد مشاهده شود که این عدد شامل عدد‌های 1 تا 6 می‌شود.

نکته: می توان برای تولید اعداد تصادفی از کلاس Random که در پکیج java.util است استفاده کرد و بعد با استفاده از متد‌های آن مانند ()nextInt و ... اعداد تصادفی تولید کرد. اما اگر بخواهیم از این روش استفاده کنیم باید از روی کلاس Random یک شی ایجاد کنیم و به دلیل اینکه هنوز به مبحث شی گرایی نرسیده‌ایم، آن را توضیح نمی‌دهیم.

Linkedin

دوره‌ی آموزش زبان برنامه نویسی جاوا که اینجا منتشر می‌شود در ابتدای راه است و هنوز مطالب بسیار زیادی است که گفته نشده است. تا این آموزش ما تقریبا 95 درصد مطالب پایه‌ی جاوا را آموزش داده‌ایم (شامل مفهوم متغیر، ساختار‌های تکرار و شرطی و ...) و از یک الی دو آموزش بعدی به سراغ مفاهیم پیشرفته‌تر جاوا مثل برنامه نویسی شی گرا، آشنایی با سیستم فایل، ترد‌ها، ارتباط با پایگاه داده، طراحی رابط گرافیکی و ... می‌رویم. بنابراین ما می‌خواهیم این دوره‌ی آموزشی را به بهترین شکل ممکن پیش ببریم و برای این کار، به پیشنهادات و انتقادات شما کاربران عزیز نیازمند هستیم. اینکه آموزش‌ها را چگونه در آینده ادامه دهیم. آیا به همین شکل متنی خوب است و یا اینکه آموزش‌های ویدیویی بهتر است؟ لطفا تمام جوانب را در نظر بگیرید. به عنوان مثال اگر آموزش به صورت ویدیویی منتشر شود حجم فایل آموزش‌ها به شدت افزایش پیدا می‌کند و ممکن است در دانلود آن با مشکل رو به رو شوید.

راه اندازی اکلیپس در جاوا

در جلسه‌ی قبل IDE محبوب اکلیپس را دانلود کردیم. در این جلسه می‌خواهیم نحوه‌ی استفاده از این IDE را آموزش دهیم. بنابراین یاد می‌گیریم که چطور یک پروژه‌ی جاوایی در اکلیپس ایجاد کنیم و همچنین با نحوه‌ی ساختن کلاس آشنا می‌شویم. در این جلسه دقیقا کار‌هایی را که در قسمت آموزش برنامه نویسی جاوا: Hello World به صورت دستی انجام دادیم، توسط اکلیپس انجام می‌دهیم تا شما در همین ابتدای کار به ضرورت وجود IDE ها در برنامه نویسی پی ببرید.

 بعد از اینکه دانلود برنامه‌ی اکلیپس به پایان رسید، ابتدا باید فایل را از حالت فشرده خارج کنید. برای این کار می‌توان از اپلیکیشن‌هایی که در این زمینه تولید شده‌اند استفاده کرد یا می‌توان از ابزار‌های خوده سیستم عامل استفاده کرد. بنده از اپلیکیشن WinRAR برای این کار استفاده می‌کنم. بهتر است که فایل اکلیپس را در محلی از هارد دیسک قرار دهیم که دسترسی به آن آسان باشد. Desktop را به شما پیشنهاد می‌کنم. بعد از اینکه فایل اکلیپس را به دسکتاپ انتقال دادیم، بر روی فایل کلیک راست کرده و گزینه‌ی Extract Here را انتخاب می‌کنیم تا در همان دسکتاپ از حالت فشرده خارج شود. (تصویر زیر):

01useeclipse01 873d1

بعد از اینکه فایل ZIP را از حالت فشرده خارج کردید، فایلی ایجاد می‌شود با نام eclipse. وارد این فایل شوید. برنامه‌‌ی اکلیپس نیازی به نصب ندارد و برای اجرا، شما باید فایل eclipse.exe را اجرا کنید. (در تصویر زیر با یک بیضی سبز رنگ مشخص شده است):

01useeclipse02 0eaae

بعد از اینکه بر روی فایل اجرایی اکلیپس کلیک کردید، با اولین پنجره‌ای که مواجه می‌شوید، پنجره‌ی زیر است.

01useeclipse03 97ece

این پنجره Workspace Launcher نام دارد. همانطور که از نامش پیداست، مسیره ذخیره‌سازی پروژه‌هایی که ما ایجاد می‌کنیم را در هارد دیسک مشخص می‌کند. بنابراین بهتر است که مسیر Workspace را همان دسکتاپ قرار دهیم. اما قبل از مشخص کردن مسیر، ابتدا در دسکتاپ فولدری با نام workspace ایجاد کنید و سپس با استفاده از دکمه‌ی Browse مسیر workspace در دسکتاپ را انتخاب کنید. اما قبل از OK کردن، به CheckBox (چک باکس) که در تصویر بالا با یک فلش قرمز رنگ مشخص شده است توجه کنید. اگر این گزینه فعال نباشد، با هر بار بستن اکلیپس و اجرای مجدد آن، این پنجره نمایش داده می‌شود و از شما درخواست مجدد مشخص کردن Workspace را می‌کند. بنابراین، این گزینه را انتخاب کنید و بعد بر روی دکمه‌ی OK کلیک کنید تا برنامه اکلیپس اجرا شود. (بعد از اجرا با تصویر زیر مواجه می‌شوید):

01useeclipse04 a2881

همانطور که مشاهده می‌کنید اکلیپس به شما خوش آمد می‌گوید. با این صفحه کاری نداریم. بنابراین همانطور که در گوشه بالا، سمت راست تصویر با یک فلش سبز رنگ مشخص شده است، بر روی دکمه‌ی Worckbench کلیک کنید تا وارد صفحه‌ی اصلی برنامه شوید. (تصویر زیر):

01useeclipse05 f8517

حالا وقت آن است که اولین پروژه‌ی جاوایی خودمان را ایجاد کنیم. برای ساختن پروژه، ابتدا از منوی File گزینه‌ی New را انتخاب کنید و بعد اولین گزینه، یعنی Java Project را انتخاب کنید. (تصویر زیر):

01useeclipse06 c2b92

بعد از انتخاب گزینه Java Project، با پنجره‌ی زیر مواجه می‌شوید:

01useeclipse07 abd94

همانطور که در تصویر فوق مشاهده می‌کنید، پنجره‌ای برای ساختن پروژه ظاهر شده است. ابتدا یک نام برای پروژه‌ی خود انتخاب می‌کنیم. ما در این آموزش نام: FirstJavaProgrm را نوشته‌ایم. به بقیه‌ی گزینه‌های این صفحه کاری نداشته باشید. بنابراین بر روی دکمه‌ی Finish کلیک کنید. بعد از ساخته شدن پروژه، باید یک کلاس بسازیم.

نکته: در برنامه‌های بزرگ جاوا، ممکن است بیش از هزار کلاس وجود داشته باشد. اما این نکته را به خاطر بسپارید که هر برنامه‌ی جاوا کم کم یک کلاس و یک مِتُد دارد.
در مورد کلاس‌ها و متدها در آموزش‌های مربوط به فصل شی گرایی به طور مفصل صحبت خواهیم کرد و کاربرد اصلی آن‌ها را یاد خواهیم گرفت.
 برای ساختن کلاس ابتدا پروژه‌ی خودتان را انتخاب کنید و بعد کلیک راست کنید. منویی باز می‌شود که به آن منوی پاپ آپ (Pop-up) گفته می‌شود. اولین گزینه از این منو که New است را انتخاب کنید و بعد گزینه Class را انتخاب کنید. (تصویر زیر):
01useeclipse08 4c22d
درضمن، در بالای همین عکس، قسمتی که با یک فلش قرمز رنگ مشخص شده است را Package Explorer می نامند. تمام پروژه‌هایی که ما ایجاد می‌کنیم در این قسمت (Package Explorer) قرار می‌گیرند.
بعد از کلیک کردن بر روی دکمه‌ی Class، با پنجره‌ی زیر مواجه می‌شویم:
01useeclipse09 0c8f1
در مورد قسمت‌های مشخص شده در تصویر بالا کمی توضیح می‌دهم:
 بیضی سبز رنگ اولی مربوط به پکیج است. این که پکیج چیست و چه کاربردی دارد، در آموزش‌های بعدی در مورد آن صحبت می‌کنیم. بنابراین در این آموزش برای پکیج چیزی نمی‌نویسیم.
قسمت بعدی که Name است، باید نامی برای کلاس خودمان انتخاب کنیم. نامی که برای کلاسمان انتخاب می‌کنیم بسیار مهم است. باید نامی انتخاب کنیم که نشان دهنده‌ی کاری باشد که آن کلاس قرار است انجام بدهد. همانطور که در آموزش قبلی گفته شد، هر برنامه‌ی جاوا دارای یک متد اصلی به نام متد main است که نقطه شروع هر برنامه‌ی جاوا است. بنابراین چون در این کلاس متد main را قرار است پیاده‌سازی کنیم، کلاسمان، کلاس اصلی است. بنابراین نامی که برای کلاس انتخاب می‌کنیم، MainClass است.
آخرین قسمت که با یک مستطیل قرمز رنگ مشخص شده است، یک چک باکس دارد. که اگر این چک باکس را انتخاب کنیم، اکلیپس به صورت خودکار متد main را در کلاس ما پیاده‌سازی می‌کند و دیگر نیازی نیست که ما به صورت دستی متد main را خودمان بنویسیم و این یکی از مزایای IDE ها است. چون IDE زحمت نوشتن کد را به گردن می‌گیرد و کار ما را به عنوان برنامه نویس راحت تر می‌کند. درضمن IDE ها در نوشتن کدها به هیچ عنوان اشتباه نمی‌کنند. بنابراین خیال ما از درست نوشته شدن کدها راحت است. بنابراین، این گزینه را انتخاب کنید و بعد بر روی دکمه‌ی Finish کلیک کنید.
 
نکته: در مورد انتخاب نام برای متغیرها، متدها، پکیج‌ها و کلاس ها نکاتی هست که در هر آموزش مربوطه توضیح داده می‌شود. در این آموزش در مورد نام گذاری کلاس‌ها توضیح می‌دهیم. البته یک سری قوانین کلی در جاوا برای نام گذاری وجود دارد و شامل همه‌ی موارد می‌شود. اما برای نام گذاری بخش‌های مختلف جاوا تفاوت‌های کوچکی هست که ما در هر مبحث به صورت جداگانه به آن ها اشاره می‌کنیم. نکته‌ای که باید بسیار به آن توجه کنید این است که نام کلاس باید با حرف بزرگ انگلیسی شروع شود. البته اگر با حرف کوچک هم شروع شود مشکلی نیست. اما یک قانون نانوشته در بین برنامه نویسان است که نام تمام کلاس‌های خود را با حرف بزرگ شروع می‌کنند و اگر نام کلاس از دو بخش تشکیل شده بود، مثلا در همین آموزش نام کلاس ما MainClass است، باید حرف دوم بخش بعدی نام نیز با حرف بزرگ شروع شود. در این آموزش بخش اول نام کلاس ما Main است که با حرف بزرگ انگلیسی شروع شده و بخش دوم Class است که باز هم با حرف بزرگ شروع شده است. بنابراین اگر ما نام کلاس را به صورت Mainclass بنویسیم، غلط نیست! اما قشنگ هم نیست. نکته‌ای دیگر که باید به آن توجه کنیم این است که نمی‌توانیم نام کلاس خود را با اعداد شروع کنیم. مثلا 2MainClass کاملا غلط است یا نمی‌توانیم در بین کارکترهای نام کلاس، از کارکترهای خاص مثل ستاره (*)، هش مارک (#)، درصد (%) و ... استفاده کرد. اما در میان کارکترهای خاص می توان از علامت دولار ($) استفاده کرد یا می‌توان از خط زیر یا Underscore (_) نیز استفاده کرد. اما باز هم تاکید می شود که به هیچ عنوان از این نام‌ها استفاده نکنید. به عنوان مثال این نام: Main_Class کاملا صحیح است، اما خوب نیست که استفاده کنیم. همچنین از کلمات کلیدی جاوا هم نمی‌توانیم استفاده کنیم. در هر زبان برنامه نویسی یک سری کلمات، از قبل رزرو شده است که نمی‌توان از آن‌ها برای نام گذاری استفاده کرد. به عنوان مثال کلمه‌ی کلید class، یک کلمه‌ی رزرو شده است که برای ساختن یک کلاس در جاوا استفاده می‌شود.بنابراین ما نمی‌توانیم از این نام استفاده کنیم و در آخر اینکه تمام کلمات کلیدی با حروف کوچک انگلیسی نوشته می‌شوند.
 
بعد از ساخته شدن کلاس، با تصویر زیر مواجه می‌شویم:
01useeclipse10 a3347
همانطور که در تصویر بالا مشاهده می‌کنید، کدهایی که نوشته شده است، حداقل کدهایی است که یک برنامه‌ی جاوا برای اجرا به آن نیاز دارد. اگر یادتان باشد در آموزش Hello World ما این کدها را خودمان نوشتیم. درصورتی که حالا IDE برای ما این کار را انجام داده است. حالا برای اینکه فضای بیشتری برای نوشتن کد در اختیار داشته باشیم، همانطور که در تصویر بالا با یک فلش قرمز رنگ مشخص شده است، بر روی دکمه‌ی Maximize کلیک کنید. بعد کامنت ها که با رنگ سبز نوشته شده‌اند (در آموزش‌های بعدی در موردشان توضیح داده می‌شود) را پاک کنید. نتیجه به صورت زیر است:
01useeclipse11 df33e
حالا می‌خواهیم وقتی برنامه اجرا شد، عبارت: Welcome to Java Programming نمایش داده شود. بنابراین باید از جمله‌ی: ;()System.out.print استفاده کنیم. اما بجای نوشتن کامل این جمله، عبارت مقابل را بنویسید: sysout و سپس دکمه های ترکیبی CTRL + SPACE را فشار دهید تا کد کامل شود. در بین پرانتزهای ایجاد شده، یک جفت کوتیشن قرار دهید و سپس عبارت فوق را بنویسید. به شکل زیر:
01useeclipse12 bd1ab
حالا با نگه داشتن دکمه‌های ترکیبی CTRL + S برنامه را Save کنید. بعد از Save کردن، دکمه‌های ترکیبی CTRL + F11 را نگه دارید تا برنامه اجرا شود.
01useeclipse13 76e81همانطور که مشاهده می‌کنید، عبارت مورد نظر ما در خروجی استاندارد یا همان کنسول برنامه چاپ شد.