برنامه نویسی

جمع آوری اطلاعات ، انتقال ، به روز رسانی، تبادل

برنامه نویسی

جمع آوری اطلاعات ، انتقال ، به روز رسانی، تبادل

برنامه نویسی

این وبلاگ جهت تبادل و ارائه اطلاعات پیرامون مباحث برنامه نویسی (بیشتر جاوا) و فناوری اطلاعات ایجاد شده و اطلاعاتی در همین باره به علاقه مندان میدهد. امید بر آن، که این حرکت مفید واقع شود...

مطالب پیشنهادی

آموزش برنامه نویسی جاوا

می تونید از طریق سایتمون مارو دنبال کنید

آموزش برنامه نویسی جاوا

سورس کد های جاوا

برای ورود به it3du اینجا کلیمک کنید

۷ مطلب با کلمه‌ی کلیدی «java» ثبت شده است

در واقع this یک اشاره گر به آبجکتی از کلاس جاری می باشد.

زمانی که بخواهیم متغییری در کلاس را اشاره کنیم می توانیم با this این کار را انجام دهیم.

همچنین با استفاده از this می توانیم کانستراکتور همان کلاس را فراخوانی کنیم.

برای اینکه واضح تر به ادامه توضیحات ادامه بدیم یک مثال میزنیم

public class Test {
public Test(){
this(10);
}
public Test(int i){
this(i,++i);
}
public Test(int i, int j){
System.out.println("i : "+i + " j : "+j);
}
public static void main(String[] args){
Test t = new Test(); // or new Test();
}
}

در اینجا با استفاده از this() می توانیم سازنده های موجود در کلاس را فراخوانی کنیم و اگر سازنده ایی دارای پارامتر باشد برای this آن پارامتر ها را مقدار دهی می کنیم تا به سازنده مورد نظر اشاره کند.

در ادامه مطلب مثالی از this برای اشاره به یک متغییر ارائه می دهیم...

۲ نظر موافقین ۰ مخالفین ۰ ۲۲ ارديبهشت ۹۴ ، ۲۲:۳۱
مرتضی
Constructor ها یا سازنده ها در جاوا ویژگی هستند که با استفاده از آنها می توان متغییر های یک کلاس را در هنگام ایجاد نمونه از آن را مقدار دهی کرد یا مقداری را به کلاس دیگر ارسال کرد که این پارامتر ارسالی می تواند آبجکت ایجاد شده از یک کلاس باشد.
هر کلاسی در جاوا می تواند n کانستراکتور داشته باشد.
اگر برای کلاسی کانستراکتور تعیین نشود در هنگام ایجاد نمونه از آن کلاس به صورت خودکار یک کانستراکتور پیش فرض برای آن ایجاد خواهد شد.
نمونه ایی از یک کلاس ساده با یک سازنده پیش فرض (Default Constructor) :

public class Test {
     public Test(){
         System.out.println("print from constructor");
     }
}
در این کلاس چون کانستراکتور Test() فاقد پارامتر است کانستراکتور پیش فرض می باشد.
یک کانستراکتور باید هم نام با نام کلاس باشد.در کلاس Test تمامی سازنده ها باید با نام Test ایجاد شوند.
یک سازنده می تواند سازنده ی دیگر همان کلاس را فراخوانی کند یا در بحث شی گرایی یک سازنده کلاس می تواند سازنده ی کلاسی که از آن مشتق شده یا ارث بری می کند را فراخوانی کند (با اشاره گر های this و super).
سازنده ها نوع بازگشتی ندارند یعنی مقداری را return نمی کنند.
نوع دسترسی کانستراکتور ها می تواند public ، private ، protected و یا default access باشد.
سازنده ها می توانند تعداد پارامتر های یکسان اما با نوع داده ایی متفاوت باشد.به مثال زیر توجه کنید :

public class Test2 {
     public Test2(int i){}
     public Test2(double d){}
     public Test2(String s){}
}
نکته قابل توجه این است که هر سه سازنده دارای یک پارامتر می باشند و هم نام اند ولی دارای پارامتر هایی با نوع داده ایی متفاوت می باشند که آنها را از هم متمایز می کند. این تمایز زمانی مشخص می شود که شما در حال ایجاد آبجکتی از کلاس باشید. برای نمونه :

public class ConstructorTest {
    Test2 t1;
    Test2 t2;
    Test2 t3;
    public static void main(String[] args){
        t1 = new Test2(1);
        t2 = new Test2(10.2);
        t3 = new Test3("String");
    }
}
در اینجا پارامتر هر نمونه ایی که از کلاس Test2 ایجاد کرده ایم در حین عمل new کردن، مشخص می کند که نمونه ی ایجاد شده (در این جا t1 t2 t3) با کدام یک از کانستراکتور کلاس Test2 نمونه سازی شود. به هر حال با اجرای برنامه عملی اتفاق نمی افتد زیرا دستوری در سازنده ها وجود ندارد.

نکته ی مهم در کلاس Test2 این است که این کلاس سازنده ی پیش فرض ندارد.زمانی که ما برای کلاس سازنده ایی تعریف نکنیم به صورت خودکار برای کلاس سازنده پیش فرض در نظر گرفته می شود تا از بروز خطاهایی که می توانند ناشی از فراموشی برنامه نویس برای ایجاد سازنده پیش فرض باشد جلوگیری شود.
اما زمانی که شما سازندهی پیش فرض تعریف نمی کنید اما کلاس دارای سازنده می باشد مانند مثال زیر :
public class Test3 {
public Test3(int i){}
public static void main(String[] args){
Test3 t1 = new Test3(); // compile error
Test3 t2 = new Test3(10);
}
}
دلیل اینکه نمونه t1 یک خطای زمان کامپایل می باشد این است که کلاس سازنده پیش فرض ندارد و چون دارای سازنده ایی با پارامتر می باشد به صورت خوذکار برای آن سازنده پیش فرض در نظر گرفته نمی شود.
پس این نکته مهم را باید توجه داشته باشیم.
خوب حالا مثالی از سازنده برای مقدار دهی متغییر های یک کلاس در زمان ایجاد نمونه از آن کلاس در ادامه مطالب ارائه می دهیم.
۲ نظر موافقین ۰ مخالفین ۰ ۲۱ ارديبهشت ۹۴ ، ۲۳:۵۸
مرتضی

متد ها (method) را می توان همانند یک ابزار برای یک تعمییر کار می توان در نظر گرفت.مثلا با یک آچار می توان تعدادی پیچ را باز کرد.

طریقه کار به اینصورت می باشد که هر زمان که نیاز به آچار برای باز کردن پیچی داشته باشیم باید آچار را بیاوریم.

فرض کنید آچار را به صورت یک متد تعریف کنیم ، آنوقت برای اینکه بتوانیم از آچار استفاده کنیم باید آن را فراخوانی کنیم.


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

متد ها در جاوا حتما باید مقداری را برگردانند (return) کنند. اما می توانیم متدی داشته باشیم که مقدار هیچ یا پوچ (void) را برگردانند.

شکل کلی تعریف متد ها در جاوا :

[access-modifier] [static] DataType MethodName {
     // statement
}

access-modifier :

چهار نوع می باشد :

1- private

2- public

3- protected

4- default access

static :

بر حسب نیاز می توان از این نوع استفاده کرد (در بخش های بعدی توضیح داده می شود).

DataType :

یا نوع داده ایی. نوع داده ایی می باشد که متد بر می گرداند.

نوع داده ایی می تواند از نوع int ، long ، byte، short یا صحیح ، float ، double یا اعشاری ، char یا کاراکتری ، String یا رشته ، boolean یا بولی که دو مقدار true یا false‌را بر میگرداند.


Maximum Value Minimum Value Bits Type
127 -128 8 byte
32767 -32768 16 short
2,147,483,647 -2,147,483,648 32 int
9,223,372,036,854,775,807 -9,223,372,036,854,775,808 64 long
3.40282346638528860e+38
1.40129846432481707e-45 4 float

مثال :
int a = -100;
int b = 1000;
int c = -10000;
int d = 100000000000;
float e = 12.34f;
double f = -56.78;
boolean iLoveJava = true;
char aChar = 'a';
String greeting = "Hi, there!";

خوب، حالا نحوه ایجاد یک تابع و فراخوانی آن در برنامه.ولی قبل از آن توضیحی درباره دستور new در جاوا و دسترسی به متغییر ها و متد ها با استفاده از ایجاد کردن شی (object) ارائه می دهیم که برای درک موضوع لازم می باشد.
دستور new : ایجاد یک نمونه یا آبجکتی از نوع کلاس را در فضایی از حافظه ایجاد می کند و با استفاده از آن آبجکت می توان به عناصر موجود در کلاس دسترسی پیدا کرد. این عناصر می تواند متغییر ها ، متد ها باشد که با فراخوانی می توان از آنها استفاده کرد یا تغییراتی در مقدار آنها ایجاد کرد.
۱ نظر موافقین ۰ مخالفین ۰ ۱۹ فروردين ۹۴ ، ۱۷:۴۶
مرتضی
هر فایل جاوا باید ما یک کلاس همنام با نام فایل جاوا داشته باشد.
به طور مثال ما فایلی به نام Test.java ایجاد میکنیم. این فایل باید حداقل یک کلاس همنام با نام فایل جاوای ما داشته باشد.
public class Test {
  
}
می توانیم کلاس را public تعریف نکنیم.کد بالا ساختار یک کلاس در برنامه جاوا می باشد.
حال برای آنکه یک فایل جاوا اجرا شود نیاز به متد main دارد که به صورت زیر تعریف می شود:
public class Test {
  
