انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: لذت جاوا :) آموزش برنامه نویسی در لینوکس به زبان جاوا  (دفعات بازدید: 11153 بار)

0 کاربر و 3 مهمان درحال مشاهده موضوع.

آفلاین !

  • High Sr. Member
  • *
  • ارسال: 586
  • جنسیت : پسر
  • Don't Panic!
    • مانیتورینگ سایت
برای ایجاد این تاپیک بحثی طولانی در تاپیک زیر شده و علاوه بر قوانین رایج انجمن این تاپیک یکسری قوانین خاص خودش را نیز داراست و این بنا به نظر دوستان انجمن بود :
قانون مهم و اصلی اینکه : برای مرتب بودن وانسجام مطالب

خواهشا به هیچ عنوان به تاپیک پاسخ ندهید



و سوالات خود را تا ایجاد تاپیک پرسش و پاسخ در تاپیک بحث و گفت و گو در زیر مطرح کنید.
http://forum.ubuntu.ir/index.php/topic,54807.0.html
همچنین پیشنهادات، انتقادات و ایده های خود را در زمینه روش آموزش در این تاپیک در همان لینک معرفی شده مطرح کنید.


-------------------------------


جاوا چگونه آغاز شد:

در سال 1991 در شرکت سان پروژه ای به نام Green برای طراحی یک زبان برنامه نویسی به منظور نوشتن نرم افزار برای ابزارهاییمانند کتاب خوان های الترونیک، دستگاههای ضبط و پخش و ... آغاز شد و نمونه ی اولیه آن Oak (بلوط) نام گرفت.در این زمان رهبر گروه جیمز گوسلینگ بود.

پس از مدتی اعضای گروه به این نتیجه رسیدند که اهداف پروژه بر خلاف نیازهای روز در آن زمان بود و پروژه در حال به تعلیق  در آمدن بودن که گروه هدف پروژه را تغییر داد و به دلیل فراگیری تدریجی وب جهانی در آن زمان و قابیلیت های خاص این زبان، پروژه به سمت توسعه در زمینه زبانی برای توسعه اینترنت و وب تغییر جهت داد  و در سال 1995 پروژه با نام تجاری جاوا عرضه شد و پس از مدت کوتاهی به دلیل ویژگیهای قدرتمند و توسعه مداوم به یکی از محبوبترین زبانهای برنامه نویسان تبدیل شد



و اما جاوا چیست ؟

جاوا یک زبان برنامه نویسی قدرتمند است که ...

جاوا قابل حمل است به این معنی که برنامه هایی که در جاوا مینویسیم قابلیت اجرا بر روی پلتفورم ها و سیستم های دیگر را دارا هستند.مثلا برنامه ای که در لینوکس نوشته اید میتوانید در مک یا ویندوز هم اجرا کنید!!

جاوا یکی از زبانهای خانواده C است و با رویکردی جدید در زمینه هایی چون شی گرایی و چند نخی قدرت زیادی پیدا کرده و برای کسانی که با زبانهای خانواده C آشنایی دارند یادگیری آن سریع است.

جاوا یکی از قویترین زبان های شی گراست و طراحی آن متناسب با نیازهای مهندسی نرم افزار و روش های نوین توسعه کد بوده است!

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

و اکنون جاوا اوپن سورس است!




نسخه های جاوا!

جاوا در سه نسخه استاندارد (JAVA SE) ، تجاری (JAVA EE) و مخصوص دستگاههای کوچک (JAVA ME) توسعه یافته که بحث ما در این آموزش در ابتدا نسخه Standard Edition  و سپس مسائل تخصصی ٍEnterprise Edition خواهد بود!




نصب جاوا و محیط توسعه اکلیپس در اوبونتو

در این آموزش برنامه ها را در محیط مجمع توسعه اکلیپس نوشته و اجرا میکنیم.

برای اجرای برنامه ها به زبان جاوا نیاز به JDK روی سیستم خود دارید.

اگر کاربر اوبونتو هستید یک راه ساده برای نصب همزمان JDK و ٍEclipse استفاده از کد زیر در ترمینال است :


sudo apt-get install eclipse
(***اگر خدای نکرده لینوکسی نیستید در مک و ویندوز برای دریافت JDK به سایت java.com و برای دریافت eclipse به eclipse.org مراجعه کنید. :))

