En este tema, exploraremos los conceptos fundamentales de la Programación Orientada a Objetos (POO) en Kotlin, centrándonos en las clases y los objetos. Aprenderemos cómo definir clases, crear instancias de objetos y utilizar propiedades y métodos.

Conceptos Clave

  1. Clases: Plantillas para crear objetos. Definen propiedades y métodos.
  2. Objetos: Instancias de clases. Representan entidades con estado y comportamiento.
  3. Propiedades: Variables dentro de una clase.
  4. Métodos: Funciones dentro de una clase.

Definición de Clases

En Kotlin, una clase se define utilizando la palabra clave class. Aquí hay un ejemplo básico:

class Persona {
    var nombre: String = ""
    var edad: Int = 0

    fun saludar() {
        println("Hola, mi nombre es $nombre y tengo $edad años.")
    }
}

Explicación del Código

  • class Persona: Define una nueva clase llamada Persona.
  • var nombre: String = "": Define una propiedad mutable nombre de tipo String.
  • var edad: Int = 0: Define una propiedad mutable edad de tipo Int.
  • fun saludar(): Define un método saludar que imprime un mensaje.

Creación de Objetos

Para crear una instancia de una clase, utilizamos el operador new implícito en Kotlin:

val persona1 = Persona()
persona1.nombre = "Juan"
persona1.edad = 25
persona1.saludar()

Explicación del Código

  • val persona1 = Persona(): Crea una nueva instancia de la clase Persona.
  • persona1.nombre = "Juan": Asigna el valor "Juan" a la propiedad nombre del objeto persona1.
  • persona1.edad = 25: Asigna el valor 25 a la propiedad edad del objeto persona1.
  • persona1.saludar(): Llama al método saludar del objeto persona1.

Constructores

Los constructores se utilizan para inicializar los objetos. Kotlin proporciona un constructor primario y constructores secundarios.

Constructor Primario

El constructor primario se define junto con la declaración de la clase:

class Persona(val nombre: String, var edad: Int) {
    fun saludar() {
        println("Hola, mi nombre es $nombre y tengo $edad años.")
    }
}

Explicación del Código

  • class Persona(val nombre: String, var edad: Int): Define un constructor primario que inicializa las propiedades nombre y edad.

Uso del Constructor Primario

val persona2 = Persona("Ana", 30)
persona2.saludar()

Explicación del Código

  • val persona2 = Persona("Ana", 30): Crea una nueva instancia de Persona utilizando el constructor primario.

Constructor Secundario

Los constructores secundarios se definen dentro del cuerpo de la clase utilizando la palabra clave constructor:

class Persona {
    var nombre: String
    var edad: Int

    constructor(nombre: String, edad: Int) {
        this.nombre = nombre
        this.edad = edad
    }

    fun saludar() {
        println("Hola, mi nombre es $nombre y tengo $edad años.")
    }
}

Explicación del Código

  • constructor(nombre: String, edad: Int): Define un constructor secundario que inicializa las propiedades nombre y edad.

Uso del Constructor Secundario

val persona3 = Persona("Carlos", 40)
persona3.saludar()

Explicación del Código

  • val persona3 = Persona("Carlos", 40): Crea una nueva instancia de Persona utilizando el constructor secundario.

Ejercicio Práctico

Ejercicio 1

Define una clase Coche con las siguientes propiedades y métodos:

  • Propiedades:
    • marca: String
    • modelo: String
    • año: Int
  • Métodos:
    • detalles(): Imprime los detalles del coche.

Solución

class Coche(val marca: String, val modelo: String, val año: Int) {
    fun detalles() {
        println("Marca: $marca, Modelo: $modelo, Año: $año")
    }
}

fun main() {
    val coche1 = Coche("Toyota", "Corolla", 2020)
    coche1.detalles()
}

Explicación del Código

  • class Coche(val marca: String, val modelo: String, val año: Int): Define la clase Coche con un constructor primario.
  • fun detalles(): Define un método que imprime los detalles del coche.
  • val coche1 = Coche("Toyota", "Corolla", 2020): Crea una instancia de Coche y llama al método detalles.

Conclusión

En esta sección, hemos aprendido los conceptos básicos de las clases y los objetos en Kotlin. Hemos visto cómo definir clases, crear instancias de objetos, utilizar propiedades y métodos, y trabajar con constructores. Estos conceptos son fundamentales para la Programación Orientada a Objetos y serán la base para temas más avanzados en Kotlin.

En el próximo tema, exploraremos la herencia y las interfaces, que nos permitirán crear jerarquías de clases y definir comportamientos comunes.

© Copyright 2024. Todos los derechos reservados