الفئات الكائنات في كوتلين Kotlin Class & Object

الفئات الكائنات في كوتلين

 Kotlin Class & Object

الفئات الكائنات في كوتلين Kotlin Class & Object

في هذا الفصل ، سوف نتعلم أساسيات البرمجة الموجهة للكائنات (OOP) باستخدام Kotlin.  سنتعرف على الفصل والكائن وكيفية اللعب مع هذا الكائن.  وفقًا لتعريف OOP ، تعتبر الفئة مخططًا لكيان وقت التشغيل والكائن هو حالته ، والتي تتضمن كلاً من سلوكه وحالته.  في Kotlin ، يتكون إعلان الفصل من رأس الفصل وهيئة الفصل محاطة بأقواس مجعدة ، على غرار Java.
Class myClass { // class Header 

   // class Body
}

مثل Java ، يسمح Kotlin أيضًا بإنشاء كائنات متعددة للفصل ولك مطلق الحرية في تضمين أعضاء ووظائف الفصل.  يمكننا التحكم في رؤية متغيرات أعضاء الفصل باستخدام كلمات رئيسية مختلفة سنتعلمها في الفصل 10 - التحكم في الرؤية.  في المثال التالي ، سنقوم بإنشاء فئة واحدة وكائنها الذي يمكننا من خلاله الوصول إلى أعضاء البيانات المختلفين لتلك الفئة.

class myClass {
   // property (data member)
   private var name: String = "ahmefalmahallawi.point"
   
   // member function
   fun printMe() {
      print("You are at the best Learning website Named-"+name)
   }
}
fun main(args: Array<String>) {
   val obj = myClass() // create obj object of myClass class
   obj.printMe()
}

تعطي الشفرة المذكورة أعلاه المخرجات التالية في المستعرض ، حيث ندعو printMe () myClass باستخدام الكائن الخاص به.
You are at the best Learning website Named- ahmedalmahallawi.point


 الفئة المتداخلة Nested Class

بحكم التعريف ، عندما يتم إنشاء فئة داخل فصل آخر ، يتم استدعاؤها كصف متداخل.  في Kotlin ، تكون الفئة المتداخلة ثابتة افتراضيًا ، وبالتالي يمكن الوصول إليها دون إنشاء أي كائن من هذه الفئة.  في المثال التالي ، سنرى كيف تفسر Kotlin فئتنا المتداخلة.

fun main(args: Array<String>) {
   val demo = Outer.Nested().foo() // calling nested class method
   print(demo)
}
class Outer {
   class Nested {
      fun foo() = "Welcome to The ahmedalmahallawi.com"
   }
}
الجزء أعلاه من الشفرة سوف ينتج عنه الإخراج التالي في المتصفح.

Welcome to The ahmedalmahallawi.com 
الفئة الداخلية Inner Class  
عندما يتم تمييز فئة متداخلة على أنها "داخلية" ، فسيتم استدعاؤها كفئة داخلية.  يمكن الوصول إلى فئة داخلية بواسطة عضو بيانات الفئة الخارجية.  في المثال التالي ، سوف نصل إلى عضو بيانات الطبقة الخارجية.

fun main(args: Array<String>) {
   val demo = Outer().Nested().foo() // calling nested class method
   print(demo)
}
class Outer {
   private val welcomeMessage: String = "Welcome to the ahmedalmahallawi.com"
   inner class Nested {
      fun foo() = welcomeMessage
   }
}
سوف تعطي الشفرة المذكورة أعلاه المخرجات التالية في المستعرض ، حيث ندعو الفئة المتداخلة باستخدام المُنشئ الافتراضي الذي توفره المجمعات Kotlin في وقت التجميع.

Welcome to the ahmedalmahallawi.com

الفئة الداخلية المجهولة Anonymous Inner Class

الطبقة الداخلية المجهولة مفهوم جيد جدًا يجعل حياة المبرمج سهلة للغاية.  عندما نقوم بتنفيذ واجهة ، يأتي مفهوم الكتلة الداخلية المجهولة في الصورة.  يُعرف مفهوم إنشاء كائن أو واجهة باستخدام مرجع كائن وقت التشغيل بالفئة المجهولة.  في المثال التالي ، سنقوم بإنشاء واجهة وسنقوم بإنشاء كائن من تلك الواجهة باستخدام آلية فئة Anonymous Inner.

fun main(args: Array<String>) {
   var programmer :Human = object:Human // creating an instance of the interface {
      override fun think() { // overriding the think method
         print("I am an example of Anonymous Inner Class ")
      }
   }
   programmer.think()
}
interface Human {
   fun think()
}
الجزء أعلاه من الشفرة سوف ينتج عنه الإخراج التالي في المتصفح.

I am an example of Anonymous Inner Class  
الأسماء المستعارة Type Aliases
الأسماء المستعارة للنوع هي خاصية مترجم Kotlin.  يوفر مرونة في إنشاء اسم جديد من نوع موجود ، ولا يُنشئ نوعًا جديدًا.  إذا كان اسم النوع طويلًا جدًا ، يمكنك إدخال اسم أقصر واستخدامه للاستخدام في المستقبل بسهولة.  الأسماء المستعارة للنوع مفيدة حقًا للنوع المعقد.  في أحدث إصدار ، ألغت Kotlin دعم الأسماء المستعارة للنوع ، ومع ذلك ، إذا كنت تستخدم إصدارًا قديمًا من Kotlin فقد تكون استخدمته كما يلي -
typealias NodeSet = Set<Network.Node>
typealias FileTable<K> = MutableMap<K, MutableList<File>>