اگر جاوا و اکلیپس را نصب کردید حالا آماده اید که اولین برنامه خود را در جاوا بنویسید :)





Hello, World

اکلیپس را باز کنید. به مسیر زیر بروید :

file > New > Java Project

در صفحه باز شده در بخش Project Name  یک نام مانند Hello وارد کرده و finish  را بزنید.

اگر صفحه welcome همچنان روی صفحه بود آن را ببندید!

در بخش سمت چپ صفحه در قسمت package explorer روی نام پروژه ی خود کلیک راست کرده و به مسیر زیر بروید :

New > class

در پنجره ظاهر شده در بخش name نام کلاس را وارد کنید ( در این بخش FirstInUbuntu را وارد کنید برای استفاده از کدهای زیر.) و finish  را بزنید.

حال در بخش میانی صفحه کدهایی مشاهده میکنید.آنها را پاک کنید و کد زیر را در آن بنویسید :

public class FirstInUbuntu {
   public static void main(String [] args){
      System.out.print("Hello, world");
   }
}

و سپس با استفاده از میانبر ctrl + f11 یا استفاده از مسیر زیر برنامه را اجرا کنید.

خب این هم از اولین برنامه به زبان جاوا، سلام دنیا!

با اجرای این کد باید عبارت Hello, world در بخش پایین اکلیپس قسمت console نمایان شود.



این هم یک عکس از محیط IDE به همراه کد نوشته شده در بالا و اجرا شده ی آن :


توضیح کد بالا :

هر برنامه جاوا شامل بخشهایی است که در زیر به چند بخش مورد نیاز ما در این کد میپردازیم و در هر قسمت بنا به نیاز بخشهای دیگر را توضیح میدهیم.

هر  برنامه جاوا شامل حداقل یک کلاس اصلی است و حداقل یک متد به نام main به عنوان متد اصلی است ولی این در ساده ترین حالت است و معمولا تعداد زیادی کلاس و متد در برنامه های نوشته شده خود خواهیم داشت.
در مورد چیستی کلاس ها و متد ها در آینده بیشتر خواهیم گفت. در کد بالا قطعه کد زیر تعریف کلاسی به نام FirstInUbuntu است :

public class FirstInUbuntu {
 

}

در حالت کلی برای تعریف یک کلاس عمومی در جاوا از ساختار زیر استفاده میکنیم :

} نام کلاس public class

بدنه کلاس

{

بدنه کلاس شامل اجزایی است که (تا اینجا صرفاً متدها را میشناسیم ازین اجزا!) کد های برنامه در آنها نوشته میشوند.

و اما متد ها: متدها تکه هایی از برنامه هستند ( چیزی تقریبا شبیه توابع در سی) که در کلاسها بسته بندی میشوند و هر کدام مسئولیت خود را دارند و در حقیقت کلاس ها بسته هایی حاوی متد هستند!

در کد بالا قطعه کد زیر بخش تعریف متد آن است :


   public static void main(String [] args){
     
   }


در حالت کلی متدهای استاتیک عمومی به صورت زیر تعریف میشوند :

}( آرگومانها ) نام متد  نوع بازگشتی  public static

بدنه متد

{


توجه داشته باشید که در برنامه های دسکتاپ به زبان جاوا همیشه نیاز به متدی به نام  main که بصورت زیر تعریف میشود داریم دقیقا با همین ساختار که در آینده راجع به آن بیشتر خواهیم گفت :


   public static void main(String [] args){
     
   }


 و بدنه متد ها هم شامل کدهایی است که برای اجرا مینویسیم که در کد بالا قطعه زیر بدنه متد main است که عبارت Hello, world را در صفحه نمایش میدهد :

System.out.print("Hello, world");

چند نکته که نباید فراموش کنید :

0 - جاوا حساس به بزرگی و کوچکی حروف است، اگر به این مساله توجه نکنید کدهای شما اجرا نمیشوند!
1 - نام کلاس عمومی باید با نام فایل ساخته شده که کد در آن نوشته میشود باید دقیقاً همنام باشند وگرنه منجر به خطا میشود.
2 - اگر نقاط گنگی در آموزش بود، صبور باشید در پست های بعدی مو شکافانه تر مطرح خواهند شد ;)

-----------------------------------------------

