شیگرایی در کاتلین
کاتلین یک زبان شیگرا است. به این معنا که از مفهوم اشیا برنامهنویسی شده با قابلیت استفاده مجدد پشتیبانی میکند. کاتلین به برنامهنویسان و تیمهای توسعهدهنده API اندرویدی کمک میکند تا کدهایی ساختیافته که امکان استفاده مجدد از آنها وجود دارد را بنویسند. بهتر است به قیاس ماشین باز گردیم. یک کارخانه خودروسازی را تصور کنید که روزانه یک خودرو تولید میکند. آیا این کارخانه برای ساخت هر خودرو باید در بخش تولید، هر یک از قطعات خودرو را بازطراحی کند یا امکان استفاده از طرح اصلی وجود دارد؟ بدیهی است کارخانههای خودروسازی چنین کاری انجام نمیدهند، زیرا طراحی دقیق مولفهها، آزمایش کیفی و کمی قطعات و توسعه آنها به سالها زمان نیاز دارد. به همین دلیل کارخانهها در زمان طراحی یک مولفه نهایت دقت را به کار میگیرند، زیرا قرار است از یک قطعه برای سالیان متمادی و روی صدها یا حتا میلیونها ماشین استفاده شود. کاری که مهندسان نرمافزار هنگام کدنویسی انجام میدهند، الگوبرداری از دنیای واقعی و طراحی یک شی است. پس از آنکه یک شی بر مبنای یک نمونه اولیه طراحی شد، در ادامه برنامهنویسان به سراغ ساخت، پیکربندی و بهکارگیری شی میروند. در برخی موارد نیز اشیا با یکدیگر ترکیب میشوند تا شی بزرگتری به نام یک برنامه کاربردی به وجود آورند. زمانی که طراحی آماده و یک شی بر مبنای آن ساخته شد، در ادامه کامپایلر شی ما را به کد DEX تبدیل میکند. در این حالت ما یک برنامه اندرویدی در اختیار داریم. در کاتلین، یکی از مفاهیم مهمی که داریم کلاس است. زمانی که یک کلاس به یک شی واقعی تبدیل میشود، ما با استفاده از یک شی یا یک نمونه از یک شی، کلاسی که ساختهایم را فراخوانی میکنیم.
بیشتر واسطهای برنامهنویسی اندروید به زبانهای دیگری همچون جاوا نوشته شدهاند، اما این موضوع مهم نیست، زیرا در هنگام استفاده از آنها در کاتلین میتوانیم بدون مشکل از کدها استفاده کنیم، زیرا اندروید استودیو و کامپایلر کاتلین به پیچیدگیهای موجود در پشت صحنه رسیدگی میکنند و به کدنویسان اجازه میدهند روی ساخت برنامههای کاربردی خود متمرکز شوند و برنامههای جالب توجهی طراحی کنند. یکی از کارهایی که مهندسان نرمافزار تیم اندروید انجام میدهند در دسترس قرار دادن ویژگیهای پیشرفتهای همچون موقعیت مکانی دستگاههای اندرویدی است. به عبارت دقیقتر، ما تنها از یک خط کد استفاده میکنیم، در حالی که در پشت صحنه یک کد دربرگیرنده طیف گستردهای از وابستگی و کدهای دیگر است، اما به دلیل انتزاعی که وجود دارد شما یک کد آماده را مشاهده میکنید. مثال فوق (دسترسی به موقعیت مکانی) یکی از مثالهایی است که نشان میدهد بهکارگیری کدهای دیگر به چه میزان فرآیند کدنویسی را ساده میکند.
برنامهنویسان برای ساخت برنامههای اندرویدی، کدهایی مینویسند که بخش عمدهای از این کدها از واسطهای برنامهنویسی اندروید استفاده میکنند. کدها در ادامه به ماهیتی بهنام کد DEX تبدیل میشوند تا امکان اجرای آنها روی سایر دستگاههای اندرویدی که زیربنای آنها سیستمعاملی بهنام لینوکس است اجرا شود. امروزه سیستمعامل اندروید میتواند سختافزارهای پیچیده و بسیار متنوعی را مدیریت کند.
بدیهی است که تولیدکنندگان دستگاههای اندرویدی و تولیدکنندگان تجهیزات سختافزاری منفرد، برای آنکه به مصرفکننده اجازه دهند از تجهیزات آنها استفاده کند مجبور به نوشتن نرمافزارهای پیچیده و پیشرفتهای هستند که درایور نام دارند. درایورها نرمافزارهایی هستند که اطمینان میدهند، پردازنده مرکزی، پردازنده گرافیکی، تراشههای حافظه، دریافتکنندهها و رابطهای سختافزاری میتوانند سیستمعامل لینوکس را بدون مشکل مدیریت کنند و به سیستمعامل اجازه میدهند از سختافزار به بهترین شکل استفاده کند. کد DEX (به همراه برخی منابع دیگر) در مجموعهای از فایلها بهنام APK سرنام Android application package قرار میگیرد. فایلهایی با پسوند APK همان نرمافزارهایی هستند که روی دستگاههای اندرویدی اجرا میشوند. چه ابزاری کدهای نوشته شده را کامپایل و تبدیل به کد DEX میکند و دسترسی به APKها را فراهم میکند؟ پاسخ ابزاری بهنام محیط توسعه یکپارچه است. محیط توسعه یکپارچه به توسعهدهندگان اجازه کدنویسی، کامپایل و بستهبندی کدها را میدهد. اندروید متشکل از میلیونها خط کد برنامهنویسی است که به شکل ساختیافتهای آماده شدهاند. این کدها باید به گونهای سازماندهی شوند تا پیدا کردن و مراجعه به آنها ساده باشد. این کدها در قالب بستههایی خاص برای اندروید آماده شده و سازماندهی میشوند. هر زمان یک برنامه اندرویدی جدید ایجاد کنیم، نامی منحصر به فرد برای آن انتخاب میکنیم که به عنوان یک بسته شناخته میشود. بستهها اغلب به زیربستههایی تقسیم میشوند، به همین دلیل امکان گروهبندی آنها با یکدیگر یا سایر بستههای مشابه فراهم است. برای راحتی کار به بستهها به عنوان پوشهها یا زیرپوشهها نگاه کنید، زیرا کارکرد یکسانی دارند. ما میتوانیم به تمام بستههایی که Android API در اختیار ما قرار میدهد به عنوان کتابخانهای از کدها نگاه کنیم. برخی از بستههای اندرویدی که از آنها استفاده میکنیم به شرح زیر هستند:
android.graphics
android.database
android.view.animation
** اگر تمایل دارید اطلاعات بیشتری در ارتباط با بستههای اندروید به دست آورید به نشانی https://developer.android.com/reference/packages مراجعه کنید.
برای آموزش کاتلین سایت الکامکو را به شما پیشنهاد می کنیم.