Origen de Kotlin
Es un idioma muy joven, bajo la licencia de Apache 2.0 y desarrollado por JetBrains (antigua IntelliJ), e implementado recientemente en Android. Es capaz de compilar con JVM, JavaScript y bytecode. Comparte gran compatibilidad con Java, lo que hace posible que sea capaz de usar cualquier librería escrita en Java, Se lanzó a comienzos de 2012, como plugin experimental, y el 14 de Febrero se proyecto OpenSource bajo la licencia Apache 2.0.
¿Por qué es mejor Kotlin que Java?
Existen algunos motivos por los que Kotlin es mejor opción frente a Java: -
- Compatibilidad con Java: La posibilidad de alternar entre Java y Kotlin al mismo tiempo.
- Su aprendizaje es más sencillo: Podríamos decir que Kotlin al ser más liviano facilita la comprensión.
- Soporte Oficial para Android Studio: Aunque el lenguaje estrella sea Java, Kotlin ya dispone de soporte oficial de la mano de Android Studio y junto a JetBrains, consiguen que su implementación sea perfecta.
- Ahorro de get y set: Relacionado con el punto anterior, en Java son necesarios el uso de get y set para los atributos, y aunque muchos IDE's te lo generan automáticamente para ahorrar tiempo, el código debe mantenerse ahí, lo que crea sobrecarga en el código. Esto con Kotlin nos lo podemos evitar, ya que lo que hace automáticamente, sin necesidad de que quede escrito en nuestro código.
- Errores típicos de Java: El compilador, te ayuda más a corregir los fallos, con Java no te das cuenta hasta que la aplicación está en funcionamiento, causándote un error fatal. El propio compilador de Kotlin es capaz de avisarte antes de la ejecución, ahorrándote un tiempo considerable.
Variables en Kotlin.
Tenemos dos posibilidades a la hora de usar la nomenclatura para crear variables, tenemos var y val.
- Var: Declaramos una variable así, cuando queremos que ésta pueda ser modificada en cualquier momento.
- Val: Usamos esta nomenclatura cuando el valor de esta variable no va a ser modificado.
Estas variables pueden ser de diferentes tipos, como:
- Double: almacena números decimales.
- Float: almacena números más pequeños que Double, y tiene una forma característica de escritura, por ejemplo para dar el valor 2 a una variable float sería 2f y 1,23 sería 1,23f.
- Int: almacena variables de tipo entero.
- Long: similar a int pero con mayor capacidad.
- String: almacena un conjunto de caracteres alfanuméricos.
- Boolean: se caracteriza para devolvernos siempre true o false (correcto o falso). Algunas funciones de las librerías de Kotlin, te devuelven este tipo de dato, para saber si la condición se cumple o no. Tanto val como var, tenemos la posibilidad de crearlos sin declarar de qué tipo es, como se mostrará en el siguiente código.
var saludo: String = "Hola qué tal"
val saludo1 = "Hola soy Kotlin"
val numeroInt = 55
val numeroLong = 40L
val numeroFloat = 34.43F
val numeroDouble = 45.78
val numeroHexadecimal = 0x0F
val numeroBinary = 0b010101
val cadenaTexto = "Esto es un ejemplo de texto"
val valorTrueBoolean = true
val valorFalseBoolean = false
val cadenaMultiplesLineas = """
Primera línea
Segunda línea
Tercera Línea"""
Solo se puede crear una variable vacía de tipo val dentro de una función. Posteriormente de haberla creado, podemos darle el valor que queremos.
Estructuras de control
val edad = 35
if (edad > 10) {
println("Tu edad es mayor a 10")
} else if (edad < 13) {
println("Tu edad es menor a 13")
} else {
println("Eres eterno")
}
var edad = 17
fun main() {
when {
edad > 18 -> println("¡Eres demasiado mayor!")
edad == 18 -> println("¡Ya eres mayor!")
edad == 17 -> println("¡Bienvenido / a!")
edad <= 16 -> println("¡Eres demasiado joven!")
}
}
- Condicionales if: Con el uso del if, podemos hacer, que si se cumple la condición nuestro proyecto haga una acción, y sino, que no haga nada. Como ocurre en el resto de lenguajes de programación, de pueden unir varias condiciones con || (OR) o &&(AND), e incluso unir varios condicionales usando las estructuras else if o else. Para comparar si un número es más grande que otro lo hacemos con "<" o ">", siendo menor que.... o mayor que.... Cuando queremos decir que algo es mayor o igual que utilizamos ">=" o "<=".
- Condiciones When: La estructura when podríamos decir que es el equivalente al Switch de Java. Con esto podremos elegir que hacer, según las condiciones expuestas. Las condiciones que se pueden usar con el when son las mismas que hemos visto con el if (==, >, <, !=, &&, ||, ....)
Secuencias de repetición.
for(numero in 1..5) {
println("numero: $numero")
}
var dia= 1
println("Empezamos la semana")
while(dia < 6) {
if (dia == 1) {
println("$dia día trabajando")
} else {
println("$dia días trabajando")
}
dia++ // Actualizamos la condicion
}
println("A descansar")
var numero:Int
do {
println("Introduce un numero entre 1 y 50")
numero = readLine()!!.toInt()
} while(numero !in 1..50) // numero < 1 || numero > 50
println("Gracias")
- Bucle for: Esta sentencia funciona siendo una repetición con un valor inicial y un valor final, el cual va a ir incrementado.
- While: La sentencia de repetición While funciona de una manera similar a la sentencia for, pero sin autoincrementar ninguna variable, simplemente mientras se siga cumpliendo esa condición, el bucle seguirá repitiéndose.
- Do while: Esta sentencia es muy similar a la sentencia de repetición while con la diferencia que te garantiza que al menos entrará una vez a la acción dentro del bucle. Después si se cumple la condición del bucle saldrá de él.
Clases en Kotlin
Al igual que sucede con Java, las clases abstractas de Kotlin son clases que no pueden ser instanciadas. Su finalidad es utilizarlas de cara a proveer una plantilla común para otras clases que las extiendan. La forma de declarar una clase abstracta es mediante la palabra reservada abstract. Una clase abstracta podrá contener propiedades y funciones tanto abstractas.
abstract class Vehiculo(val nombre: String,
val color: String,
val peso: Double) { // Propiedades no abstrac-tas
abstract var maxVelocidad: Double // Propiedad abstracta
abstract fun arrancar() // función abstractos
abstract fun parar()
fun muestraDetalless() { // función no abstracto
println("Nombre: $nombre, Color: $color, Velicidad: $maxVelocidad ")
}
}
Cualquier subclase que extienda de una clase abstracta deberá implementar todos los métodos y variables abstractas de la misma, o bien declararse a su vez como abstracta. De acuerdo a lo que vimos en la herencia de clases, sería necesario utilizar la palabra reservada open para indicar que podemos heredar de esa clase. Sin embargo, con las clases abstractas no es necesario hacerlo, ya que incorporan esa propiedad por defecto. Veamos un ejemplo de cómo extender una clase abstracta:
class Coche(nombre: String, color: String, peso: Double,
override var maxVelocidad: Double): Vehiculo(nombre, color, peso) {
override fun arrancar() {
println("Coche arrancado")
}
override fun parar() {
println("Coche parado")
}
}
En Kotlin una clase puede declararse dentro de otra dando lugar a una clase anidada.
class Externa {
private val propiedad: Int = 1
class Anidada {
fun funcion() = 2
}
}
Conversación
Añadir un comentarioGenial una presentación sencilla pero completa!
07 Nov 2019 · 01:18Deseando leer las siguientes entradas