آموزش جاوا قسمت 7 (اشیا)

آموزش جاوا قسمت 7 (اشیا)

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

در جاوا Objectها یک مجموعه متغیر را در قالب state آن object در خود نگه می‌دارند، که به آن‌ها  فیلد یا متغیرهای عضو Object گفته می‌شود.

با یک مثال بحث را شروع می‌کنیم:

class Point {
    int x;
    int y;
}

در کلاس بالا یک نقطه با متغیرهای x و y تعریف شده است. برای ساختن یک نمونه از این کلاس، نیاز به استفاده از کلمه کلیدی new است:

Point p = new Point();

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

می‌توانیم constructorمان را به این صورت تعریف کنیم:

class Point {
    int x;
    int y;

    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

کد بالا به این معنی است که دیگر نمی‌توان از constructor پیش‌فرض به صورت ()new Point استفاده کرد. بلکه تنها می‌توانیم از constructor تعریف شده توسط خودمان به صورت مثلا (4,1)new Point استفاده کنیم.

لازم به ذکر است که شما می‌توانید بیش از یک constructor داشته باشید، و این یعنی Point می‌تواند به روش‌های مختلفی ساخته شود. حال مجددا توجه شما را به تعریف constructor پیش‌فرض جلب می‌کنم:

class Point {
    int x;
    int y;

    Point() {
        this(0, 0);
    }

    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

به نحوه استفاده از کلمه کلیدی this توجه کنید. از این کلمه کلیدی می‌توان برای صدا زدن یک constructor از داخل constructor دیگر استفاده کرد. که در این صورت  تنها در خط اول constructor باید صدا زده شود.

همچنین از کلمه کلیدی this می‌توان برای ارجاع به object فعلی که در حال اجرای آن هستیم، استفاده کرد.

پس از تعریف p، می‌توانیم به این صورت از x و y  استفاده کنیم:

p.x = 3;
p.y = 6;

توابع

حال می‌توانیم توابعPoint را تعریف کنیم:

class Point {
    ... // Our code previously
    void printPoint() {
        System.out.println("(" + x + "," + y + ")");
    }

    Point center(Point other) {
        // Returns the center between this point the other point
        // Notice we are using integer, we wan't get an accurate value
        return new Point((x + other.x) / 2, (y + other.y) / 2);
    }
}

 

مفاهیم public و private

اگرچه در مباحث بعدی درباره modifierها به تفصیل صحبت خواهد شد، اما دانستن تفاوت بین توابع و متغیرهای public و private بسیار اهمیت دارد.

درصورتی که قبل از یک متغیر یا تابع، از کلمه کلیدی private استفاده کنیم، به این معنا خواهد بود که تنها خود کلاس امکان دسترسی به آن متغیر یا تابع را دارد. در صورتیکه استفاده از public به این معنی است که همه امکان دسترسی به آن را خواهند داشت.

 

تمرین:

حال که با مفهوم constructorها آشنا شدید، برای تمرین کد زیر را به دقت بررسی کرده و پیش از اینکه آن را اجرا کنید، سعی کنید تا خودتان به پاسخ خروجی مورد انتظار برسید:

public class This_Example {
   // Instance variable num
   int num = 10;
	
   This_Example() {
      System.out.println("This is an example program on keyword this");	
   }

   This_Example(int num) {
      // Invoking the default constructor
      this();
      
      // Assigning the local variable num to the instance variable num
      this.num = num;	   
   }
   
   public void greet() {
      System.out.println("Hi Welcome to Tutorialspoint");
   }
      
   public void print() {
      // Local variable num
      int num = 20;
      
      // Printing the local variable
      System.out.println("value of local variable num is : "+num);
      
      // Printing the instance variable
      System.out.println("value of instance variable num is : "+this.num);
      
      // Invoking the greet method of a class
      this.greet();     
   }
   
   public static void main(String[] args) {
      // Instantiating the class
      This_Example obj1 = new This_Example();
      
      // Invoking the print method
      obj1.print();
	  
      // Passing a new value to the num variable through parametrized constructor
      This_Example obj2 = new This_Example(30);
      
      // Invoking the print method again
      obj2.print(); 
   }
}

 

برای انجام تمرین‌ این مبحث می‌توانید از یک IDE آنلاین مثل tutorialspoint استفاده کنید.

آخرین مبحث آموزشی از مباحث پایه‌ای جاوا به پایان رسید. با مطالبی که آموختید قادر خواهید بود تا بسیاری از برنامه‌های مورد نیاز خود را برای کنترل‌کننده‌های اس دی ان بنویسید. برای تکمیل دانش خود در برنامه نویسی جاوا و نوشن برنامه‌های بهتری برای کنترل‌کننده اس دی ان، نیاز به دانستن مفاهیمی چون ارث‌بری، نحوه استفاده از try, catch، ;کلاس‌های abstract، مفهوم interface و غیره خواهید داشت. بنابراین از جلسه بعد وارد مباحث پیشرفته تر خواهیم شد و به مرور زمان به هر یک از این مباحث خواهیم پرداخت.

پاسخ تمرین مبحث Objectها:

This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to Tutorialspoint
This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to Tutorialspoint

 

 

تاریخچه آموزش جاوا به ترتیب:

قسمت اول آموزش جاوا (مقدمه)

قسمت دوم آموزش جاوا (Types and Variables)

قسمت سوم آموزش جاوا (دستورات شرطی)

قسمت چهارم آموزش جاوا (آرایه‌ها)

قسمت پنجم آموزش جاوا (حلقه‌ها)

قسمت ششم آموزش جاوا (توابع)

قسمت هفتم آموزش جاوا (اشیا)

قسمت هشتم آموزش جاوا (ارث‌بری)

قسمت نهم آموزش جاوا (try and catch)

قسمت دهم آموزش جاوا (کلاس‌های abstract)

قسمت یازدهم آموزش جاوا (Interfaces)

قسمت دوازدهم آموزش جاوا (مفهوم Generic)

قسمت سیزدهم آموزش جاوا (Networking)

قسمت چهاردهم آموزش جاوا (مفهوم نخ و رشته)

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *