آموزش اندروید فصل اول قسمت پنجم – Inerface

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

در قسمت پنجم آموزش اندروید مبحث جاوا را به اتمام میرسانیم و در ادامه بیشتر با مباحث برنامه نویسی اندروید آشنا خواهیم شد.

آموزش اندروید فصل اول قسمت پنجم – Interface

توجه : برای مشاهده تصاویر در سایز اصلی بر روی آنها کلیک کنید.

Interfaceها

پیش از ادامه آموزش پیرامون ماهیت Thread ها نیاز به آشنایی با Interface ها در زبان برنامه نویسی جاوا داریم. واژه انگلیسی Interface به معنی “رابط” و “واسطه” می باشد. برای روشن شدن این مطلب مثالی ذکر می کنیم: فرض کنیم که عضو یک تیم برنامه نویسی هستیم که روی یک پروژه عظیم کار می کنیم. در واقع هر یک از اعضای این تیم مسئول نوشتن بخشی از برنامه است بدون آنکه به کار دیگر اعضاء کاری داشته باشد اما این در حالی است که یک نقشه اصلی ترسیم شده و در آن نقش کلیه اعضاء مشخص شده اند که هر کسی باید بر اساس آن نقشه کار خود را تکمیل کند. در این نقشه آمده است که برنامه نویس الف می بایست کدهای سمت سرور را بنویسد، برنامه نویس ب می بایست کدهای سمت کاربر را بنویسد و برنامه نویس پ بایستی UI نرم افزار را کدنویسی کند و …

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

شباهت های Interface ها با Class ها را می توان در موارد زیر خلاصه کرد:

۱- یک Interface به هر تعداد که بخواهد می توان متد داشته باشد.

۲- نام فایلی که یک Interface در آن قرار دارد می بایست با نام مد نظر برایInterface یکی باشد و این در حالی است که پسوند فایل همانند کلاس ها java است. مثلا MyInterface.java در زبان برنامه نویس جاوا Interface ها همانند کلاس ها می باشند اما این در حالی است که در موارد زیر با کلاس ها متفاوت می باشند:

۱- یک کلاس فقط و فقط می تواند از یک کلاس دیگر وارثت داشته باشد اما این در حالی است که یک کلاس می تواند بیش از یک Interface را اجرا کند.

۲- یک کلاس می تواند کلاس دیگر را extends کند اما این در حالی است که یک کلاس می تواند اقدام به implements کردن یک Interface کند.

۳- یک متد دارای Body وSignature است. کلاس ها می توانند حاوی متدهایی به همراه Body باشند اما این در حالی است که Interface ها فقط می توانند حاوای متدهایی با Signature آنها باشند. به عبارت دیگر متدهای قرار گرفته در Interface ها به صورت Abstract یا “انتزاعی”هستند.

۴- بر خلاف کلاس ها، از روی Interface ها نمی توان Object یا شیئ ساخت.

۵- به طور کلی Interface ها می توانند از روی دیگر Interface ها وارثت داشته باشند.

.

پس از آشنایی با مفاهیم Thread و Interface  به طور کلی می توان گفت که  Thread را  به دو روش مختلف ساخت

      ۱-روش اول به این صورت است که کلاسی ایجاد کرده سپس آن کلاس ویژگی های خود را از کلاس Thread جاوا به ارث ببرد.

      ۲-روش دوم به این صورت است که کلاسی ایجاد کرده و آن کلاس به اجرای یک Interface تحت عنوان Runnableبپردازد (لازم به ذکر است کلاسی که اقدام به             اجرای Runnable نماید بدون آنکه خصوصیتی را از کلاس Thread به ارث ببرد خواهد توانست اقدام به ساخت یک Thread نماید)

برای درک بیشتر به مثال زیر دقت فرمایید

همانگونه که مشاهده میکنید در عبارات فوق کلاسی با عنوان مشخص ایجاد شده که از کلاس Thread جاوا ارث بری میکند و یک متد درون خود دارد که باید به این نکته توجه کرد که باید متد را override کرد. و در ادامه برای اجرای این کلاس در main برنامه باید از متدی تحت عنوان start به صورت زیر استفاده کرد.

Exception

به طور کلی در زبان جاوا به منظور مواجهه با Error ها از چیزی تحت عنوان Exception استفاده می کنیم. معادل فارسی واژه Exception برابر است با “استثناء” و در زبان جاوا به “رویدادی گفته می شود که در پروسه اجرای یک برنامه یا اپلیکیشن بوجود می آید و از اجرای طبیعی برنامه جلوگیری به عمل می آورد”.

فرض کنیم متدی داریم که این وظیفه را دارا است تا کاری انجام دهد. حال در حین اجرای دستورات داخل این متد یک Error روی می دهد. در شرایطی این چنین، کاری که این متد انجام می دهد این است که شیئی تحت عنوان Exception Object می سازد که حاوی اطلاعاتی پیرامون نوع Error و همچنین زمانیکه این Error در برنامه یا اپلیکیشن رخ داده است می باشد و سپس این شیئ را تحویل سیستم می دهد. از این مرحله به بعد سیستم سعی می کند تا راه کاری برای رفع این Error بیابد. اگر سیستم بتواند دستور یا به طور کلی کدی را بیابد که بتواند این Error را رفع کند، آن دستور یا کد که اصطلاحاً Exception Handler نام دارد به رفع مشکل برنامه ما خواهد پرداخت و در غیر این صورت برنامه Crash خواهد کرد.

