ما هي لغة Kotlin؟

Kotlin هي لغة برمجة مفتوحة المصدر مكتوبة بشكل ثابت تعمل على Java Virtual Machine (JVM). فهو يجمع بين البرمجة الشيئية (OOPs) والبرمجة الوظيفية في منصات مميزة وغير مقيدة وذاتية الاكتفاء. كما يسمح بتوأمة الوظائف عن طريق الکودات المصغرة. Kotlin هي لغة برمجة للأغراض العامة تم تصميمها بواسطة JetBrains.

أسباب استخدام لغة Kotlin

فيما يلي بعض الأسباب المهمة لاستخدام Kotlin على نطاق واسع:

  • Kotlin هي لغة مكتوبة بشكل ثابت وهي سهلة القراءة والكتابة.
  • لا تتطلب برامج Kotlin فاصلة منقوطة في برنامجها. هذا يجعل الكود أسهل وأكثر قابلية للقراءة.
  • تسمح هذه اللغة بتبادل واستخدام المعلومات من Java بطرق مختلفة. علاوة على ذلك يمكن أن يتعايش كود Java و Kotlin في نفس المشروع.
  • يهدف نظام نوع Kotlin إلى إزالة NullPointerException من الكود.
  • سيستغرق الأمر وقتًا أقل لكتابة رمز جديد في Kotlin. من الأسهل أيضًا نشر كود kotlin والحفاظ عليه على نطاق واسع.

ميزات لغة Kotlin

فيما يلي بعض ميزات Kotlin التي ستجعلك متأكدًا من مسار تقدم لغة البرمجة.

قلص الکود

Kotlin هي لغة برمجة قائمة على OOPs حيث يمكن قطع خط الكود بنسبة تصل إلى 40٪ مما يجعل Kotlin خيارًا مثاليًا لتطوير البرامج أو الويب.

مفتوح المصدر

يستخدم Kotlin لنظام Android JVM ويجمع بين ميزات OOPs والبرمجة الوظيفية.

تجميع سريع

من السهل تجميع الكود عند العمل مع Kotlin الذي ينتج عنه أداء أفضل لتطوير android كما سيوضح نوع وظيفة البيانات التي يمكن استخدامها في الكود بأكمله.

وظائف التمديد (Extension Functions)

يمكن لـ Kotlin دعم مجموعة متنوعة من وظائف التمديد دون إجراء أي تغييرات على الكود. يساعد في جعل الكود الحالي أكثر جاذبية وروعة للمطورين.

فمثلا:

Fun String.removeFirstLastChar():
String = this.substring(1, this.length -1)

سيساعد هذا الکود في قطع الحرف الأول والأخير من السلسلة ويمكننا تطبيقه على النحو التالي:

Val string1 = "Today is cloudy."
Val string2 = string1.removeFirstLastChar()

Null Safety

في Kotlin يميز النظام بين المراجع null و المراجع التی لیست null كما هو موضح أدناه في مثال Kotlin.

على سبيل المثال لا يمكن أن يحتوي متغير String على قيمة null:

Var string1: String = "Today is Sunday"
String1 = null  // compilation error
To permit null, we can adjoin the nullable variable :
Var string2: String? = "Today is Sunday"
String2 = null
print(string2)

قابلة للتشغيل المتبادل

يمكن استخدام كود Kotlin بواسطة Java ويمكن استخدام أكواد Java مع Kotlin. لذلك إذا كانت لديك معرفة ببرمجة OOPS فمن السهل التبديل إلى تطوير Kotlin. أيضًا إذا كانت هناك بعض التطبيقات المكتوبة بلغة Java فيمكن استخدامها مع بيئة Kotlin.

أدوات قوية

مثل Java يمكن أيضًا كتابة كود Kotlin باستخدام IDE أو باستخدام واجهة سطر الأوامر. من السهل العمل مع IDE كما يتم تقليل أخطاء بناء الجملة بشكل كبير. في نفس الوقت عندما تعمل بواجهة سطر أوامر يجب تجميع الكود أولاً.

Smart Cast

تساعد ميزة Smart Cast بشكل أساسي في خفض تكاليف التطبيق وتحسين سرعته أو أدائه. يعمل على إدارة كفاءة الكود باستخدام صب النوع أو القيم الثابتة.

على سبيل المثال إذا تم تحديد السلسلة، فسيكون طولها وعددها ويمكن العثور عليها بمساعدة وظيفة Smart Cast:

