les objets et singleton dans kotlin

Partager

Kotlin est un langages de programmation orienté objet qui apporte plusieurs fonctionnalités.Dans la plus part des langages de programmation orienté objet il existe le concept de classe où une classe est utilisée pour représenter un modèle de définition d’objets.

Kotlin ajoute à présent le concept d’objet pour représenter un objet d’une classe.

Par exemple dans les langages de programmation comme Java.Il arrive parfois qu’on a besoin de créer un objet d’une classe qui ne va exister qu’une seul fois quelque soit le nombre de fois l’objet est créé .On appelle cela un objet singleton.

Ou encore il arrive aussi parfois qu’on a besoin de créer directement un objet d’une classe dérivée sans créer la classe dérivée qu’on appelle encore objet d’une classe anonyme

Table des matières

La déclaration d’objet – Objet Singleton

Kotlin permet de facilement créer un objet singleton en utilisant la déclaration d’objet.Pour déclarer un objet vous devez utiliser le mot clé object suivi du nom de l’objet.

object MySingleton{
    
    fun work(){
        
    }
}

Vous pouvez ensuite faire référence à l’objet ou appelé une des ces méthodes comme suit

fun main(){
 MySingleton.work()
}

Notez que vous ne pouvez pas accéder à des objets local, c’est à dire des objets déclarés à l’intérieur d’une fonction qui n’est pas privée et qui n’est déclarée dans une classe .Mais vous pouvez déclarer un objet à l’intérieur de la déclaration d’un autre objet ou à l’intérieur d’une classe (non interne).

Les expressions d’objet – les objets anonymes

Les expressions d’objet dans kotlin vous permet de créer des objets sans explicitement déclarer une classe.

Cela est utile quand vous avez besoin de créer un objet qui dérive d’une autre classe ou quand vous avez besoin de créer un objet d’une classe qui implémente une interface sans créer explicitement cette classe.

button.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
               
            }
        })

Si vous souhaitez directement créer un objet d’une classe dérivée sans créer la classe dérivée avec une classe de base qui possède un constructeur, vous devez passez les paramètres au constructeur approprié de la classe de base comme suit.

fun main(){
    val base: Base=object:Base("Nom"){
        override fun afficher() {
            super.afficher()
        }
    }
    base.afficher()
}

 open class Base(val nom: String){
     open fun afficher(){

     }
}

Vous pouvez créer un objet d’une classe anonyme qui implémente une interface comme suit.

fun main(){
  val myInterface= object: MyInterface{
      override fun affiche() {
          
      }
  }
  myInterface.affiche()  
}

interface  MyInterface {
    fun affiche()
}

Notez que les objets anonymes ne peuvent être utilisés en tant que types que dans les déclarations locales et privées.

Si vous utilisez un objet anonyme comme type de retour d’une fonction publique ou comme type d’une propriété publique, le type réel de cette fonction ou de cette propriété sera le type de base déclaré de l’objet anonyme ou Any si vous n’avez déclaré aucun type de base . Les membres ajoutés à l’objet anonyme ne seront pas accessibles.

Exemple 1

class Base{
    private fun doIt()=object {
       val nom: String = "VIGAN"
    }
    fun  affiche(){
     val a:String=doIt().nom
     print(a)
    }
}

Dans cet exemple, la fonction doIt est privée et son type de retour est un objet.Vous pouvez appeler la fonction doIt et accéder à toutes les variables de l’objet qu’elle retourne tels que la variable nom.

La méthode doIt est appelée dans la méthode affiche pour pouvoir accéder à la variable nom

Vous pouvez ensuite appeler la méthode affiche comme suit

 val base =Base()
 base.affiche()

Exemple 2

class Base{
    public fun doIt()=object {
       val nom: String = "VIGAN"
    }
    fun  affiche(){
     val a:String=doIt().nom
     print(a)
    }
}

Dans cette exemple vous devez constater que lorsque la méthode doIt est public, vous ne pouvez pas accéder à ces variables.

Conclusion

Voila, nous sommes à la fin de ce tutoriel sur la déclaration et les expressions d’objet.J’espère que ce tutoriel vous aidera.A bientôt pour un nouveau tutoriel.

Si vous souhaitez encore allez plus loin vous pouvez lire ce tutoriel sur les objets compagnons dans kotlin.

Autres ressources

https://kotlinlang.org/docs/reference/object-declarations.html


Partager

Laisser un commentaire

Résoudre : *
6 + 17 =


%d