Software

Kotlin introducción a la programación que usa Android

¿Qué es Kotlin?

Kotlin es un lenguaje de programación con tipificación estática o lo que es lo mismo, el programador se olvida completamente de especificar el tipo a las variables ya que de eso se encarga la maquina virtual.

Funciona mediante la Máquina Virtual de Java JVM y ofrece las mismas prestaciones que Java. Ha sido creado por JetBrains y es utilizado por Android en la actualidad.

Fue creado para poder trabajar junto con Java y por lo tanto podemos encontrar módulos de programación en Java o módulos en Kotlin. Haciendo sencilla la comunicación entre ambos lenguajes.

¿Por que usar Kotlin?

Es un lenguaje que tiene una sintaxis simple, una fácil escritura y legibilidad que consigue que sea intuitivo. Coge las mejores características del lenguaje Java y omite las que le sobran.

Por otro lado este lenguaje tiene una curva de aprendizaje suave y  consigue que a los programadores junior les resulte mas fácil aprenderlo y en cambio los programadores senior obtienen una mayor libertad de desarrollo.

Ventajas de Kotlin frente a Java

Permutabilidad Con Java

Tiene total interoperabilidad entre ambos lenguajes, teniendo perfectamente un proyecto con código de Kotlin y Java a la vez sin problemas de compilación.

Curva de Aprendizaje suave

Es un lenguaje de programación con una curva de aprendizaje suave que hace que programadores de Java se sientan cómodos con el lenguaje y la sintaxis les resulte familiar.

Programación Funcional y Procedural

Como ya sabemos existen muchos paradigmas de programación y cada uno tiene sus pros y sus contras, en el caso de este lenguaje combina las fortalezas del lenguaje funcional y a su vez las del lenguaje procedural.

Código más conciso

En comparación con el código en una clase de Java y otra de Kotlin, la de Kotlin usa un código mas conciso que mejora la legibilidad.

Sintaxis de Kotlin

Clases

La creación de una clase en Kotlin se hace usando la palabra reservada class. Ahora te voy a mostrar un ejemplo de la clase Persona.

class Persona {

}

Las clases suelen contener atributos y métodos. En el siguiente ejemplo te mostramos como agregar a la clase Persona, los atributos nombre de tipo String y edad de tipo Int.

var nombre: String = " "
var edad: Int = 0

A diferencia de Java, para crear variables en Kotlin tenemos que usar la palabra reservada var. En cambio si queremos que sea una variable de lectura únicamente, usaremos la palabra reservada val.

En cambio si queremos crear una variable que contenga null, hay que añadir un ? después del tipo de variable, un ejemplo:

var colegio: String? = null

Ahora que tenemos la clase creada, vamos a crear una instancia de la misma:

var Juan = Persona()

Como Kotlin no dispone de la palabra reservada new. Cuando tengamos la instancia de la clase creada podemos modificar los atributos de la siguiente manera:

Juan.nombre = "Juan Palacios"
Juan.edad = 32
Juan.colegio = "Benicalap"

La forma correcta de crear una instancia es mediante los constructores y ahora te mostramos como crear un constructor en Kotlin:

class Persona(var nombre: String, var edad: Int, var colegio: String?) {

}

Si queremos añadir un constructor secundario a nuestra clase debemos de usar la palabra reservada constructor. Este constructor le pasa el control al constructor principal mediante la palabra reservada this. Agregamos un constructor secundario que inicializa la variable email:

class Persona(var nombre: String, var edad: Int, var colegio: String?){

        var email: String = " "

constructor(nombre: String, edad: Int, colegio: String?, email: String) : this (nombre, edad, colegio){

        this.email = email

    }
}

Y para crear la instancia que usa un constructor secundario pondremos la siguiente linea:

var Juan = Persona("Juan Palacios", 30, "Benicalap", "juan30@gmail.com")

Para crear funciones en Kotlin tenemos que usar la palabra reservada fun. Vamos a agregar una función simple llamada esElegibleParaVotar que retorna un valor Boolean el valor que retorna se indica al final de la cabecera de la función:

fun esElegibleParaVotar () : Boolean {

//Si la edad es mayor o igual que 18 devuelve TRUE
return edad >= 18

}

Para invocar este método se hace de la misma manera que en Java

Juan.esElegibleParaVotar ()

En Kotlin se puede extender de una clase al añadir funciones adicionales a ella sin modificar su definición original. Estas funciones se llaman extensiones. El nombre de las funciones tienen que estar precedidas por los nombre de las clases de las que extienden.

Agregamos la extensión llamada esJoven a la clase Persona añadiendo el siguiente fragmento de código:

fun Persona.esJoven() : Boolean {

//Si la edad esta entre 13 y 19 devuelve true

return edad in 13.. 19

}

Hay que tener en cuenta un par de directrices cuando queremos crear una clase derivada:

Usar : en lugar de la palabra reservada extends de Java.

El encabezado debe contener la palabra reservada open.

Si la clase base tiene un constructor que consume parámetros, tu clase derivada debe inicializar esos parámetros en la misma cabecera.

Ahora es el momento de crear la clase empleado que deriva de Persona:

open class Persona(var name: String, var edad: Int, var colegio: String?)

    {

      ...

    }

class Employee(name: String, edad Int, colegio: String?, var compañia: String) : Persona (nombre, edad, colegio){

}

Funciones

La sintaxis de Kotlin es muy similar a Java en la creación de funciones. pero con Kotlin puedes hacer cosas mas potentes con funciones.

En el caso que nuestra función retorne una expresión simple, podemos usar el operador = después del encabezado de la función seguido por la expresión a evaluar.

fun esOctogenario(): Boolean = age in 80..89

Se puede observar que es una sintaxis mas parecida a paradigmas funcionales que a OO.

Las funciones de orden superior son las que pueden devolver funciones o admitir funciones como parámetro. Y las funciones lambda, son las funciones que no tienen nombre. Normalmente las expresiones lambda y las funciones de orden superior son usadas juntas.

Ahora te mostramos un ejemplo de una función lambda.

{x, y -> x + y}

Ahora te mostramos una expresión lambda que tiene como parámetros de entrada x e y para devolver su suma. Los parámetro van antes del operador -> y el cuerpo de la función va detrás del operador ->. La función lambda puede asignarse a una variable o usada como le mostramos:

val sumLambda: (Int, Int) -> Int = {x,y -> x + y}

val actualSum = sumLambda(3, 4)

Se asume que el tipo de variable que contiene la expresión lambda fuerza el tipo de sus parámetro y su valor de retorno.

Creamos una función de orden superior que acepta la expresión lambda de el apartado anterior, como un parámetro. Aquí te mostramos como crear una función que duplique el resultado de la expresión lambda, escribirías:

fun dobleResultado(x: Int, y: Int, f: (Int, Int)-> Int): Int{

return f(x, y) * 2

}

Ahora te mostramos como puedes llamar a esta función.

val result1 = dobleResultado(3, 4, sumLambda)

También podemos pasar la expresión lambda directamente a la función del orden superior.

val result2 = dobleResultado(3, 4, {x, y -> x + y})

Estas expresiones se usan con frecuencia con arrays. Te mostramos un ejemplo con un array de Int.

val numeros: Array<Int> = arrayOf(1 , 2 , 3 , 4 , 5)

Podemos elevar al cuadrado todos los elementos del array usando la función map junto con una expresión lambda, te mostramos como:

val cuadradoNumeros = numeros.map({x -> x * x}) 
//El muevo array contendrá
//1, 4, 9, 16, 25

En Kotlin se usan a menudo las expresiones de rango, las usamos antes cuando creamos los métodos esAdolescentey esOctogenario.

Para mostrar un rango de números tienes que hacerlo con el operador . .

var num1 = 1 .. 5

//Este rango contiene los números 1, 2, 3, 4, 5

Para crear un rango ordenado descendente usamos la función downTo.

val num2 = 5 downTo 1

//Este rango contiene 5, 4, 3, 2, 1

Usando la función step podemos definir los números que salta el iterador.

val num3 = 5 downTo 1 steep 2

//Este rango contiene los numero 5, 3, 1

If

En Kotlin como en Java, la expresión if devuelve un valor que depende de la condición si ha sido true o false. Ahora te mostramos un ejemplo explicativo.

var edad = 20

val esElegibleParaVotar = if (edad > 18) "Si" else "No"
//esElegibleParaVotar

En Kotlin la expresión when es la equivalente en Java a switch. En cambio la expresión when es bastante mas versátil, ahora te mostramos un ejemplo explicativo.

val edad = 17
val tipoDePersona = when(edad){

    0 -> "Recién nacido"

    in 1 .. 12 -> "Niño"
    in 13 .. 19 -> "Adolescente"

    else -> "Adulto"

}

Como puede verse when no usa únicamente valores sino que también puede usar expresiones.

Bucles

Bucle for

En Kotlin usamos el bucle for..in para iterar sobre arrays o colecciones con una sintaxis similar a la de Java, salvo que en vez de usar : como en Java usaremos in. Ahora te mostramos como iterar en Kotlin a través de un array de String.

val nombres = arrayOf( "Juan" , "Julieta" , "Ana" , "Rocio")

for (nombre is nombres) {

println(nombre)

}

Si combinamos los bucles for y las expresiones de rango podemos hacer que se comporte similar a un bucle tradicional for de C.

for (i in 0 .. 9){

println(i)

}

Se puede observar que esta expresión es similar a usar un bucle for en Java de tipo for(int i = 0; i<= 10; i++).

Bucle while y do while

La sintaxis en el caso de los bucles while y do while en Kotlin es idéntica a Java. Ahora te mostramos un fragmento de código de Kotlin iterando un bucle while

val nombres = arrayOf ( "Juan" , "Julieta" , "Ana" , "Rocio" )

    var i = nombres.size()
    while (i > 0) {

    println(nombres[--i])

    }

}

En Kotlin es posible usar variables y funciones dentro de los String introduciendo las variables dentro de llaves y precedidas con un símbolo $. Aquí te mostramos un ejemplo:

val nombre = "Juan"

println( "Mi nombre es ${nombre}")

//Este ejemplo muestra como podemos meter una variable dentro de un String



val a = 10 

val b = 20 

println ( "La suma es ${a + b}")

//Este ejemplo muestra como usamos dentro de un String dos variables para sumarlas.

Si Kotlin te parece interesante y quieres profundizar mas, puedes acceder a la plataforma de cursos MOOC

O en la página oficial de Kotlin

678 total views, 1 views today

Mostrar
Hide Buttons