Val string1: Any = "Today is Monday"
when(string1)
{
is String  -> string1.length
Is Int -> string1.inc()
}

تكلفة منخفضة

يُفضل استخدام لغة Kotlin من قبل الشركات نظرًا لخسارة تكلفة اعتمادها. الأهم من ذلك أنه من السهل التعلم من قبل المطورين خاصةً هولاء الذین لديهم خلفية برمجة.

إعداد بيئة لغة Kotlin

فيما يلي الخطوات التي تساعدك في إعداد بيئة عمل من خلال تثبيت Kotlin.

الخطوة 1) قم بتثبيت Java

كما ناقشنا سابقًا أن Kotlin مبنية على Java لذلك عليك تثبيت Java أولاً عند التخطيط لاعتماد Kotlin.

الخطوة 2) قم بتثبيت Java IDEs

لحسن الحظ هناك العديد من Java IDEs للاختيار من بينها. قدمنا هنا روابط تنزيل لتسهيل الأمور عليك.

لتنزيل Eclipse انقر هنا.

و لتنزيل NetBeans انقر هنا.

لتنزيل IntelliJ انقر هنا.

في هذا البرنامج التعليمي Kotlin سوف نستخدم Eclipse.

الخطوة 3) قم بتثبيت Kotlin

لتثبيت Kotlin في Eclipse انتقل إلى قسم Help في Eclipse وانقر على خيار Eclipse Marketplace.

لغة Kotlin

الآن اكتب الكلمة الأساسية Kotlin في مربع البحث. انقر علی خيار Go لإدراج المكون الإضافي. سيعطيك رابطًا لمكوِّن Kotlin الإضافي فأنت بحاجة إلى تثبيت المكون الإضافي من الرابط المحدد.

يرجى إعادة تشغيل Eclipse IDE بمجرد اكتمال التثبيت. يمكنك العثور على رمز اختصار في الزاوية اليمنى العليا من Eclipse IDE. إنها طريقة وصول سريع.

هناك طريقة أخرى للوصول إلى Kotlin في Eclipse IDE وهي الانتقال إلى Windows و Perspectives و Open Perspectives ثم اختيار خيار Other. هنا يمكنك التحقق من قائمة المكونات الإضافية المثبتة لاحقًا كما هو موضح أدناه.

بمجرد التحقق من تثبيت Kotlin دعنا ننشئ برنامج Kotlin الأول في الخطوة التالية.

الخطوة 4) برنامج Kotlin الأول

ابدأ بمشروعك الأول في Kotlin. من قائمة File اختر الخيار New ثم حدد الآخرين وابدأ بمشروع Kotlin جديد من القائمة.

الآن عليك تحديد اسم للمشروع ثم ستکون جاهز للعمل مع Kotlin.

من خلال هذه الخطوات البسيطة يكون من السهل تنزيل Eclipse و Kotlin على نظامك وكتابة برنامج Kotlin الأول الخاص بك على الفور.

الهندسة المعمارية لكوتلن

تعتبر البنية الجيدة مهمة للتطبيق لتوسيع نطاق ميزاته وتلبية توقعات قاعدة المستخدمين النهائيين. تمتلك Kotlin بنيتها المعمارية الخاصة والمميزة لتخصيص الذاكرة والحصول على نتائج عالية الجودة للمطورين والمستخدمين النهائيين.

تصمم كوروتينات وفئات Kotlin اللبنة (core) بطريقة لإنتاج كود أقل وتضخيم الأداء وتعزيز الكفاءة. هناك مجموعة متنوعة من السيناريوهات حيث يمكن لمترجم kotlin أن يتفاعل بشكل مختلف خاصةً عندما يخصص أنواعًا مختلفة من اللغات.

لغة Kotlin

في الرسم التخطيطي للهندسة المعمارية من الواضح أن تنفيذ الكود يتم في ثلاث خطوات سهلة.

في الخطوة الأولى تتم إضافة “kt” أو ملف kotlin إلى المترجم.

الخطوة الثانية يقوم مترجم Kotlin بتحويل الكود إلى كود binary.

الخطوة الثالثة يتم وضع الكود الثانوي في Java Virtual Machine ويتم تنفيذه بواسطة JVM.

عندما يتم تشغيل ملفين من البايت المشفرة على JVM فإنهم يشعلون الاتصال المتبادل فيما بينهم وهذا هو السبب في أن الميزة في Kotlin تسمى interoperability for java ook birth.

يحدث ترشيح Kotlin إلى JavaScript عندما Kotlin تستهدف JavaScript.

عندما يتم اختيار هدف JavaScript فإن أي كود من Kotlin هو جزء من المكتبة التي تبحر باستخدام Kotlin يتم سكبها باستخدام JavaScript. ومع ذلك يتم استبعاد Java Development Kit (JDK) أو أي مكتبة جافا مستخدمة.

لا يتم أخذ ملف بخلاف Kotlin في الاعتبار أثناء هذه العملية. أثناء استهداف JavaScript يتم تحويل ملف kt إلى ES5.1 بواسطة مترجم Kotlin لإنشاء کود ثابت لجافا سكريبت. يسعى مترجم Kotlin إلى إخراج الحجم الأمثل وإمكانية التشغيل البيني مع الوحدة النمطية الحالية ونفس الوظيفة مع المكتبة القياسية والإخراج الذي يمكن قراءته بواسطة JavaScript.

يتضح من المناقشة أن برنامجي Kotlin Compilers يمكنهم إنشاء رمز أكثر كفاءة وكفاءة واستقلالية ينتج عنه منتج برمجي عالي الأداء.

متغيرات لغة Kotlin

تُستخدم المتغيرات لتخزين البيانات المراد معالجتها والإشارة إليها في البرنامج. إنها في الأساس وحدة لتخزين البيانات ووضع العلامات عليها في انتظار الاسم المستعار التعريفي بحيث يكون البرنامج سهل القراءة وسهل الفهم. بمعنى آخر يمكننا القول أن المتغيرات هي حاويات لجمع المعلومات.

في Kotlin يجب التصريح عن جميع المتغيرات. ومع ذلك إذا لم يتم التصريح عن أي متغير فإنه يظهر ليكون خطأ في بناء الجملة. أيضًا يحدد إعلان المتغير نوع البيانات التي نسمح بتخزينها في المتغير. في Kotlin يمكن تعريف المتغيرات باستخدام الكلمات الأساسية val و var. هنا صيغة التصريح عن المتغيرات في Kotlin:

Var day = "Monday"
Var number = 3

هنا أعلنا عن المتغير المحلي day الذي قيمته ” Monday” ونوعه String ومتغير محلي آخر number قيمته 3 ونوعه Int.

عادة ما يتم التصريح عن المتغيرات المحلية وتهيئتها في نفس الوقت. يمكننا أيضًا إجراء عمليات معينة أثناء تهيئة متغير Kotlin.

يمكننا إجراء عملية على متغير من نفس نوع البيانات كما هو الحال هنا num1 و num2 كلاهما من نفس نوع البيانات الذي هو Int في حين أن day من نوع بيانات السلسلة. سيظهر خطأ. إليك أسلوب آخر كيف يمكنك تحديد المتغيرات في Kotlin.

var day : String = "COURSEE"
var num : Int = 100

دعونا نرى كيف تختلف الكلمات الرئيسية var و val عن بعضها البعض.

Var

Var يشبه المتغير العام المستخدم في أي لغة برمجة يمكن استخدامه عدة مرات في برنامج واحد. علاوة على ذلك يمكنك تغيير قيمتها في أي وقت في البرنامج. لذلك يُعرف باسم المتغير القابل للتغيير.

فيما يلي مثال على المتغير القابل للتغيير في Kotlin:

var num1 = 10
Var num2 = 20
Num1 = 20
print(num1 + num2) // output : 40

هنا يتم استبدال قيمة num1 التي تساوي 20 بالقيمة السابقة لـ num1 التي تساوي 10. لذلك يكون ناتج num1 + num2 هو 40 بدلاً من 30.

Val

يشبه Val متغيرًا ثابتًا ولا يمكنك تغيير قيمته لاحقًا في البرنامج ولا يمكن تخصيص أي منهما عدة مرات في برنامج واحد ويمكن استخدامه مرة واحدة فقط في برنامج معين. يُعرف بأنه متغير ثابت.

فيما يلي مثال لبرنامج Kotlin للمتغيرات الثابتة في Kotlin:

Val num1 = 10
Var num2 = 20

هنا لا يمكن الكتابة فوق قيمة num1 التي تساوي 10 بالقيمة الجديدة لـ num1 التي تساوي 20 حيث إنها من نوع val ثابت. لذلك يكون الناتج 30 بدلاً من 40.

