En aquest tema, explorarem dos conceptes importants en Kotlin: les declaracions d'objectes i els objectes companys. Aquests conceptes són fonamentals per entendre com gestionar instàncies úniques i membres estàtics en Kotlin.

Declaracions d'Objectes

Què és una Declaració d'Objecte?

Una declaració d'objecte en Kotlin permet crear una única instància d'una classe directament. Aquesta instància és un singleton, és a dir, només hi ha una instància d'aquesta classe en tota l'aplicació.

Sintaxi

object MySingleton {
    val name = "Singleton"
    fun printName() {
        println(name)
    }
}

Explicació del Codi

  • object MySingleton: Declara un objecte anomenat MySingleton.
  • val name = "Singleton": Defineix una propietat name dins de l'objecte.
  • fun printName(): Defineix una funció printName dins de l'objecte.

Exemple Pràctic

fun main() {
    MySingleton.printName()  // Sortida: Singleton
}

Avantatges de les Declaracions d'Objectes

  • Instància Única: Assegura que només hi ha una instància de la classe.
  • Inicialització Lazy: L'objecte es crea només quan s'accedeix per primera vegada.
  • Fàcil Accés: No cal crear una instància explícitament; es pot accedir directament.

Objectes Companys

Què és un Objecte Company?

Un objecte company és un objecte declarat dins d'una classe que permet definir membres estàtics. A diferència de les declaracions d'objectes normals, els objectes companys poden accedir als membres privats de la seva classe contenedora.

Sintaxi

class MyClass {
    companion object {
        val name = "Companion"
        fun printName() {
            println(name)
        }
    }
}

Explicació del Codi

  • class MyClass: Declara una classe anomenada MyClass.
  • companion object: Declara un objecte company dins de MyClass.
  • val name = "Companion": Defineix una propietat name dins de l'objecte company.
  • fun printName(): Defineix una funció printName dins de l'objecte company.

Exemple Pràctic

fun main() {
    MyClass.printName()  // Sortida: Companion
}

Avantatges dels Objectes Companys

  • Membres Estàtics: Permet definir membres estàtics dins d'una classe.
  • Accés als Membres Privats: Pot accedir als membres privats de la classe contenedora.
  • Inicialització Lazy: L'objecte company es crea només quan s'accedeix per primera vegada.

Comparació entre Declaracions d'Objectes i Objectes Companys

Característica Declaracions d'Objectes Objectes Companys
Instància Única
Inicialització Lazy
Membres Estàtics No
Accés als Membres Privats No
Definició Fora d'una Classe No

Exercicis Pràctics

Exercici 1: Declaració d'Objecte

Crea una declaració d'objecte anomenada Database amb una propietat url i una funció connect.

object Database {
    val url = "jdbc:mysql://localhost:3306/mydb"
    fun connect() {
        println("Connecting to $url")
    }
}

fun main() {
    Database.connect()  // Sortida: Connecting to jdbc:mysql://localhost:3306/mydb
}

Exercici 2: Objecte Company

Crea una classe User amb un objecte company que tingui una funció create que retorni una instància de User.

class User(val name: String) {
    companion object {
        fun create(name: String): User {
            return User(name)
        }
    }
}

fun main() {
    val user = User.create("John")
    println(user.name)  // Sortida: John
}

Errors Comuns i Consells

  • Accés a Membres Privats: Recorda que només els objectes companys poden accedir als membres privats de la seva classe contenedora.
  • Inicialització: Assegura't que les propietats i funcions dins de les declaracions d'objectes i objectes companys estiguin correctament inicialitzades abans d'accedir-hi.

Conclusió

En aquesta secció, hem après sobre les declaracions d'objectes i els objectes companys en Kotlin. Hem vist com crear instàncies úniques i membres estàtics, i hem explorat exemples pràctics per entendre millor aquests conceptes. Ara estàs preparat per utilitzar aquests patrons en els teus projectes Kotlin per gestionar instàncies úniques i membres estàtics de manera eficient.

© Copyright 2024. Tots els drets reservats