Kotlin in Hindi – Delegation

  • Introduction to kotlin delegation in Hindi
  • kotlin delegation by keyword in Hindi
  • Example of kotlin delegation in Hindi

Introduction to Kotlin Delegation

Delegation का concept कई modern programming languages जैसे की C# आदि में introduce किया गया है। लेकिन सभी language इसे अलग अलग तरह से implement करती है।

सभी languages delegation को एक feature की तरह implement नहीं करती है। ऐसी languages में delegation implement करने के लिए आपको एक delegation pattern design करना होता है जिसके लिए boilerplate code की आवश्यकता होती है।

जब आप किसी special feature को implement करने के लिए code template लिखते है तो वह boilerplate code कहलाता है। यह extra code होता है इससे program एक दुविधा भरे वन में तब्दील हो जाता है।

Kotlin Has Native Support For Delegation

दूसरी programming languages के विपरीत kotlin delegation के लिए native support provide करती है। Kotlin में delegation को language feature के रूप में implement किया गया है। 

Kotlin में delegation को implement करने के लिए by keyword को introduce किया गया है। इससे आप यह कह सकते है की kotlin में delegation एक language feature है। 

Passing Implementation to Another Object

Delegation एक mechanism होता है जिसके द्वारा एक class किसी code को खुद ना implement करके किसी दूसरी class को delegate कर देती है। इसके बाद जिस class को delegate किया जाता है वह class उस code का implementation provide करती है जो delegate करने वाली class द्वारा use किया जाता है।

उदाहरण के लिए आप class C को interface I implement करवाना चाहते है। Interface I में बहुत सारे methods available है। आप चाहते है की class C का code clean रहे।

Interface I
{
     //methods of interface
}

 

class C : I by D   //delegating implementation to class D
{
    //methods of class C
    //call methods of interface I from class D
}

class D: I
{
    //Implementation of methods of Interface I
    //also have methods from different interface
}

ऐसे में आप interface I के implementation को किसी दूसरी class D को delegate कर सकते है और उस class में उन सभी methods को implement कर सकते है। इसके बाद जरुरत पढ़ने पर class C में उन methods को normally call किया जा सकता है।

Alternative to Inheritance

Delegation को inheritance के विकल्प के रूप में देखा जाता है। जिस प्रकार inheritance से एक class दूसरी class के methods को use करती है। उसी प्रकार delegation में भी एक class दूसरी class के methods को use करती है। 

यँहा पर फर्क सिर्फ इतना है की वो methods class के ना हो कर एक interface के होते है और केवल उस class से वे ही methods call होते है जो interface में define किये गए है। उस class के बाकी methods को use नहीं किया जा सकता है।

Delegation inheritance से बेहतरीन होता है। क्योंकि delegation आपको run time flexibility provide करता है। एक interface को कई अलग अलग प्रकार से implement किया जा सकता है और program run होने के दौरान delegation को change किया जा सकता है और किसी दूसरे implementation को implement किया जा सकता है।

यह flexibility inheritance में available नहीं होती है। Inheritance में एक ही type का implementation होता है। यानि आप वही implementation use करते है जो base class में available होता है।

by Keyword

Kotlin delegation implement करने के लिए आपको by keyword provide करती है। यह keyword उस class को दर्शाता है जिसे आप delegate करना चाहते है।

interface dInterface
{
    //methods of dInterface
}

 

class delegatingClass : dInterface by delegatedClass   //delegating using by
{
   //methods of delegating class
}

class delegatedClass: dInterface
{
    //implementing dInterface Methods
}

सबसे पहले आप वह class define करते है जो delegate के रूप में कार्य करेगी। इसके बाद आप delegate करने वाली class के नाम के बाद colon लगाकर interface को implement करते है। Interface के नाम के बाद by keyword define किया जाता है। इसके बाद उस class का नाम define किया जाता है जो delegate के रूप में कार्य कर रही है।

Example of Kotlin Delegation

interface dInterface
{
    fun interfaceMessage()
}

 

class delegatingClass:dInterface by delegatedClass
{
    fun classMessage()
    {
       print(“Hello”)
    }
}

class delegatedClass:dInterface
{
    fun interfaceMessage()
    {
        print(“Hi”)
    }
}

fun main(args: Array<String>)
{
    val obj = delegatingClass()
   
    obj.interfaceMessage()
    obj.classMessage()
}