ملاحظة: في Kotlin تُفضل المتغيرات الثابتة على المتغيرات القابلة للتغيير.

أنواع بيانات لغة Kotlin

أنواع البيانات هي مجموعة من القيم ذات الصلة وتصف العمليات التي يمكن تشغيلها عليها. على غرار لغات البرمجة الأخرى تمتلك Kotlin أيضًا مجموعة محددة مسبقًا من أنواع البيانات مثل Int و Boolean و Char و Double وما إلى ذلك.

في Kotlin يعتبر كل نوع بيانات ككائن.

الآن في هذا البرنامج التعليمي الأساسي Kotlin دعنا نتعمق أكثر في أنواع البيانات المحددة مسبقًا المستخدمة في Kotlin.

أعداد :

يقدم Kotlin مجموعة من أنواع البيانات المضمنة المعروفة بالأرقام والتي يتم تصنيفها بشكل فرعي على أنها أعداد صحيحة وأرقام Floating-Point.

  • Integers:
    Integers هي فئة الأعداد التي تتكون من أربعة أنواع: byte, Short, Int, Long
  • أرقام Floating Point:
    أرقام الفاصلة العائمة هي الأرقام غير الصحيحة التي تحمل بعض القيم العشرية.
  • قيمة منطقية (Booleans):
    نوع البيانات المنطقية في Kotlin مهم لتمثيل القيم المنطقية. لا يوجد سوى قيمتين محتملتين في Boolean إما true أو false.
  • Character:
    يتم تمثيل الأحرف في Kotlin بمساعدة الكلمة الأساسية المسماة char. في Kotlin علامات الاقتباس المفردة تمثل إعلان شار. في جافا تُستخدم الأحرف أحيانًا كأرقام غير ممكنة في kotlin.

فمثلا:

val onechar = 'x'
print(onechar) //  output : x
Val onedigit = '7'
print(onedigit) // output : 7

تبدیل انواع البیانات في Kotlin

نوع التحويل هو إجراء لتحويل نوع واحد من متغيرات البيانات إلى متغير نوع بيانات آخر. إنه معروف أيضًا باسم Type Casting.

بشكل بارز في Java يتم دعم النوع الضمني من تحويل النوع من نوع بيانات أصغر إلى نوع بيانات أكبر.

For Example : int abc = 15;
Long bcd = abc; // compiles successfully

ومع ذلك في kotlin لا يتم دعم التحويل الضمني لنوع بيانات أصغر إلى نوع بيانات أكبر على الإطلاق ولا يمكن تحويل نوع البيانات int إلى نوع بيانات long بشكل ضمني.

For Example : var abc = 15
Val bcd : Long = abc // error

ومع ذلك في Kotlin يتم إجراء تحويل النوع بشكل صريح. هنا تأتي إرشادات الوظائف المساعدة التي توجه تحويل متغير نوع بيانات إلى آخر.

هناك وظيفة مساعدة معينة مملوكة مسبقًا (pre – owned) لتحويل نوع بيانات إلى آخر:

toInt()

toByte()

toShort()

toChar()

toLong()

toFloat()

toDouble()
var abc = 15
Val bcd : Long = abc.toLong() // compiles successfully

عوامل تشغيل لغة Kotlin

عوامل التشغيل هي أحرف أو رموز مهمة وخاصة تؤكد العمليات في المعاملات التي تحتوي على متغيرات وقيم. في Kotlin هناك مجموعة من العوامل المستخدمة في عمليات مختلفة مثل العمليات الحسابية وعمليات التخصيص وعمليات المقارنة وما إلى ذلك.

عوامل التشغيل الحسابية

تُستخدم العوامل الحسابية للجمع والطرح والضرب والقسمة والمعامل.

عوامل تشغيل Kotlin

فمثلا:

var x = 10
var y = 20
var z = ( ( x + y ) * ( x + y ) ) / 2   

هنا ناتج الكود التالي هو 45.

عوامل المقارنة

يتم استخدام عامل المقارنة لمقارنة قيمتين أو متغيرين أو رقمين. يتم استخدامه مع أكبر من الرمز (>) أقل من الرمز (<) ويساوي الرمز (==) ، لا يساوي الرمز (! =) ، أكبر من يساوي الرمز (> =) أقل من يساوي الرمز (<=). دائمًا ما ينتج عنه true أو false.

فمثلا:

var x = 10
Var y =20
Var z = x < y // Output : true
Var w = x > y // Output : false
Var m = x == y // Output : false