یک نسخه PDF از این مطلب توسط دوست خوبمون آقای سلمان العلما شیرازی تهیه شده که از لینک زیر میتونید اون رو دریافت کنید :

و برای ویرایش و مشارکت در پروژه و تهیه نسخه خودتان میتوانید از لینک زیر در لانچ پد استفاده کنید :


 پیشنهادات و انتقادات خود را در تاپیک زیر مطرح کنید :
و سوالات خود را در تاپیک زیر مطرح کنید :
و دوباره خواهش میکنم که به این تاپیک اینجا پاسخ ندید ;)
« آخرین ویرایش: 07 بهمن 1391، 12:13 ب‌ظ توسط داریوش عباسی »
I just felt like running

Altern AI Directory --- GitHub

آفلاین محسن ح.

  • Hero Member
  • *
  • ارسال: 854
  • جنسیت : پسر
با اجازه ی آقا داریوش !
منم یه چیزایی دارم از جاوا یاد میگیرم ، تا الان ۱۵۰ صفحه خوندم میخوام خلاصه ی اینایی که یاد گرفتمو بگم ، ایشالا که مفید باشه :)
-----------------------------------------------------------------------------

خب واسه شورع کار رو با نوشتن یه برنامه که ۲تا کلاس داره که اولی متد (همون تابع !) main توشه و کلاس دوم حاوی یک سری متد دیگس که توسط کلاس اول ازش یه شیئ میسازیم تا بتونیم ازش استفاده کنیم .

داخل پرانتز مهم ! :
داده ها توی جاوا ۲ مدل هستن یا اصلی (Primitive) هستن یا ارجاعی (Refrence)
واسه تشخیص این ۲ مدل :
اگه داده ای از یکی از ۸ نوع زیر بود اصلیه (خود جاوا میدونه چیه ، واسش تعریف شده) و اگه نبود ارجاعیه (یا ما یا کسه دیگه ای اون مدل داده رو واسش تعریف کردیم)
اون ۸ نوع : boolean , byte , char , short , int , long , float , double

خب حالا میریم سراغ اون ۲تا کلاس !
توی eclipce یه پروژه ی جدید ایجاد کنید و توی قسمت Package Explorer روی پروژه راست کلیک کنین و یه کلاس جدید اضافه کنین به این نام :
GradeBookTestحالا یه پنجره واستون میاد که محتویات کلاس جدیدتون رو نمایش میده ، کدهاش رو با اینا جایگزین کنین تا اولین کلاسمون ایجاد بشه :
public class GradeBookTest
{
public static void main(String[] args)
{
GradeBook myGradeBook1 = new GradeBook("mohsen 01");
myGradeBook1.displayName();

GradeBook myGradeBook2 = new GradeBook("mohsen 02");
myGradeBook2.displayName();
}
}

همین روند رو واسه ایجاد کلاس دوم طی کنین و اسمشو بزارین :
GradeBookو کدهاش رو هم اینا رو قرار بدین :
public class GradeBook
{
private String courseName;

public GradeBook(String name)
{
courseName = name;
}

public void setName(String name)
{
courseName=name;
}

public String getName()
{
return courseName;
}

public void displayName()
{
System.out.printf("Welcome to the grade book for \n%s!\n" , getName());
}
}

خب حالا با اجرا کردن برنامه (run) نتیجه میشه چاپ کردن این عبارات :
Welcome to the grade book for
mohsen 01!
Welcome to the grade book for
mohsen 02!

خب حالا بیایم ببینیم اینا چی بودن و اصلا چه فایده ای داره یاد گرفتن این چیزا !

اول یه چیزی رو بگم ، اونایی که برنامه نویسی کار کردن میدونن که واسه اینکه یه کلاس بتونه از یه کلاس دیگه یک شیي ایجاد کنه یا کلا بهش دست رسی داشته باشه ، باید اول کدهای اون برنامه باید کلاس مورد نظر شناسونده بشه به برنامه یعنی باید بهش بگیم که آقا (!) ما میخوایم از فلان کلاس توی برنامه استفاده کنیم !
اما توی جاوا واسه کلاس هایی که توی یک پوشه قرار گرفته باشن نیازی به این کار نیس و موقع کامپایل شدن خودش میفهمه !

خب پس اینکه این ۲تا چجوری میفهمن وجود همدیگه رو کاملا روشن شد !