به طور کلی در زبان برنامه نویسی جاوا وقتی این احتمال وجود داشته باشد که ممکن است با یک Exception مواجه شویم، بایستی کد خود را داخل دستوری تحت عنوان try بنویسیم که در این صورت اگر Error هم داخل برنامه یا اپلیکیشن ما وجود داشته باشد برنامه به هیچ وجه Crash نخواهد کرد.

برای درک بیشتر به شبه کد فوق دقت فرمایید

به طور کلی Exception ها را می توان به دو گروه اصلی Checked و Unchecked دسته بندی کرد. در واقع منظور از Checked Exception ها Exception هایی هستند که در حین Compile-time رخ می دهند که از آن جمله می توان به IOException و SQLException اشاره کرد. در واقع این دست از Error ها مشکلاتی هستند که به Syntaxبرنامه مرتبط هستند. مثلاً اگر به جای نوشتن int عبارت INT را بنویسیم، از آنجا که یک مشکل Syntax یی داریم بایستی انتظار مشکلی مرتبط با Compile time داشته باشیم. به طور کلی این دسته از Exception ها “حتماً” می بایست اصطلاحاً Handle شده یا مد نظر قرار داده شوند. منظور از Unchecked Exception ها نوعی از Exception ها است که در حین Runtimeرخ می دهندکه از آن جمله می توان به ArithmeticException و NullPointerException اشاره نمود.

در واقع در این دست از مشکلات برنامه بدون هیچ مشکلی Compile می شود اما این در حالی است که در حین اجرای برنامه کاربر نتایج غیر قابل انتظاری مشاهده خواهد کرد و حتی ممکن است برنامه Crash هم بکند.

در حقیقت منظور از Compile-time این است که زمانیکه ما یک برنامه در زبان برنامه نویسی جاوا می نویسیم، کدهای ما می بایست به زبان ماشین تبدیل شوند و زمانیکه کدها به زبان ماشین تبدیل می شوند Compile-time نامیده می شود. حال پس از آنکه کدها به زمان ماشین تبدیل شدند و اصطلاحا Compile شد کاربر میتواند برنامه را اجرا کند و به زمانبک کاربر برنامه را اجرا میکند Runtime گفته میشود.

JVM یا ماشین مجازی

در واقع از بدو ایجاد زبان برنامه نویسی جاوا شعار طراحان این زبان محبوب این بوده است که Write One, Run Anywhere! به این معنی که “یک بار برنامه جاوای خود را بنویسید سپس روی هر پلتفرمی که خواستید آن را اجرا کنید!” که چنین قابلیتی جز با به کاری گیری مفهومی تحت عنوان “ماشین مجازی جاوا” امکان پذیر نخواهد بود.

به طور کلی ماشین مجازی جاوا را می توان در قالب تصویر زیر نشان داد:

2

همانطور که در تصویر بالا مشخص است برنامه جاوایی که ما می نویسیم یا همان  Source Code برنامه ابتدا توسط جاوا Compile می شود. منظور از اصطلاحCompile تبدیل کدهای جاوا به زبان قابل فهم برای سیستم است که همان صفر و یک می باشند. در واقع ما یک بار بیشتر برنامه خود را Compile نخواهیم کرد و این برنامه Compiled شده برای هر یک از پلتفورم های موجود از قبیل ویندوز، مکینتاش، لینوکس و … یکسان خواهد بود. اکنون از این پس این وظیفه ماشین های مجازی است که برنامه Compiled شده را به شکلی که برای پلتفورم مد نظر قابل فهم است تبدیل نماید. به عبارت دیگر ماشین های مجازی تمام تلاش خود را به کار خواهند بست تا از روی کد یکسانی نتایج نسبتاً یکسانی را در پلتفورم های مختلف ایجاد کنند.

مفهوم Garbage Collection

منظور از واژه Garbage در زبان انگلیسی “زباله” است و واژه Collection نیز به معنی “جمع آوری” می باشد. زمانیکه در زبان برنامه نویسی جاوا از این اصطلاح استفاده می کنیم منظور این است که ما به عنوان یک برنامه نویس جاوا نیازی نیست تا خود را درگیر مسائل مربوط بهMemory یا “حافظه” کنیم چرا که این وظیفه ای است که بر عهده خود ماشین مجازی جاوا گذاشته شده است. برای روشن شدن نحوه عملکرد Garbage Collection مثالی می زنیم: فرض کنیم زمانیکه برنامه خود را اجرا می کنیم جایی در برنامه دستور می دهیم که یک Object ساخته شود حال این Object یا شیئ جدید نیازمند مقداری حافظه است و این در حالی است که سیستم ما با کمبود حافظه رو به رو است.

در حقیقت Garbage Collection در پشت پرده فعال است و به محض اینکه بفهمد ما قصد داریم یک شیئ جدید ایجاد کنیم اما حافظه ای برای این شیئ جدید موجود نیست به صورت خودکار بخش های مختلف برنامه را مورد بررسی قرار خواهد داد تا ببیند که آیا شیئی یا چیزی در برنامه وجود دارد که قبلاً ایجاد شده است ولیکن دیگر مورد استفاده قرار نمی گیرد و به محض مواجهه با چنین موقعیتی حافظه اختصاص داده شده به آن شیئ دیگر را گرفته و به شیئ جدیدی که قصد داریم ایجاد کنیم اختصاص می دهد. به طور کلی مفهومGarbage Collection را می توان یکی از قابلیت بسیار مهم دیگر ماشین مجازی جاوا تلقی نمود.

مدرس : خانم مهندس داودی نژاد

آموزش اندروید فصل اول قسمت چهارم

آموزش اندروید فصل اول قسمت ششم

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

مطالب مرتبط

نظر بدهید

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