عوامل الزيادة والنقصان

يتم استخدام عوامل الزيادة والنقصان لزيادة قيم المتغير أو الرقم وإنقاصها. يتم استخدامه بمساعدة رموز مثل ++ و -.

مثلا:

var a = 10
var b = 20
var c = a++ // Output: 11
var d = b— //Output : 19     

مشغلي التخصيص (Assignment Operators)

تُستخدم عوامل التعيين لتعيين القيم الحسابية التي يتم تشغيلها.

var x = 10
var y = 20
var x + = y // Output : 30
Var y - = x // Output : 10
Var x * = y // Output : 200

مصفوفات (Arrays) لغة Kotlin

المصفوفة هي مجموعة متجانسة من أنواع البيانات وهي واحدة من أكثر أنواع البيانات الأساسية المستخدمة لتخزين نفس أنواع البيانات في موقع الذاكرة المتجاورة. تعتبر المصفوفة مهمة لتنظيم البيانات في أي لغة برمجة بحيث يسهل البحث أو الفرز في مكان واحد لتخزين البيانات المتعددة.

في Kotlin تعد المصفوفات تعاونًا متغيرًا من نفس أنواع البيانات بدلاً من كونها أنواع بيانات أصلية.

فيما يلي بعض خصائص المصفوفة في Kotlin

  • لا يمكن تغيير حجم المصفوفة بمجرد الإعلان عنها.
  • المصفوفات في Kotlin قابلة للتغيير.
  • يتم تخزين المصفوفات في مواقع ذاكرة متجاورة.
  • يمكن الوصول إلى مصفوفة بمساعدة index مثل [1] ، [2] ، وما إلى ذلك.
  • يبدأ فهرس المصفوفة بصفر وهو [0].

في Kotlin يمكن تعريف المصفوفة بدالتین مختلفتين:

باستخدام الدالة arrayOf

في Kotlin هناك استخدام كبير لوظائف المكتبة. إحدى وظائف المكتبة هذه هي دالة arrayOf والتي تُستخدم لتعريف مصفوفة عن طريق تمرير قيم المتغيرات إلى الوظيفة.

على سبيل المثال: تعريف ضمني لنوع المصفوفة باستخدام الدالة arrayOf

val x = arrayOf(1,2,3,4,5,6,7,8,9)

باستخدام Array Constructor

في Kotlin توجد فئة باسم Array. لذلك من الممكن استخدام مصفوفة من المُنشئ لإنشاء مصفوفة. تحتوي المصفوفة في المُنشئ على معلمتين رئيسيتين.

ما هو فهرس المصفوفة في Kotlin؟

الدالة التي يكون فيها فهرس المصفوفة مقبولاً لإرجاع القيمة الأولية للفهرس.

فمثلا:

val abc = Array(7 , { i -> i*1})

هنا قيمة المصفوفة هي 7 ويستخدم تعبير lambda لتهيئة قيم العنصر.

هناك أيضًا طرق مختلفة للوصول إلى المصفوفات وتعديلها باستخدام وظائف معينة. لذلك هناك وظيفتان للأعضاء get  و set والتي يتم استخدامها للوصول إلى كائنات مصفوفة الفئة.

فمثلا:

val x = arrayOf(10,20,30,40,50,60,70,80,90)
val y = x.get(0) // Output 10

هنا، الناتج هو 10 لأن القيمة في index المصفوفة 0 هي 10

ملاحظة: تأخذ get قيمًا مفردة فقط

فمثلا:

val x = arrayOf(10,20,30,40,50,60,70.80.90)
val y = x.set(2, 3) //

الاخراج: 30 40

هنا الناتج هو 30 و 40 لأن القيمة في الفهرس 2 للمصفوفة هي 30 وفي الفهرس 3 هي 40.

ملاحظة: تأخذ set قيمًا متعددة من المصفوفة.

سلاسل (Strings) لغة Kotlin

السلسلة هي نوع بيانات أساسي في أي لغة برمجة. السلسلة ليست سوى سلسلة من الأحرف. تمثل فئة String سلاسل الأحرف. في Kotlin كل السلاسل هي كائنات من فئة String مما يعني أن السلاسل الحرفية يتم تنفيذها كمثيلات للفئة.

بناء الجملة:

Val myString = "Hey there!"

مجموعة (Collection) Kotlin