اما کدهای ما چیکار میکنن ؟!
توی کلاس اول که متد main توش بود (و متد main همونطور که میدونین اولین متدی هستش که برنامه موقع اجرا شدن اجراش میکنه) ، ما خواستیم که از یه مدل داده که خودمون درست کردیم استفاده کنیم ، واسه استفاده از کلاس ها ما مستقیما نمیتونیم به خودشون دسترسی داشته باشیم (واسه دست نخورده موندن کدهای اصلی کلاس و امنیت بیشتر برنامه!) واسه همین یه نمونه از اون کلاس ایجاد میکنیم و باهاش کار میکنیم که بهش میگن شیئ
پس ما یک شیئ از کلاس GradeBook ایجاد کردیم که بتونیم از ویژگی هاش استفاده کنیم ،
GradeBook myGradeBook1 = new GradeBook("mohsen 01");توضیح این خط :
myGradeBook1 نامی هست که واسه داده ی خودمون انتخاب کردیم که از نوع GradeBook تعریف شده و چون میخواستیم بهش مقدار اولیه بدیم موقع new کردن (همون ایجاد یه کپی از کلاس مد نظر) بهش مقدار mohsen01 رو دادیم

نکته! : برای اینکه بتونیم بهش مقدار اولیه بدیم باید توی کلاس GradeBook سازنده ی کلاس رو ایجاد کنیم (Constructor) ، سازنده چیه ؟! سازنده ی کلاس شبیه یک متد میمونه ولی بدون نوع بازگشتی (حتی void هم نیس ، کدهای کلاس دوم رو ببینین) که همنام با کلاس مورد نظره و توش به متغییر های اون کلاس مقادیری اختصاص پیدا میکنه و این سازنده ی کلاسه که موقع فراخوانی یا شروع استفاده از یه کلاس ، اجرا میشه و کلاس رو اجرا میکنه و در نتیجه مقدارهایی که ما دادیم اول از همه توی متغییرها قرار میگیرن .

خب بعد از اینکه ما یک شیئ از کلاس دوم ایجاد کردیم ، میتونیم با استفاده از نام شیئ و یه نقطه بعد از اون ، اسم متدهای اون کلاس رو بیاریم و از ویژگی هاشون استفاده کنیم ، مثل خط بعدی که متد displayName(); رو ازش استفاده کردیم

حالا بریم سراغ کلاس دوم !

توی کلاس دوم اول که یک متغییر courseName ایجاد کردیم که مقادیر رو توش داشته باشیم ، متد  بعدی که نوشتم همون سازنده ی کلاسه که همونطور که میبینین هیچ نوع بازگشتی ای نداره و فقط مقداری که بهش میرسه رو میذاره جای مقداری که توی متغییر courseName هست .

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

متد بعدی برعکس قبلی عمل میکنه و مقداری که توی متغییر ما هست رو برمیگردونه ، از اونجایی که متغییر ما رشته (String) تعریف شده ، پس نوع مقدار بازگشتی هم همون رشته در نظر گرفته شده.

اما متد سوم که متدی هستش که توی main هم ازش استفاده کردیم ، این متد یه رشته رو با مقداری که توی متغییر ما هست رو کنار هم میذاره و توی خروجی چاپ میکنه !

(خسته شدم‌! :دی بقیش باشه واسه بعد ، ایشالا فردا-پس فردا :) )

آفلاین محسن ح.

  • Hero Member
  • *
  • ارسال: 854
  • جنسیت : پسر
خب حالا اون ۱-۲ تا متدی که یا استفاده نکردیم (setName) یا غیر مستقیم استفاده کردیم (getName) به چه دردمون میخوره ؟
واسه این برنامه فقط اولی رو نوشتم که بگم بعدا میشه اون اسم رو که توی سازنده داده بودیم به راحتی عوض کرد و واسه دومی هم اون مثال رو زدم که بگم فقط قرار نیس متدهای یک کلاس توسط شیئ ای که ازش ساخته شده اجرا بشن ، میشه خودشون هم خودشونو فراخوانی و اجرا کنن (البته اگه سطح دسترسی داشته باشن که کم کم اینا رو هم توضیح میدم :) )

---------------------------------------------------------------------

