آموزش جاوا برای برنامه نویسان اندروید – جلسه دوم
بهمن ۱۲, ۱۳۹۶
آموزش جاوا برای برنامه نویسان اندروید – جلسه چهارم
اسفند ۱۸, ۱۳۹۶

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

جلسه سوم

بررسی نوع شی با instanceOf

در این درس به طور سریع چگونگی بررسی نوع  یک شی با استفاده از کلمه کلیدی instanceOf در جاوا را  نشان می‌دهیم.

شرط‌های پایه‌ای

در مورد بسیاری از دستورات شرطی اولیه جاوا در آموزش جاوا برای برنامه‌نویسان اندروید-قسمت آموزش نحو جاوا، صحبت کردیم. برای مثال جاوا تمام عملگرهای شرطی معمولی مورد انتظار ما از جمله تساوی، بزرگتری و کوچک‌تری، را ارائه می‌دهد.

در اینجا نمونه‌ای از کد جاوا که مقداری از متغیر عددی (به نام iVar) را بررسی می‌کند و مسیرهای کد مختلف با توجه به اینکه آیا iVar صفر، منفی یا مثبت است را بررسی می‌کند:

if(iVar==0) {
    // variable is zero
} else if (iVar > 0) {
    // variable is a positive number
} else {
    // variable is a negative number
}

استفاده از instanceOf در عبارات شرطی

حالا بگذارید نگاهی بیاندازیم به یکی از ویژگی‌های خاص جاوا که از آن می‌توانید در عبارات شرطی استفاده کنید. از آنجایی که جاوا یک زبان کاملاً شی‌گرا است، همچنین می‌توانید مشروط به استفاده از کلمه کلیدی instanceOf بررسی کنید که آیا یک شی از یک نوع خاص (یک نمونه از یک کلاس خاص)  هست یا نه. کلمه کلیدی instanceOf‌ یک عملگر بولی (true یا false) است که مانند یک عملگر شرطی بولی باقاعده ریاضی برای تولید نتیجه درست یا نادرست استفاده می‌شود.

اجازه دهید نگاه سریعی به یک مثال بیاندازیم. بیایید فرض کنیم یک کلاس پدر به نام fish داریم که دو زیرکلاس مشتق شده[۱] دارد: SaltwaterFish (ماهی دریایی) و  FreshwaterFish(ماهی آب شیرین).

ما می‌توانیم با استفاده از نام، از کلمه کلیدی instanceOf[2]‌ برای بررسی اینکه آیا یک شی یک نمونه از یک کلاس خاص یا زیرکلاس است، استفاده کنیم.

[۱]  یعنی دوکلاس که کلاس fish را به ارث برده‌اند (مترجم)

[۲]  کلمه کلیدی instanceOf‌ همان typeOf در .net است(مترجم)

SaltwaterFish nemo = new SaltwaterFish();
if(nemo instanceof Fish) {
    // we’ve got some sort of Fish
    // could be a Fish (parent class), or subclass of some kind, like
    // SaltwaterFish, or FreshwaterFish. 

    if(nemo instanceof SaltwaterFish) {
        // Nemo is a Saltwater fish!
    }
}

استفاده از instanceOf‌ در توسعه اندروید

وقتی که نوبت به توسعه اندروید می‌رسد، ویژگی instanceOf‌‌ کجا به کار می‌آید؟ برای تازه‌کارها باید بگوییم که کلاس‌های Android SDK (کیت توسعه نرم افزاری اندروید) در مود شی‌گرایی معمولی سلسله مراتبی سازمان‌دهی شده‌اند. برای کلاس‌هایی مانند Button, text view و check box که نشان دهنده نوع‌های مختلف از کنترل‌های رابط کاربری هستند، همه از همان کلاس پدر که view است، مشتق شده‌اند. بنابراین اگر می‌خواهید متدی ایجاد کنید که یک پارامتر view می‌گیرد اما بسته به نوع خاص کنترل رفتارهای متفاوتی دارد می‌توانید از مکانیسم instanceof‌‌ برای بررسی پارامترهای ورودی استفاده کنید و تشخیص دهید که دقیقاً چه نوع از کنترل view ارسال شده است.

۱ یعنی دوکلاس که کلاس fish را به ارث برده‌اند (مترجم)
۲ کلمه کلیدی instanceOf‌ همان typeOf در .net است(مترجم)

برای مثال، متد زیر یک پارامتر view می‌گیرد و به شما اجازه می‌دهدکه آن را به هر نوعی از view پاس دهید، اما تنها یک خروجی کنترل textView برای پردازش‌های ویژه داریم:

void checkforTextView(View v)
{
     if(v instanceof TextView) 
    {
        // This is a TextView control
    } else {
        // This is not a TextView control
    }
}

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

جمع‌بندی

در این درس به طور سریع چگونگی استفاده از کلمه کلیدی instanceOf‌‌ در جاوا برای بررسی نوعی از یک شی در زمان اجرا و ارائه مسیرهای کد شرطی براساس نتیجه را یاد گرفتید. این یکی از ویژگی‌های مفید جاوا است که توسعه دهندگان اندروید اغلب به آن متکی هستند چون کلاس‌های android SDK به صورت سلسله مراتبی سازمان‌دهی شده است.

مترجمان :

مهدی قاسم خانی

شیما عرفان

ویرایش  فنی :

محمد غفاری فر

این آموزش ها اختصاصی هستند و ساعت ها برای هر آموزش  زحمت کشیده شده  پس با کپی کردن  بدون ذکر منبع تمامی زحمات مدرسین  و ما رو ضایع نکنین  . با تشکر
محمد غفاری فر
محمد غفاری فر
حدود 8 ساله که در بخش های مختلف مانند انیمشن سازی ، بازی سازی ، طراحی سایت و برنامه نویسی اندروید فعالیت دارم که حدود 6 سال رو بیشتر به اندروید پرداختم . علاقه مند به آموزش دادن هستم و چندین دوره عمومی و خصوصی و همایش اندروید برگزار کرده ام .

2 دیدگاه ها

  1. عرفان گفت:

    بسیار عالی ، مفید و کاربردی
    ممنون بابت آموزش

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

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