Objeto vs Clase en Kotlin

David Mbochi Njonge 20 junio 2023
  1. Crear objetos Singleton en Kotlin
  2. Crear objetos usando una clase en Kotlin
  3. Crear un objeto complementario en Kotlin
  4. Crear una clase de datos en Kotlin
  5. Conclusión
Objeto vs Clase en Kotlin

Las características de clase y objeto se utilizan generalmente en la programación orientada a objetos, denotadas como OOP.

La programación orientada a objetos es el enfoque de programación donde la herencia, el polimorfismo, la abstracción y la encapsulación son los cuatro principios básicos de la programación orientada a objetos.

Los ejemplos de lenguajes que admiten la programación orientada a objetos incluyen Kotlin, Java, Python, JavaScript, TypeScript y muchos otros.

La principal ventaja de las clases es que nos ayudan a simular cosas y objetos de palabras reales y nos ayudan a crear tantas situaciones diferentes que se comportan de manera diferente y tienen diferentes estados.

Por ejemplo, es posible que desee crear una aplicación que lo ayude a diseñar automóviles; sabemos que hay diferentes tipos de carros, y tienen diferentes estados como color, número de asientos, entre otros.

Para lograr esto, usamos una clase para crear un prototipo de automóvil y, a partir de este prototipo, podemos crear automóviles que tengan estados diferentes a los demás. En este tutorial, aprenderemos a usar clases y objetos en Kotlin.

Crear objetos Singleton en Kotlin

Hay diferentes formas de crear objetos en Kotlin, que pueden existir en diferentes formas. En este ejemplo, aprenderemos cómo crear un objeto estático.

Abra el entorno de desarrollo IntelliJ y seleccione Archivo > Nuevo > Proyecto. En la ventana que se abre, ingrese el “nombre” del proyecto como kotlin-objects-and-classes, seleccione Kotlin en la sección “Idioma” e IntelliJ en la sección Build system.

Cree un archivo Main.kt en la carpeta kotlin y copie y pegue el siguiente código en el archivo.

object DBConnection{
    private const val url = "http://localhost";
    private const val port = 8080;
    private const val DBName = "customerDB";

    override fun toString(): String {
        return "Connected to database $DBName using port $port at $url";
    }
}

fun main(){
    println(DBConnection.toString());
}

En este ejemplo, hemos creado una instancia estática de una clase, aunque no hemos definido ninguna clase, pero si descompilamos este código en Java, encontraremos que se crea una clase en segundo plano y se devuelve un singleton.

Cuando definimos este objeto como una instancia de clase estática, nos referimos a un singleton, lo que significa que solo se crea una copia del objeto durante el tiempo de vida de la aplicación.

Tenga en cuenta que puede invocar funciones miembro y variables de este objeto sin realizar ninguna llamada, como se muestra en la función main().

Solo necesitamos agregar el . símbolo sobre el nombre del objeto para invocar y realizar cualquier llamada como hemos hecho con el método toString(). Ejecute el ejemplo anterior y tenga en cuenta que funciona como se esperaba.

Connected to database customerDB using port 8080 at http://localhost

Crear objetos usando una clase en Kotlin

Hemos mencionado que una clase nos ayuda a simular cosas del mundo real y sus comportamientos, lo que crea un modelo para estas cosas.

Las instancias son los diferentes objetos creados a partir del blueprint, y el siguiente ejemplo muestra cómo crear una clase y una instancia de la clase.

Comente el ejemplo anterior y copie y pegue el siguiente código en el archivo Main.kt después de él.

class Employee(private val firstName: String,
               private val lastName: String,
               private val salary: Number){

    override fun toString(): String {
        return "$firstName $lastName earns a salary of $$salary"
    }
}

fun main(){
    val john = Employee("john","doe",60000);
    println(john.toString());
}

En este ejemplo, hemos creado el modelo de un empleado utilizando la palabra clave clase, y esta es la sintaxis que siempre se utiliza cuando se desea crear una clase.

La clase tiene tres propiedades, firstName, lastName y salary, y un método, toString(), que devuelve los detalles del empleado.

En el método principal, hemos creado un objeto de un empleado llamando al nombre de la clase Empleado(), también conocido como constructor y pasando las propiedades concretas del cliente.

Podemos crear tantas instancias como queramos llamando al constructor nuevamente y pasando diferentes propiedades para crear diferentes objetos. Ejecute este ejemplo para verificar que funciona como se esperaba.

john doe earns a salary of $60000

Crear un objeto complementario en Kotlin

En el primer ejemplo, hemos visto cómo crear un objeto estático que tiene una sola copia en toda su vida y no pertenece a ninguna clase.

En estático dentro de una clase, podemos crear propiedades y funciones estáticas que pertenecen a una clase utilizando un objeto complementario. El siguiente ejemplo muestra cómo realizar esto.

Comente el ejemplo anterior y copie y pegue el siguiente código en el archivo Main.kt después de él.

class Customer(private val name: String,
               private val email: String,
               private val orderItem: String){

    companion object{
        const val creditCard = 1
    }

    override fun toString(): String {
        return "$name bought a $orderItem using the email $email";
    }

    fun getName(): String{
        return this.name;
    }

}

fun main(){
    val customer = Customer("mary", "mary@gmail.com", "watch")
    println(customer.getName()+" has "+ Customer.creditCard+ " credit card")
    println(customer.toString())
}

Tenga en cuenta que las propiedades y funciones estáticas se definen en el objeto complementario y el objeto complementario se define en la clase.

Cuando desee acceder a las propiedades y funciones estáticas, usamos el mismo enfoque que usamos en el primer ejemplo.

Por ejemplo, el Cliente.Tarjeta de crédito se utiliza para acceder a la propiedad estática de la clase Tarjeta de crédito. Ejecute este ejemplo para verificar que funciona como se esperaba.

mary has 1 credit card
mary bought a watch using the email mary@gmail.com

Crear una clase de datos en Kotlin

Comente el ejemplo anterior y copie y pegue el siguiente código en el archivo Main.kt después de él.

import java.math.BigDecimal

data class Product(val productName: String,
                   val  productPrice: BigDecimal);

fun main(){
    val product = Product("watch", BigDecimal("457.65"))
    println(product.toString());
}

Una clase de datos se usa para contener datos y se crea usando la palabra clave datos, que se agrega delante de la palabra clave clase.

Existen condiciones para crear la clase de datos e incluyen asegurarse de que el constructor principal tenga al menos un parámetro, garantizar que los parámetros se declaren usando val o var, y que la clase de datos no pueda ser abierta, sellada, abstracto o interior.

La clase de datos ayuda a los desarrolladores a evitar repeticiones en su código, ya que genera funciones comunes que se usan con clases como toString(), equal(), hashCode() y otras.

En este ejemplo, hemos creado una clase de datos para un producto, y cuando invocamos el método toString(), los detalles del cliente se nos devuelven de forma gratuita. Ejecute este ejemplo para asegurarse de que funciona como se esperaba.

Product(productName=watch, productPrice=457.65)

Conclusión

Este tutorial nos enseñó cómo crear diferentes tipos de objetos en Kotlin y objetos de clases. Los temas cubiertos incluyen la creación de un objeto singleton, la creación de objetos usando una clase, la creación de un objeto complementario y la creación de una clase de datos.

Si desea leer más sobre objetos y clases, visite la documentación de Kotlin, que cubre los conceptos en detalle.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub

Artículo relacionado - Kotlin Class

Artículo relacionado - Kotlin Object