کار با اشیاء در جاوا - جلسه 2
1397/02/13 09:18 , بهزاد ناظمی

کار با اشیاء در جاوا - جلسه 2

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

دریافت مقادیر

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

 یک فرم آدرس دهی که در آن یک نمونه یا متغیرکلاس دارای دو بخش است:

  • یک اشاره به یک شیء یا کلاس در سمت چپ یک عملگر نقطه
  • یک متغییر در سمت راست

علامت نقطه ای برای این است که چگونه به متغیرهای نمونه شیء و روش های آن اشاره می کنید.

به عنوان مثال، اگر یک شیء به نام customer با یک متغیر به نام orderTotal داشته باشید، در اینجا سوال این است که چگونه می توان آن متغیر را در عبارت بیان کرد:

float total = customer.orderTotal;

در این دیدگاه مقادیر متغیر نمونه orderToltal شیء customer  را به یک متغیر شناور با نام Total اختصاص می دهد. دسترسی به متغیرها در نشانه گذاری نقطه ای یک عبارت (به معنی آن است که یک مقدار را باز می گرداند). هر دو طرف نقطه نیز عبارت هستند که این بدان معنی است که شما می توانید دسترسی به متغیر نمونه را بهم مرتبط کنید.

در ادامه مثال فوق، فرض کنید شیء customer یک متغیر نمونه از کلاس فروشگاه است. نماد نقطه ای می تواند دو بار مورد استفاده قرار گیرد، همانطور که در این عبارت زیر آمده است :

float total = store.customer.orderTotal;

عبارات نقطه ای از چپ به راست ارزیابی می شوند، بنابراین شما با مثال متغیر customer، که به عنوان نمونه متغیر orderTotal است، شروع می کنید. مقدار این متغیر به متغیر Total اختصاص داده شده است.

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

تنظیم مقادیر

انتساب یک مقدار به یک متغیر نمونه با علامت نقطه که = عملگر را به کار می گیرد درست مانند متغیرهایی هستند که  دارای انواع اولیه هستند:

customer.layaway = true;

این مثال، مقادیر یک متغیر نمونه boolean به نام layway را به true تغییر می دهد.

برنامه PointSetter در فهرست 3.2  متغیرهای نمونه را در یک شیء نقطه ای تغییر و مورد ارزیابی قرار می دهد. نقطه، یک کلاس در بسته java.awt است که نشان دهنده نقاط در یک سیستم مختصات با ارزش (x، y) است. یک فایل خالی جاوا در برنامه NetBeans با نام کلاس PointSetter و نام بسته com.java21days ایجاد کنید؛ سپس کد منبع نشان داده شده در فهرست 3.2 را تایپ و فایل را ذخیره کنید.

فهرست 3.2 - متن کامل PointSetter.java

1: package com.java21days;
 2:
 3: import java.awt.Point;
 4:
 5: class PointSetter {
 6:
 7:     public static void main(String[] arguments) {
 8:         Point location = new Point(4, 13);
 9:
10:         System.out.println("Starting location:");
11:         System.out.println("X equals " + location.x);
12:         System.out.println("Y equals " + location.y);
13:
14:         System.out.println("\nMoving to (7, 6)");
15:         location.x = 7;
16:         location.y = 6;
17:
18:         System.out.println("\nEnding location:");
19:         System.out.println("X equals " + location.x);
20:         System.out.println("Y equals " + location.y);
21:     }
22: }

هنگام اجرای این برنامه، خروجی باید با شکل 3.2 مطابقت داشته باشد.

کار با اشیاء در جاوا

شکل 3.2 تنظیمات و نمایش متغیرهای نمونه شیء

در این برنامه، یک مثال از نقطه ایجاد کنید که در آن x برابر با 4 و y برابر با 13 باشد (خط 8). این مقادیرهای فردی با استفاده از نشانه نقطه ای بازیابی می شوند.

مقدار x به 7 و y به 6 تغییر می کنند (خطوط 15-16). مقادیر ها دوباره نشان داده می شوند، تا نشان دهند که چگونه تغییر کرده اند.

  متغیرهای کلاس

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

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

متغیرهای کلاس را با اضافه کردن کلید واژه استاتیک قبل از متغیر تعریف می کنید. به عنوان مثال، تعریف کلاس جزئی زیر را در نظر بگیرید:

class FamilyMember {
    static String surname = "Mendoza";
    String name;
    int age;
}

هر نمونه از کلاس FamilyMember دارای ارزش های خود برای نام و سن است، اما متغیر نام خانوادگی کلاس فقط دارای یک نام برای تمام  اعضای خانواده است: "Mendoza". اگر مقدار نام خانوادگی تغییر کند، همه موارد FamilyMember تحت تاثیر قرار می گیرند.

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

هر دو خط خروجی در این مثال همان مقدار را نمایش می دهند:

FamilyMember dad = new FamilyMember();
System.out.println("Family's surname is: " + dad.surname);
System.out.println("Family's surname is: " + FamilyMember.surname);

از آنجا که شما می توانید از یک شیء برای تغییر ارزش یک متغیر کلاس استفاده کنید، احتمال آن که در مورد متغیرهای کلاس یا منبع آنها اشتباهی رخ بدهد زیاد است. به خاطر داشته باشید که مقادیر یک متغیر کلاس بر همه اشیای آن کلاس خاص تاثیر می گذارد. اگر متغیر نمونه surname یک شیء FamilyMember به "Paciorek" تنظیم شده باشد، تمام اشیاء آن کلاس باید دارای نام خانوادگی جدید باشند.

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

 

   برگرفته از : informit.com

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات