Getters y setters en Kotlin: validación y propiedades calculadas

Clase 16 de 35Curso de Kotlin

Resumen

Entender los getters y setters es esencial en Kotlin para optimizar el manejo de datos en tus aplicaciones. Aquí desglosamos qué son, cómo funcionan y mostramos ejemplos prácticos de implementación en código Kotlin.

¿Qué son los getters y setters?

Getters y setters son métodos utilizados en la programación orientada a objetos para interactuar con los atributos de una clase. Su propósito principal es controlar cómo se leen (getters) y modifican (setters) los valores internos de una clase.

  • Getters: métodos que retornan el valor actual de un atributo.
  • Setters: métodos que asignan un nuevo valor a un atributo.

¿Cómo implementar getters y setters en Kotlin?

Kotlin facilita enormemente la creación de getters y setters mediante su propia sintaxis. Cuando defines una propiedad en Kotlin, automáticamente se generan métodos de acceso sencillos, aunque también puedes personalizarlos según tus necesidades.

Aquí tienes un ejemplo práctico en Kotlin:

class Email(val remitente: String, val mensaje: String) {

    var asunto: String = ""
        set(valor) {
            field = if (valor.trim().isNotEmpty()) valor.trim() else "sin asunto"
        }

    val esImportante: Boolean
        get() = asunto.contains("urgente", ignoreCase = true)
}
  • El setter asigna al campo asunto un valor sin espacios o "sin asunto" si está vacío.
  • El getter genera una propiedad calculada esImportante, que devuelve verdadero si el asunto contiene la palabra "urgente", ignorando mayúsculas o minúsculas.

Ejemplo práctico de getters y setters

Veamos cómo utilizar esta clase email:

fun main() {
    val emailUno = Email("Juan@gmail.com", "Este es un mensaje de correo")

    println("Asunto es: " + emailUno.asunto) // Output inicial: "sin asunto"

    emailUno.asunto = "   urgente: reunión jueves   "

    println("Es importante: " + emailUno.esImportante) // Output: true
}

En el ejemplo anterior, puedes observar cómo la lógica del setter y getter facilita el procesamiento automático de información.

Ejercicio para practicar los getters y setters

Practica creando una clase llamada Contacto para usar getters y setters:

  • Implementa un setter para una propiedad email que valide contener un símbolo "@". Si no tiene "@", asigna un valor vacío.
  • Agrega una propiedad calculada esValido que confirme que el correo contenga tanto "@" como ".com".

Ejemplo de solución:

class Contacto(var nombre: String){
    var email: String = ""
        set(valor) {
            field = if(valor.contains("@")) valor else ""
        }

    val esValido: Boolean
        get() = email.contains("@") && email.contains(".com")
}

Comenta la clase Contacto y comparte otros ejemplos prácticos o dudas que tengas sobre el uso de getters y setters en Kotlin.