آکادمی آموزش آنلاین طوسی

نحوه implement کردن در اپ های اندرویدی در قالب پروژه SimpleCal (قسمت اول)

اهداف آموزشی این درس:

1. نحوه implement کردن کلاس های اندروید

2. ساخت متد بر اساس نیاز خود به منظور کدنویسی تمیز تر

3. آشنایی با متد ;()getId در اندروید

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

برای این منظور می توان از implement کردن استفاده کرد. در حقیقت همانطور که یک کلاس را با استفاده از کلیدواژه extends مجبور می کنیم تا از کلاس دیگری ارث بری کند (مثلا public class SplashActivity extends Activity که در تمامی فایل های یک اپ مورد استفاده قرار می گیرد)، به سادگی کلاس های خود را می توان با استفاده از کلید واژه implements مجبور به استفاده از ویژگی های سایر کلاس ها مثلا کلاس OnClickListener نمود.

برای روشن شدن این مطلب پروژه جدیدی ایجاد می کنیم تحت عنوان SimpleCal که ترکیبی و Cal می باشد که مخفف واژه Calculator به از واژگان Simple به معنی "ساده" معنی "ماشین حساب" است:

کدهای بالا را برای لی اوت این اپلیکیشن در نظر می گیریم که خروجی آن ها به صورت زیر خواهد بود:

کاری که در لی اوت بالا انجام داده ایم این است که کاربر در فیلد متنی اول عددی را وارد می کند، در فیلد متنی دوم عدد دیگری را وارد می کند سپس با فشردن دکمه Calculate حاصلضرب آن ها را به دست خواهد آورد و نتیجه در باکس سفید رنگ به نمایش در می آید و اگر هم بخواهد فیلدها را خالی نماید می تواند روی دکمه Clear کلیک کند. در ادامه اقدام به تکمیل کدهای Activity اصلی اپلیکیشن می کنیم:

همانطور که در کد بالا می بینیم، دکمه ها، ناحیه متنی و فیلدهای متنی کد در UI خود مورد استفاده قرار داده ایم را تعریف کرده ایم و به کدهای متناظر آن ها در XML لینک داده ایم. حال می بایست با استفاده از کلاس OnClickListener برای دکمه ها عملکردی مناسب تعریف کنیم. اگر بخواهیم به روش عادی این کار را انجام دهیم، می بایست دو شیئ از روی این کلاس ایجاد کرده یکی برای دکمه Calculate و دیگری برای دکمه Clear و کدهای مد نظر را داخل متد ;()onClick این کلاس بنویسیم اما در این آموزش قصد داریم رویکرد متفاوتی را پیش بگیریم به این صورت که کلاس اصلی این اپلیکیشن را از کلاس OnClickListener اصطلاحاً implement کنیم تا دیگر نیازی به ایجاد دو شیئ مجزا از روی این کلاس برای هر دو دکمه نداشته باشیم:

می بینیم که زیر نام کلاس اصلی اپ خط قرمزی به نشانه وجود یک مشکل کشیده می شود. با نگه داشتن نشانگر موس خود روی نام کلاس، می بینیم که پنجره ای زرد رنگ نمایان می شود که در آن گزینه ای تحت عنوان Add unimplemented methods به معنی "اضافه نمودن متدهای implement نشده" وجود دارد. روی این گزینه کلیک می کنیم:

همانطور که در کد بالا می بینیم، در جایی که خط اول از کدهای اپلیکیشن شروع می شود، یعنی جایی که نام کلاس اصلی اپ آمده است، کلید واژه implements را نوشته سپس کلاس OnClick Listener که می خواهیم بارها و بارها در اپ خود مورد استفاده قرار دهیم را می نویسیم. در اینجا می بایست با یک نکته کلیدی آشنا شویم و آن این که وقتی ما کلاسی را از یک کلاس دیگر مثل کلاس Activity اندروید اصطلاحاً extends یا "ارث بری" می کنیم، می توانیم همه متدها و یا تعداد خاصی از متدهای مرتبط با کلاس Activity را مورد استفاده قرار دهیم اما زمانی که یک کلاس را از کلاس دیگری مثل OnClickListener اصطلاحاً implements می کنیم، می بایست تمامی متدهای مرتبط با آن کلاس را مورد استفاده قرار دهیم و در غیر این صورت با اروری همچون تصویر زیر مواجه خواهیم شد:

می بینیم که در انتهای کدها یک متد ;()onClick اضافه می شود و ارور موجود هم از بین می رود. به طور کلی این متد هیچ فرقی با متد ;()onClick که در زمان ساخت یک Object از روی کلاس OnClickListener ایجاد می شود نخواهد داشت. پیش از این گفتیم که در سیستم عامل اندروید هر چیزی یک View است و دکمه هم از این قاعده مستثنی نیست و همانطور هم که در کد بالا می بینیم پارامتری که برای متد ;()onClick در نظر گرفته شده است یک View است. به طور کلی در این اپ، متد ;()onClick بررسی می کند ببیند که کدام View کلیک شده است )در اینجا کدام دکمه کلیک شده است( سپس کدهای مرتبط با آن View را اجرا می سازد. حال کاری که ما انجام می دهیم این است که نامی همچون whichButtonIsClicked به معنی "کدام دکمه کلیک شده است" را برای شیئ ساخته شده از روی کلاس View در نظر گرفته و آن را به عنوان پارامتر متد ;()onClick در نظر می گیریم:

حال با استفاده از دستورات switch مشخص می سازیم که کدام دکمه کلیک خواهد شد:

داخل پرانتز مرتبط با switch می بایست نام متغیر مد نظر خود را بنویسیم که در اینجا نام ساخته شده از روی کلاس View را نوشته و متدی تحت عنوان ()getId را به آن ضمیمه می کنیم. کاری که این متد انجام می دهد این است که id مرتبط با هر View در اپلیکیشن را اصطلاحاً return می کند یا "باز می گرداند". به عبارت دیگر id دکمه ای که کلیک شده است را مشخص می سازد. حال می بایست case های مرتبط با دکمه های اپ را مشخص سازیم:

 پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:

1. چرا می بایست در اپ های اندروید از دستور implements استفاده کرد؟

2. فرق دستورات extends و implements در ارتباط با متدهای مرتبط با کلاس های مختلف چیست؟

3. وظیفه متد ;()getId چیست؟

 

برای مشاهده نظرات وارد سایت شوید یا ثبت‌نام کنید.

81st_Session,_Implementing_in_Android_Applications,_Part_1.pdf

لینک دانلود فایل درس نحوه implement کردن در اپ های اندرویدی در قالب پروژه SimpleCal (قسمت اول)

سرفصل های آموزشی دوره رایگان برنامه نویسی اندروید Android

منبع این درس در سایت سکان (www.sokanacademy.com)