سلام به همه دوستان آموزش جاوا با ITSI.IR . می خواهیم آموزش جاوا جدیدی را برای شما ارائه دهیم . امیدوارم آموزش های 5 درس گذشته را خوب مطالعه کرده باشید و تمرینات این دروس را هم با دقت لازم انجام داده باشید .
در این آموزش که به همراه مثال می باشد می خواهیم در ابتدا یک کلاس با متغیر های نمونه ایجاد کنید و سپس یک شی از کلاس در برنامه اصلی جاوا ایجاد میکنیم و توسط متدهای get و set از متغیر های نمونه خود استفاده میکنیم .

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

در ابتدای آموزش بیایید با هم یک کلاس درس را در نظر بگیریم . این کلاس متشکل از چندین دانش آموزش میباشد . اگر مدرسه غیر انتفاعی باشد و پولدار باشید شامل حدود 12 تا 20 دانش آموز است و اگر همانند من باشید این کلاس در مدرسه دولتی شامل 30 تا 40 دانش آموزش میباشد . دانش آموزان این کلاس هر کدام دارای یک نام خانوادگی منحصر به فرد برای خود هستند ( البته وجود چند دانش آموز با نام خانوادگی یکسان هم باید در نظر گرفت ) ولی در این درس دانش آموزان ما دارای نام خانوادگی یکسانی نیستند .

برنامه NetBeans خود را اجرا کنید .
می خواهیم به شما آموزش دهیم که چطور یک کلاس در جاوا و برنامه خود ایجاد کنید . ( همانند این درس یک برنامه جدید ایجاد کنید ) ما اسم برنامه خود را MyClassTest قرار میدهیم .
این کار را می توانید با استفاده از New File ( Ctrl + N ) انجام دهید . بروی روی New File کلیک کنید
درس ششم : ساخت کلاس در جاوا و متغیر های نمونه با متدهای get و set
در صفحه باز شده Java Class را انتخاب کنید و بر روی next کلیک کنید
درس ششم : ساخت کلاس در جاوا و متغیر های نمونه با متدهای get و set
یک نام مناسب برای کلاس خود در نظر بگیرید و بروی روی Finish کلیک کنید
درس ششم : ساخت کلاس در جاوا و متغیر های نمونه با متدهای get و set
مشاهده خواهید کرد که کلاس شما در کنار کلاس اصلی برنامه ایجاد می شود .
درس ششم : ساخت کلاس در جاوا و متغیر های نمونه با متدهای get و set
یک راه دیگر برای ایجاد کلاس این است که می توانید بر روی پکیج myclasstest راست کلیک کنید و از گزینه ی New گزینه ی Java Class را انتخاب کنید .
درس ششم : ساخت کلاس در جاوا و متغیر های نمونه با متدهای get و set
خب کلاس هم ایجاد کردیم بریم کمی کد بزنیم .
کد زیر را در کلاس دوم که ایجاد کردیم ( MyClass ) وارد کنید تا توضیحات کامل را برای شما بگویم .

package myclasstest;

public class MyClass {
    
    private String name ; 
    
    public void setName(String name){
        this.name = name;
    }
    
    public String getName(){
        return name ;
    }
    
}

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

public class MyClass

کلمه کلیدی public که در آینده کاملا توضیح داده می شود ، سطح دسترسی به کلاس را نشان می دهد و کلاسی که public تعریف می شود باید در فایلی دقیقا با نام کلاس و با پسوند جاوا باشید . برای همین کلاس های MyClass و MyClassTest در فایل هایی با همین نام های و پسوند java هستند .
بعد از public از کلمه کلیدی class استفاده میکنیم و بلافاصله بعد از آن نام کلاس یعنی MyClass نوشته شده است .

private String name ;