تحتوي المجموعة على عدة كائنات من نفس النوع وتسمى هذه الكائنات في المجموعة elements أو items. يمكن أن يساعد التجميع في تخزين البيانات واستردادها ومعالجتها وتجميعها.

أنواع المجموعات:

مجموعة غير قابلة للتغيير:

يدعم هذا النوع من المجموعات وظائف القراءة فقط. لا يمكن تعديل عناصرها.

تشمل الطرق:

List – listOf() and listOf<T>()
Set – setOf()
Map – mapOf()

مجموعة متغيرة:

وهو يدعم وظائف القراءة والكتابة.

تشمل الطرق:

List – mutableListOf(),arrayListOf() and ArrayList
Set – mutableSetOf(), hashSetOf()
Map – mutableMapOf(), hashMapOf() and HashMap

دوال Kotlin

الدوال في أي لغة برمجة هي مجموعة من العبارات المتشابهة المخصصة لأداء مهمة محددة. تسمح الوظائف للبرنامج بتقسيمه إلى مجموعات تعليمات برمجية صغيرة متنوعة. يزيد هذا التقسيم من الكود من قابلية قراءة الكود وإعادة استخدام الكود ويجعل البرنامج سهل الإدارة.

كما تُعرف Kotlin بأنها لغة مكتوبة بشكل ثابت. هنا يتم استخدام الكلمة الرئيسية ” fun” للإعلان عن وظيفة. في Kotlin هناك نوعان من الوظائف التي تعتمد فقط على توفرها في المكتبة القياسية أو تعريف المستخدم.

دالة المكتبة القياسية (Standard library function)
دالة محددة من قبل المستخدم (User-defined function)

دوال Kotlin

الآن دعونا نناقشهم بالتفصيل مع أمثلة كود Kotlin.

وظيفة المكتبة القياسية (Standard Library Function)

إنها وظائف مكتبة مضمنة يمكن تعريفها ضمنيًا ومتاحة للاستخدام.

على سبيل المثال 2:

fun main(args: Array<String>){  
var number = 9  
var result = Math.sqrt(number.toDouble())  
print("$result")  
}  

انتاج:

3.0

sqrt هي دالة معرفة في المكتبة والتي تُرجع الجذر التربيعي لرقم.

print تطبع وظيفة الرسالة إلى تدفق إخراج قياسي.

وظيفة محددة من قبل المستخدم

كما يوحي الاسم عادة ما يتم إنشاء هذه الوظائف من قبل المستخدمين ويمكن استخدامها للبرمجة المتقدمة.

هنا يتم الإعلان عن الوظائف باستخدام الكلمة الرئيسية ” fun “.

على سبيل المثال 3:

fun functionName(){
//body of the code
}

هنا نستدعي الوظيفة لتشغيل الأكواد داخل functionName

أمثلة دالة Kotlin:

fun main(args: Array<String>){  
    sum()  
    print("code after sum")  
}  
fun sum(){  
    var num1 =8  
    var num2 = 9  
    println("sum = "+(num1+num2))  
}

انتاج:

sum = 17

code after sum

معالجة الاستثناءات (Exception Handling) في Kotlin

يُعرَّف الاستثناء في البرمجة بأنه مشكلة وقت تشغيل تحدث في البرنامج مما يؤدي إلى إنهائه. يمكن أن تحدث هذه المشكلة بسبب مساحة ذاكرة أقل أو مجموعة من السندات أو ظروف مثل القسمة على صفر. للحد من هذه الأنواع من المشكلات في تنفيذ التعليمات البرمجية يتم استخدام معالجة الاستثناءات.

يتم تعريف معالجة الاستثناءات على أنها التقنية التي تعالج مشاكل وقت التشغيل وتحافظ أيضًا على تدفق البرنامج أثناء التنفيذ.

يستخدم Kotlin تعبير ” throw” لرمي كائن exception. هنا جميع فئات الاستثناء هي من نسل فئة Throwable.

Throw MyException(“throws exception”)

هناك أربعة أنواع من الاستثناءات في معالجة الاستثناءات. هم انهم:

  • try – تحتوي هذه الكتلة على عبارات قد تخلق الاستثناء. يتبعه دائمًا إما catch أو finally أو كليهما.
  • catch – يمسك استثناء تم طرحه من كتلة try.
  • finally – يتحقق دائمًا من معالجة الاستثناء أم لا.
  • throw – يتم استخدامه لطرح استثناء بشكل صريح.

Try catch

في كتلة try-catch في معالجة الاستثناءات يحيط   tryالكود والذي قد يطرح استثناءًا ويلتقط catch التعبير ويتعامل معه.

بناء جملة try catch block:

try{    
//code with exception    
}catch(e: SomeException){  
//code handling exception  
}    

بناء جملة try مع finally:

try{    
//code with exception    
}finally{  
// code finally block  
}   

Finally

في Kolin يتحقق Finally دائمًا مما إذا كان يتم التعامل مع الاستثناء أم لا مما يجعله بيانًا مهمًا جدًا لمعالجة الاستثناء.

على سبيل المثال 4:

في مقتطف التعليمات البرمجية هذا يحدث الاستثناء ويتم التعامل معه.

fun main (args: Array<String>){  
    try {  	
        val data =  9/ 0  
        println(data)  
    } catch (e: ArithmeticException) {  
        println(e)  
    } finally {  
        println("finally block executes")  
    }  
    println("write next code")  
}  

انتاج:

java.lang.ArithmeticException: / by zero
finally block executes
write next code

Throw

Throw يرمي استثناء صريح. علاوة على ذلك يتم استخدامه لطرح الاستثناءات المخصصة.

بناء الجملة:

Throw SomeException ()

Throw SomeException ()

مثال:

fun main(args: Array<String>) {
    try{
        println("Exception is not thrown yet")
        throw Exception("Everything is not well")
        println("Exception is thrown")
    }
    catch(e: Exception){
        println(e)

    }
    finally{
        println("You can't ignore me")
    }
}

انتاج:

لغة Kotlin

أمان Null

تميز أنواع الأنظمة التي تدعم Kotlin بشكل كبير بين المراجع التي يمكن أن تحمل مراجع null و التي لا يمكن أن تحمل مراجع لاغية null. Kotlin هي لغة أمان null تهدف إلى إزالة استثناء null pointer أو null reference من الكود والذي يُعرف عمداً باسم خطأ مليار دولار.

العائق الأكثر شيوعًا للعديد من لغات البرمجة هو أنه أثناء الوصول إلى عضو في مرجع null ينتج عنه NullPointerException والذي قد يكون بسبب عامل التشغيل (!!) أو المنشئ this يستخدم في مكان آخر ويمرر في نقطة أخرى من التعليمات البرمجية. تتطلب الخاصية nullable تأكيدًا لل null check في كل مرة قبل استخدامها.

في Kotlin يميز النظام بين المراجع null والمراجع التي لیست null.

على سبيل المثال لا يمكن أن يحتوي متغير String على null:

fun main(args: Array<String>){
    var x: String = "Coursee is the only place where you will get maximum technical content!" // Not Null by default
    println("x is : $x")
    // You cannot assign null variable to not-nullable variables 
    // a=null // it will give compilation error
    var y: String? = "Thanks for visiting coursee" 
// Nullable Variable
    println("y is : $y")
    y = null
    println("y is : $y")
}

Kotlin OOPs

يسمح نهج البرمجة الشیئیة بتقسيم مقتطف التعليمات البرمجية المعقدة إلى كتل أكواد أصغر عن طريق إنشاء كائنات. تشترك هذه الكائنات في خاصيتين: الحالة (state) والسلوك (behavior).

فيما يلي بعض عناصر OOP التي سنناقشها مع أمثلة كود Kotlin:

فئة وكائنات (Class and Objects)

المنشئون (Constructors)

ميراث (Inheritance)

فئة مجردة (Abstract Class)

لغة Kotlin

class في Kotlin

أولًا قبل إنشاء كائن نحتاج إلى تحديد فئة تُعرف أيضًا باسم مخطط الكائن.

بناء الجملة:

class ClassName {
    // property
    // member function
    ... .. ...
}

كائنات Kotlin

أثناء تحديد فئة نحدد فقط مواصفات الكائن ولا يتم تخصيص أي معلمة أخرى مثل الذاكرة أو التخزين.

بناء الجملة:

var obj1 = ClassName()

Constructors في Kotlin

المُنشئ هو طريقة لتهيئة خصائص الفئة. إنها وظيفة عضو يتم استدعاؤها عند إنشاء كائن. لكن في Kotlin تعمل بشكل مختلف.

هناك نوعان من Constructors في Kotlin:

المُنشئ الأساسي (Primary constructor): طريقة مُحسَّنة لتهيئة class

بناء الجملة:

class myClass(valname: String,varid: Int) {  
    // class body  
}  