  public static void main(String[] args){
    
  }
}
کد بالا باعث می شود تا کامپایلر متوجه شود که برنامه باید از کجا برای شروع کامپایل شود.
حال اگر برنامه را run کنید برنامه شروع می شود و چون هیچ دستوری در برنامه نیست برنامه بدون انجام هیچ عملی به پایان می رسد.
در جاوا برای چاپ یک مقدار در خروجی از دستور زیر استفاده می شود:
System.out.print();
System.out.println();
به حروف های بزرگ و کوچک دقت کنید زیرا که جاوا به بزرگ و کوچکی حروف حساس است.
برای مثال در دستور بالا System با system متفاوت است.
دستور اول مقدار موجود در آرگومان خود را چاپ می کند و خط جاری را رد نمی کند اما در دستور دوم پس از چاپ مقدار خط جاری را رد می کند.
System.out.print("Hello Java\n");
با استفاده از \n می توان خط جاری را رد کرد. 
حال برنامه ای که مقدار 2 عدد را با هم جمع می کند و به خروجی می برد:
۰ نظر موافقین ۰ مخالفین ۰ ۱۹ فروردين ۹۴ ، ۱۵:۲۹
مرتضی

اجرای یک برنامه ساده با cmd شاید یک کار آسان و در عین حال لذت بخش باشد.اما زمانی که برنامه نیاز به مدیریت بیشتر و وارد مبحث پکیج بندی می شود استفاده از IDE مناسب به سرعت بخشیدن در پیشرفت برنامه کمک شایانی می کند.

IDE یا Integrate Development Environment یک محیط برای زبان های برنامه نویسی است که کار کد نویسی و مدیریت فایل های برنامه را راحت تر و سرعت کد نویسی را بالا می برد.

زبان قدرتمند جاوا IDE های قدرتمندی نیز دارد که باعث ایجاد انگیزه در کسانی می شود که خواهان یادگیری این زبان هستند.

IDE هایی مانند Netbeans ، Eclipse ، Intellij IDEA IDE و غیره را می توان نام برد که آخرین نسخه این محیط هارو می توانید از اینترنت دانلود کنید.

برای شروع کار نیاز به IDEA نیست و می توانید با استفاده از notepad برنامه ها را بنویسید و از طریق Cmd در ویندوز اجرا کنید.

همچنین استفاده از Notepad++ نیز بسیار مفید خواهد بود زیرا از گرامر زبان های مختلف از جمله جاوا پشتیبانی می کند و کلمات کلیدی را با رنگ مختلف و تورفتگی ها را نمایش می دهد که برای فهم بیشتر موثر است.

آخرین نسخه برنامه notepad++ را می توانید از اینجا دانلود کنید.

خوب ، بریم سراغ اولین برنامه :

ابتدا یک فایل متنی با پسوند .java به نام Test ایجاد کنید.(به این صورت Test.java) دقت کنید که برای نمایش پسوند فایل ها و تغییر آنها باید گزینه Hide extensions for know file types را غیر فعال کنید.برای این کار به Computer بروید و از منو آیتم Tools را طبق شکل انتخاب و گزینه Folder Option را انتخاب کنید.

گزینه Hide extensions for know file types باید غیر فعال باشد ، در صورت فعال بود آن را غیر فعال کنید و ok را فشار دهید.

خوب حالا فایل متنی ایجاد شده (Test.java) را باز کنید و کد زیر را در آن وارد کنید.

نکته : به حروف بزرگ و کوچک دقت کنید زیرا جاوا به کوچک و بزرگی حساس است.اصطلاحا Case sensitive می باشد.


public class Test {
  public static void main(String[] args){
    System.out.println("Hello Java");
  }
}

خوب حالا باید فایل را ذخیره کنید و cmd را باز کنید و با استفاده از دستور cd به مسیری که فایل Test.java را ذخیره کردید بروید...