امروز میخوایم یه برنامه ی دیگه بنویسیم که شبیه یه بانک ساده عمل کنه یعنی افراد مختلف بتونن توش حساب داشته باشن و موجودیشون رو کم و زیاد کنن
واسه این کار مثل مثال قبل ۲تا کلاس میسازیم اولی به اسم Account و کدهاش هم اینا رو بزارین :
public class Account
{
private double balance;

//constructor
public Account(double initialBalance)
{
if(initialBalance>0.00)
balance = initialBalance;
}

public void setBalance(double amount)
{
balance = balance + amount;
}

public double getBalance()
{
return balance;
}
}

و کلاس دوم هم که متد main توشه و میخواد از کلاس اول نمونه سازی کنه (شیئ) تا بتونه کار کنه اسمشو بزارین AccountTest و کدهای زیر رو واسش قرار بدین :
import java.util.Scanner;
public class AccountTest
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
double depositAmount;

Account account1 = new Account(1000.00);
Account account2 = new Account(-200.00);

System.out.printf("account1 balance: $%.2f\n" , account1.getBalance());
System.out.printf("account2 balance: $%.2f\n" , account2.getBalance());

System.out.printf("\nEnter deposit amount for account1 : \n");
depositAmount = input.nextDouble();
System.out.printf("adding %.2f to account1 balance\n\n" , depositAmount);
account1.setBalance(depositAmount);

System.out.printf("account1 balance: $%.2f\n" , account1.getBalance());
System.out.printf("account2 balance: $%.2f\n" , account2.getBalance());

System.out.printf("\nEnter deposit amount for account2 : \n");
depositAmount = input.nextDouble();
System.out.printf("adding %.2f to account2 balance\n\n" , depositAmount);
account2.setBalance(depositAmount);

System.out.printf("account1 balance: $%.2f\n" , account1.getBalance());
System.out.printf("account2 balance: $%.2f\n" , account2.getBalance());
}
}

خب حالا با اجرا (Run) کردن برنامه و دادن مقدار های دلخواه خروجیتون باید شبیه این باشه :
account1 balance: $1000.00
account2 balance: $0.00

Enter deposit amount for account1 :
34
adding 34.00 to account1 balance

account1 balance: $1034.00
account2 balance: $0.00

Enter deposit amount for account2 :
43
adding 43.00 to account2 balance

account1 balance: $1034.00
account2 balance: $43.00

اما توضیحات کدهای بالا !
توی کلاس اول که شبیه برنامه ی قبلیمون بود و فقط به جای استفاده از رشته ، از اعداد ممیز شناور استفاده کردیم و همون طور که معلومه توی سازنده ی کلاس (متد اول که هم نام با خود کلاسه و هیچ نوع بازگشتی ای نداره) مقادیر رو به متغییرمون نسبت دادیم البته اول یه شرط گذاشتیم که چک بکنه دفعه ی اول که کسی میاد حساب باز میکنه طبیعتا موجودیش منفی نیس ! پس اگه کوچکتر از صفر وارد بشه اون خط واسش اجرا نمیشه

نکته : در زبان جاوا وقتی متغییری ساخته میشه بهش مقدار پیش فرض داده میشه که اگه عدد باشه ، صفر و اگه رشته و کاراکتر باشه null داده میشه بهش (نال یعنی هیچی !)

پس اگه مقدار منفی بهش بدین (همونطور که من دادم واسه تست کردن) مقدار رو عوض نمیکنه و صفر باقی میمونه.

خب متد بعدی که داریم
public void setBalance(double amount)از اولش شروع میکنیم ، چرا public ؟ چون قراره داخل یه کلاس دیگه بهش دسترسی داشته باشیم وگرنه private میزاشتیم !
چرا void ؟ چون قراره فقط یه مقدار بهش بدیم amount و با اون مقدار واسمون یه کاری رو انجام بده !
حالا کارش چه جوریه ؟
واسه فراخوانیش باید یه مقدار از نوع double بهش داده بشه که اونو به اسم amount میشناسه و همونطور که مشخصه ، میاد اون مقدار ورودی رو با مقداری که توی balance بوده جمع میکنه و باز هم توی balance میریزه !

متد بعدی
public double getBalance()که توضیح خاصی واسش نمیمونه دیگه ، نوعش که مثل قبلیه ، و مقدار بازگشتیش از نوع double تعریف شده چون مقداری که میخواد برگردونه (balance) نوعش از double هست .
و داخل این متد فقط داریم مقدار کنونی balance رو به جایی که این متد رو فراخوانی کرده برمیگردونیم .