المُنشئ الثانوي (Secondary constructor): يساعد في إضافة منطق التهيئة.

الوراثة (Inheritance) في Kotlin

يحدث الميراث عندما يتم الحصول على بعض خصائص الفئة الأصلية من قبل class الفرعية. يُسمح بالوراثة عندما يكون لفئتين أو أكثر نفس الخصائص.

بناء الجملة:

open class ParentClass(primary_construct){
    // common code
  }class ChildClass(primary_construct): ParentClass(primary_construct_initializ){
    // ChildClass specific behaviours
  }

Abstract Class في Kotlin

الفئة المجردة هي فئة لا يمكن إنشاء مثيل لها ولكن يمكننا أن نرث الفئات الفرعية منها. تُستخدم الكلمة الرئيسية “abstract” للإعلان عن فئة مجردة.

open class humanbeings { 
    open fun Eat() { 
        println("All Human being Eat") 
    } 
} 
abstract class Animal : humanbeings() { 
    override abstract fun Eat() 
} 
class Cat: Animal(){ 
    override fun Eat() { 
        println("Cats also loves eating") 
    } 
} 
fun main(args: Array<String>){ 
    val lt = humanbeings() 
    lt.Eat() 
    val d = Cat() 
    d.Eat() 
}

انتاج:

حاضر ومستقبل لغة Kotlin

  • الحاضر:
    تستخدمة العديد من الشركات مثل Netflix و Pinterest و Corda Kotlin لإنشاء تطبيقات Android قوية.
    في فترة قصيرة من عام واحد من 2016 إلى 2017 أصبحت Kotlin تحظى بشعبية كبيرة بفضل ميزات البرمجة المذهلة.
    في عام 2017 أعلنت Google عن Kotlin كلغة برمجة رسمية لتطوير Android.
    يمكنك استبدال كود Java سريعًا بـ Kotlin لأنه قابل للتشغيل المتبادل بنسبة 100٪ مع Java و Android.
  • المستقبل:
    تطوير الألعاب
    تطوير تطبيقات الأجهزة المحمولة عبر الأنظمة الأساسية
    البرمجة النصية
    التعلم الآلي وتحليل البيانات

ملخص

Kotlin هي لغة برمجة اقترحتها JetBrains في عام 2010 للتطبيقات متعددة المنصات بموجب ترخيص Apache 2.0.

اسم Kotlin مشتق من اسم جزيرة Kotlin في مراسلات مشابهة لجافا بعد اسم جزيرة تسمى java.

في عام 2016 تم إطلاق الإصدار الأول v1.0 من Kotlin

لا تتطلب برامج Kotlin فاصلة منقوطة في برنامجها. هذا يجعل الكود أسهل وأكثر قابلية للقراءة.

Kotlin لمطوري Android هي لغة برمجة قائمة على OOPs حيث يمكن قطع خط الكود بنسبة تصل إلى 40٪ مما يجعل Kotlin خيارًا مثاليًا لتطوير البرامج أو الويب.

في Kotlin يجب الإعلان عن جميع المتغيرات باستخدام الكلمات الأساسية var و val.

على غرار لغات البرمجة الأخرى تمتلك Kotlin أيضًا مجموعة محددة مسبقًا من أنواع البيانات مثل Int و Boolean و Char و Double وما إلى ذلك.

في Kotlin هناك مجموعة من عوامل التشغیل المستخدمة في عمليات مختلفة مثل العمليات الحسابية وعمليات التخصيص وعمليات المقارنة وما إلى ذلك.

تعد المصفوفات تعاونًا متغيرًا من نفس أنواع البيانات بدلاً من كونها أنواع بيانات أصلية.

يتم تعريف المصفوفات باستخدام طريقتين – ArrayOF و Constructors.

Kotlin هي لغة null safety تساعد على إزالة استثناء null pointer أو null reference من الكود والذي يُطلق عليه خطأ مليار دولار.

المصدر

منشور ذات صلة
Kotlin Flow 3 Minutes

Kotlin Flow | شرح بسيط ومفهوم

سناء عبادي

هل سبق لك العمل مع RxJava؟ ماذا عن Sequences؟ اليوم سنتعرف على موضوع يمكن أن يكون بديلاً لاستخدام هذه الأداة وهو Kotlin Flow. في هذه المقالة على منصة كرسي التعليمية، سنقوم ببساطة بفحص هذا الموضوع معًا.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

السلة