۷ نظر موافقین ۰ مخالفین ۰ ۱۷ فروردين ۹۴ ، ۱۹:۰۶
مرتضی

برای اجرای برنامه نوشته شده به زبان جاوا باید JDK یا Java Development Kit را در کامپیوتر خود نصب کنید.

می توانید آخرین نسخه JDK را از سایت اوراکل دانلود کنید.

پس از نصب JDK شما برای اینکه در خط فرمان ویندوز قادر به اجرای برنامه تان باشید، مراحل زیر را انجام دهید.

1 - ابتدا بر روی آیکن کامپیوتر (در ویندوز) راست کلیک کرده و گزینه Properties را انتخاب کنید یا به این آدرس مراجعه کنید Control Panel\System and Security\System و در پنجره باز شده گزینه Advanced system setting را انتخاب کنید.

2 - مرحله بعدی انتخاب گزینه Environment Variables است...

۰ نظر موافقین ۰ مخالفین ۰ ۱۷ فروردين ۹۴ ، ۱۸:۱۱
مرتضی

جاوا یا Java زبانی است شی گرا و توسط فردی به نام جیمز گاسلینگ در سال 1995 به عنوان بخشی از سکوی جاوا منتشر شد.

قبل از هر توضیح دیگری باید بدانیم شی گرایی چیست و دیدگاه شی گرایی برای توسعه نرم افزار چیست.

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

هدف شی گرایی طراحی اشیای دنیای واقعی با استفاده از کلاس است.برای مثال برنامه ای مینویسیم تا بر روی چوبی به اندازه 2 متر با فاصله 10cm میخ بکوبد. با در نظر گرفتن اصول شی گرایی در این برنامه می توان  میخ ٰ- چوب – چکش را یک شی در نظر گرفت.با این دیدگاه هر کدام از این اشیا را به کلاس تبدیل می کنیم (مدل سازی می کنیم).

ابتدا از کلاس چوب و چکش نمونه ایی ایجاد می کنیم. سپس از کلاس میخ نمونه ای ایجاد می کنیم و با استفاده از نمونه های ایجاد شده ی قبلی از چکش و چوب میخ ها را به فاصله 10cm از یکدیگر می کوبیم.

مزیت بزرگ شی گرایی Object-oriented programming یا به اختصار OOP این است که برنامه با سازماندهی بالا تر طراحی می شود و در مقابل تغییرات انعطاف پذیر است.همچنین میزان کد تولیدی برنامه را به طرز چشم گیری کاهش می دهد و خوانایی برنامه را بالا می برد.از از کلاس های ایجاد شده می توان در برنامه های دیگر با ایجاد تغییر یا بدون ایجاد تغییر استفاده کرد.

شی گرایی در جاوا به 3 طریق است :

1-      Encapsulation یا اصل نهان سازی

2-      Inheritance یا ارث بری

3-      Polymorphism‌ یا چند ریختی

باید در نظر داشت که زبان جاوا بسیاری از گرامر (syntax) خود را از زبان c و c++‌ گرفته و در مواردی بعضی از امکانات موجود در این زبان ها را به کار نبرده است.

مثلا در شی گرایی C++‌ از وراثت چندگانه پشتیبانی می کنند یعنی یک کلاس C++ میتواند از چندین کلاس دیگر ارث بری کند و خواص آنها را در خود اضافه کند (که این امر اگر با بی دقتی انجام شود ممکن است اشکالاتی را به وجود بیارد) که در جاوا وراثت چندگانه یا multi inheritance پشتیبانی نمیشود و یک کلاس در جاوا تنها می تواند از یک کلاس ارث بری کند اما به جای وراثت چندگانه جاوا واسط ها را معرفی کرد که هر کلاس میتواند از یک کلاس ارث بری و چند واسط (interface) را پیاده سازی کند.

در C و C++ اشاره گرها وجود دارند که در جاوا به کار نبرده است که همانند وراثت چندگانه با بی دقتی باعث بروز مشکل میشود.پس تا اینجا هدف جاوا را می توان ساده سازی و بالا بردن امنیت برنامه دانست زیرا با استفاده از اشاره گر ها (pointer) و وراثت چندگانه پیچیدگی برنامه بالا می رود.البته تمام هدف جاوا همین نبوده و کار های دیگری هم صورت گرفته است.

**اهداف جاوا:...

۰ نظر موافقین ۰ مخالفین ۰ ۱۷ فروردين ۹۴ ، ۱۷:۱۰
مرتضی