این از کلاس اول
حالا میریم واسه توضیح کلاس دوم :
توی این کلاس ما شروع برنامه رو داریم (متد main)
این خط :
import java.util.Scanner;به کامپایلر میگه که ما میخوایم در طول برنامه از دستوراتی که واسه خوندن استفاده میشه استفاده کنیم پس دستوراتی که میزنیم رو جاوا میشناسه که چی هستن ! (عجب تعریفی کردم از import !)

توی خط اول متد main ما یه نمونه از Scanner ایجاد کردیم همونطور که میبینین Scanner خودش یک کلاس از کلاس هایی که جاوا واسه خودش داره هستش ، پس یه نمونه (شیئ) ازش میسازیم (واسه این بعدا بیشتر توضیح میدم که توی پرانتزش واسه چیه ، فعلا در همین حد کفایت میکنه :) )

و توی خط بعدی هم که یک متغییر واسه نگهداری مقدار وارد شده توسط کاربر رو داریم تعریف میکنیم .

Account account1 = new Account(1000.00);
Account account2 = new Account(-200.00);
این خطوط هم که دارن ۲تا نمونه از کلاس اولمون میسازن و مقادیر ۱۰۰۰/۰۰ و -۲۰۰/۰۰ رو بهشون میدن واسه مقدار اولیه

System.out.printf("account1 balance: $%.2f\n" , account1.getBalance());
System.out.printf("account2 balance: $%.2f\n" , account2.getBalance());
این خطوط رو ۳ جا استفاده کردم که فقط مقدار ۲تا شیئ ما رو توی هر عملیات به ما نشون میدن

از printf واسه چاپ فرمت بندی شده استفاده میشه که من شخصا دوسش دارم !
واسه چاپ کردن (نمایش به کاربر) چیز های دیگه ای هم وجود داره که بعدا بهشون میرسیم اما همین خیلی خوب و کامله که توضیح کاملش رو کم کم میدم :)

اما این خط:
depositAmount = input.nextDouble();input خودش همونطور که دیدیم یک شیئ بود که خواص خاص خودشو داره و ما اینجا چون میخواستیم یک عدد ممیز شناور (double) بخونیم از nextDouble استفاده کردیم که یک عدد ممیز دار رو واسمون از ورودی میگیره و ما این عبارت رو مساوی با متغییر خودمون قرار دادیم تا از مقدارش استفاده کنیم

این خط :
account1.setBalance(depositAmount);همونطور که توی توضیحات کلاس اول گفتم ، setBalance واسه اضافه کردن مقدار به موجودی بود و واسه انجام کارش به یک عدد ممیز دار نیاز داشت که اینجا ما بهش دادیم تا کارش رو بکنه

بقیه ی خطوط هم که توضیحاتشون دیگه تکراری میشه ، هر سوالی بود توی اون یکی تاپیک که واسه سوال و جواب هست ، جواب میدم :)

آفلاین سالار مقدم

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 2074
  • جنسیت : پسر
  • هر چقدر بدونی بازم کمه.
    • سالار مقدم

آفلاین !

  • High Sr. Member
  • *
  • ارسال: 586
  • جنسیت : پسر
  • Don't Panic!
    • مانیتورینگ سایت
>:(

اوه پسر.... یادم رفته بود این تاپیک هست اصا...

یکی پایه باشه کمک کنه ادامه بدیم :)
I just felt like running

Altern AI Directory --- GitHub

آفلاین mohammadgolfami

  • Full Member
  • *
  • ارسال: 213
  • جنسیت : پسر
دوست عزیز چرا از اینجا شروع کردی؟ یکی که بخواد جاوا یاد بگیره اینجوری هیچی نمی فهمه. یه دفعه پریدی وسط قصه!
محدودیت تنها در ذهن ماست!

آفلاین mojtabarezaei76

  • Full Member
  • *
  • ارسال: 179
  • جنسیت : پسر
دنیا را دو گونه می توان تغییر داد: با قلم (كاربست اندیشه) و با شمشیر (كاربست زور)

آفلاین mr_yaghoobi

  • Newbie
  • *
  • ارسال: 3
  • جنسیت : پسر
با سلام ..
میشه در مورد بانک اطلاعاتی در جاوا هم مطلبی بگین....