این خط از برنامه برای ما یک متغیر نمونه ایجاد میکند . این متغیرهای نمونه برای ما کار همان صفت هایی را انجام می دهد که بعد از ایجاد شی از کلاس به وجود می آیند . این نوع متغیر ها بعد از اجرای برنامه بوجود می آیند چه قبل از ایجاد شی از کلاس و چه حین اجرای برنامه .
وقتی شما یک شی از کلاس ایجاد کنید آن شی یک کپی متعلق به خود را از این متغیر نمونه ایجاد میکند.
دقت کنید که متغیر های نمونه درون کلاس و حتما خارج از متدهای کلاس باید تعریف شوند .
این متغیر ما از نوع رشته ای است و ما برای نگهداری نام دانش آموزان خود از آن استفاده میکنیم .
وقتی یک متغیر را ما بصورت نمونه ایجاد کنید این دسترسی را به برنامه میدهید تا توسط دیگر متدهای کلاس دستکاری شود .
متغیر نمونه را ما بصورت private ایجاد میکنیم تا فقط توسط متدهای کلاس MyClass قابل دستکاری باشد .

public void setName(String name){
this.name = name;
}

این قطعه کد برای ما یک متد ایجاد میکند . به خط اول آن همانند دیگر برنامه ها سرآیند متد گفته میشود .این متد را ما بصورت public تعریف کرده ایم تا در دیگر کلاس ها بتوانیم از آن استفاده کنیم . بعد از نوع برگشتی را مشخص میکنیم . void به ما این اطلاع را میدهد که متد بعد از انجام کار خود هیچ داده ای را برنمیگرداند.
به طور معمول متد ها دارای یک یا چند پارامتر هستند که داخل پرانتر باز و بسته ( ) قرار میگیرند . که دارای یک نوع در اینجا String و یک نام هستند در اینجا name . اگر چندین پارامتر وجود داشته باشد باید با , از هم جدا شوند .
در بدنه متد خود دستور زیر را دارید

this.name = name;

دقت کنید بدنه متد ها ، کلاس ها و… با براکت باز و بسته { } مشخص می شوند و دستورات داخل آن وظیفه و کارها را مشخص میکنند .
دقت کنید که ما میخواهیم پارامتر name را به متغیر نمونه تخصیص دهیم . اگر ما name = name را تایپ می کردیم بدنه متد به متغیر خوده متد مراجعه میکرد و به اصطلاح متغیر نمونه مد نظر ما را در نظر نمیگرفت و به سایه میرفت . برای همین ما از کلمه کلیدی this استفاده کردیم که مشخص کنیم می خواهیم پارامتر name را در متغیر نمونه قرار دهیم .

public String getName(){
return name ;
}

متد getName از نوع String است و برخلاف setName که void بود و مقداری را برگشت نمیداد این متد یک مقدار String را برگشت میدهد . این متد در لیست پارامتر خود خالی است و این نشان میدهد اگر بخواهیم از این متد استفاده کنیم نیاز نیست مقداری را به آن ارسال کنیم .
متغیرهایی که نوع برگشتی غیر از void دارند باید در میان بدنه خود یک return داشته باشند تا مقداری را از نوع مشخص شده در سرآیند آن ( اینجا String ) را برگشت دهد .
کار ما با این متد به پایان رسید و به سراغ متد MyClassTest میرویم .
دستورات زیر را در آن قرار دهید تا توضیحات را بگویم .

package myclasstest;
import java.util.Scanner;

public class MyClassTest {


    public static void main(String[] args) {
        
        Scanner myInput = new Scanner(System.in);
        
        MyClass classRoom = new MyClass();
        
        System.out.printf("Name Danesh Amooz : %s\n\n", classRoom.getName());
        
        System.out.println("Name Danesh Amooz Ra Vared Konid : ");
        String theName = myInput.nextLine();
        classRoom.setName(theName);
        System.out.println();
        
        System.out.printf("Name Danesh Amooz : \n%s\n", classRoom.getName());
    }
    
}
درس ششم : ساخت کلاس در جاوا و متغیر های نمونه با متدهای get و set

خروجی برنامه

خب بریم برای توضیح کد ها :

Scanner myInput = new Scanner(System.in);

این خط از کد را در درسهای گذشته توضیح دادیم که یک شی از کلاس Scanner به نما myInput ایجاد میکند .

MyClass classRoom = new MyClass();

این خط از برنامه :
ما یک متغیر از نوع MyClass داریم که یک اسم به آن دادیم با نام classRoom بعد از = یک شی جدید از MyClass ایجاد کرده ایم و آن را در متغیری از نوع خود کلاس یعنی MyClass قرار داده ایم .
این مورد را ما در ایجاد یک شی از کلاس Scanner داشتیم که با استفاده از کلمه کلیدی new یک شی را ایجاد کردیم و آن را در متغری با نام myInput از نوع Scanner قرار دادیم .
بعد از نام کلاس باید ( ) را قرار دهید ( در دروس بعدی استفاده این پرانتزها را توضیح خواهم داد .)

System.out.printf("Name Danesh Amooz : %s\n\n", classRoom.getName());

این خط از برنامه با استفاده از شی ایجاد شده از کلاس ( classRoom ) سپس یک نقطه و فراخوانی متد getName میخواهد مقدار متغیر نمونه در کلاس MyClass را برگرداند .
وقتی این خط اجرا می شود برنامه به کلاس MyClass و خط متد getName می رود و چون این متد از طریق شی classRoom فراخوانده شده است میتواند متغیر نمونه name را دستکاری کند . بعد از رسیدن به متد getName به دستور return name می رسد و در نتیجه name را برای ما برمیگرداند .
اگر در خروجی مشاهده کنید خط اول برای ما null را برگشت داده است . چون متغیر نمونه ما مقدار دهی اولیه نشده بود و هنوز با استفاده از setName مقداری به ان داده نشده است مقدار null که برای String ها در نظر گرفته میشود را برمیگرداند.

System.out.println("Name Danesh Amooz Ra Vared Konid : ");

این خط که در دروس گذشته آشنا شدید به کاربر اعلام میکند که یک نام را وارد کند.

String theName = myInput.nextLine();

این خط یک متغیر از نوع String ایجاد میکند و با استفاده از myInput و متد nextLine() منتظر می ماند تا یک نام را وارد کنید .در دروس گذشته با متد nextInt() آشنا شدید که مخصوص عدد ها بود .

classRoom.setName(theName);

این خط از برنامه را خیلی دقت کنید .
شی ایجاد شده از کلاس MyClass به نام classRoom با استفاده از . و فراخواندن متد setName ، نام وارد شده توسط کاربر را به عنوان یک آرگومان به پارامتر متد setName ارسال میکند . به متد setName نگاه کنید در لیست پارامتر های آن باید یک نوع String دریافت کند . ما هم این String را از طریق نام وارد شده توسط کاربر ارسال کردیم .

System.out.println();

یک خط خالی ایجاد میکند .

System.out.printf("Name Danesh Amooz : \n%s\n", classRoom.getName());

و اما خط آخر برنامه . همان کاری را که در ابتدای برنامه انجام دادیم و مقدار null را برگشت داد باز هم انجام می دهد با این تفاوت که این بار با استفاده از متد setName و نام وارد شده کاربر برای ما یک name را برمیگرداند .

چند نکته پایانی برای این درس

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

کلاس های System و String در پکیچ پیش فرض java.lang قرار دارند و به صورت ضمنی وارد برنامه میشوند برای همین بر خلاف کلاس Scanner نیاز به import ندارند . اگر کلاس Scanner را import نکنیم باید دستور Scanner را به صورت زیر وارد کنیم .
java.util.Scanner myInput = new java.util.Scanner(System.in);

خب دوستان عزیز این درس از آموزش جاوا به اتمام رسید . سوالی داشتید در بخش نظرات مطرح نمایید . فایل برنامه هم برای شما قرار دادم .

دانلود فایل آموزش