كوتلين "Kotlin" الكلاس والخصائص Class & properties
كوتلين "Kotlin" : خيارك الأول لبرمجة تطبيقات الأندرويد ستختارها وستكون راض عنها 😋 , لمن لا يعلم شيئاً عنها فقد أسلفنا أنها ابتكرت عن طريق شركة JetBrains وهي الشركة التي تقف وراء IntelliJ و  Android Studio .

كوتلين "Kotlin" لغة حديثة جدا وجميلة و يمكن استخدامها مع ملفات جافا  لذلك لا يتطلب الامر منك  تحويل المشروع بأكمله.

في هذا المقال سأريكم كيف أن كتابة الكود الذي تستعمله في تطبيقات الأندرويد "غالبا ما كنت تستخدم جافا " أن كتابته عن طريق كوتلين أسرع وأبسط ...!👍😋

اقرأ أيضاً:
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
         مصادر تعليمية أخرى لتعليم البرمج بلغة كوتلين Kotlin
        Kotlin اللغة الرسمية لتطوير وبرمجة تطبيقات أندرويد.
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

لنبدأ بتعريف موحد للكلاس في جافا:
Class & properties-kotlin

كلاسات جافا القياسية جدا، لدينا كلاس تسمى 'Car' وكلاس 'Ford' وهو امتداد ل car.
في كوتلين نفس الرمز سيكون كالتالي:
"Kotlin" الكلاس والخصائص

عدد الاسطر اللازمة لكتابة الكود بلة جافا 15سطر من التعليمات البرمجية , اما بلغة كوتلين هي 3 أسطر فقط !
في كوتلين يمكنك تعريف constructors مضمنة في تعريف فئة وكان لديك getters  و setters اعتمادا على أساس رؤية الحقول .

يتم استبدال الكلمة الرئيسية ‘extends’ في جافا فقط ب ':' ويمكنك أيضا تضمين مضمون الكلاس (in this case: Car(“Ford”) )..
ال"Constructors" و " methods " أيضاً تدعم قيم افتراضية وهذا شئ لا توفره لغة جافا :

من الممكن ومن الممكن أيضا أن يكون لدينا حقل مسمى لإنشاء كائن "object" وهذا يساعد في حل مشكلة رئيسية في لغة جافا حسب وجهة نظري , ولفهم معنى أن يستعمل الحقل لانشاء كائن تخيل كلاس لكتاب في جافا مع arameter as a string واحد:

من هو “George” ? هل هو ال author? ام هو اسم ال  book? او هو ال book? في لغة  Kotlin يمكنك غمل هذا كالتالي:
بالتأكيد أفضل!
في لغة Kotlin يمكنك اضافة كلمة دلالية  ‘data’ في بداية ال  class, واذا قمت بذلك , فان ال  compiler سيضيف هذه  ال ميثودز free:


  • equals()/hashCode() pair,                                                                               hh
  • toString() of the form "Ford(name=Ford, model=Focus)",                           hh
  • componentN()                                                                                                hh
  • copy()                                                                                                             hh


اذا بكلمة دلالية واحده ستحصل كود اكثر for free! وسأريك ماذا تعنيدالة  componentN()           hh  وهذا  شئ لا يمكن أن تفعلة في لغة جافا . هذه هي الفكرة التي يمكن ان  تدمر ال declaration of your class:
أيضا نسخة ال  method مهمة جدا لانشاء كائن اخر من السابق له:
في لغة Kotlin يمكن ان تكون ال property أ:
 var او val . وتعتقد أن val حقل نهائي في جافا (ولهذا يمكن تعديلة) و var a mutable property لايجب ان تكون null, واذا كنت ترغب بان يكون لديك a mutable nullable property فانت تحتاج للتعريف بالتعبير “?”:
يمكن الوصول بامان ل a property والتي تكون  null عن طريق الكلمة الدلالية  ‘?’:
في الاندرويد  معظم الوقت تحتاجه لانتظار  callbacks من ال  framework لانشاء كائنات , وهذا يعني انها تطلب  ان تكون معرفة ب null  وان يكون ال  framework جاهزا ومن ثم  وفي كل مرة تستعمل  هذه الكائنات  فانت تحتاج للتاكد من انها null ام لا.

في لغة Kotlin تحل هذه المشكلة بالكلمة الدلالية اللاتينية  لخصائص ال var  :
لاحظ انت لا تحتاج لعمل  ‘name?’ لكن فقط  “name’ لان الكلمة اللاتينية الدلالية  تخبر ال compiler بأنك تريد تعبئة  ال property قبل استعمالها!