- 1

Fundamentos de Kotlin: Variables, funciones y estructuras de datos
01:47 - 2

Instalación y configuración de IntelliJ IDEA para Kotlin
11:16 - 3

Creación de proyecto Kotlin en IntelliJ y primer programa
13:47 - 4

Variables y tipos de datos básicos en Kotlin
20:58 - 5

Operadores aritméticos y módulo en Kotlin
14:28 - 6

Operadores lógicos AND, OR y NOT en programación
20:51 - 7

Manejo de valores nulos y operadores seguros en Kotlin
12:30 - 8

Lectura de datos por consola con readLine() en Kotlin
14:49 quiz de Fundamentos de Kotlin
Sealed interfaces para modelar acciones en Kotlin
Clase 29 de 35 • Curso de Kotlin
Contenido del curso
- 9

Creación de funciones en Kotlin para organizar código
20:21 - 10

Condicionales en Kotlin: if/else
17:14 - 11

Estructura when de Kotlin para múltiples condiciones
17:44 - 12

Arrays y listas mutables en Kotlin: creación y manipulación
18:19 - 13

Listas inmutables y mutables en Kotlin
10:13 - 14

Ciclos for, while y do while en Kotlin para iterar colecciones
18:57 quiz de Contro de Flujo y Funciones
- 15

Creación de clases y objetos en Kotlin
17:05 - 16

Getters y setters en Kotlin: validación y propiedades calculadas
14:38 - 17

Dataclases en Kotlin: ventajas sobre clases normales
16:46 - 18

Enums en Kotlin: Constantes organizadas para casos específicos
20:33 - 19

Manejo de excepciones con Try Catch Finally en Kotlin
19:40 quiz de Programación Orientada a Objetos en Kotlin
- 20

Extension functions en Kotlin para ampliar clases existentes
18:14 - 21

Funciones de alto orden y lambdas en Kotlin
22:37 - 22

Uso de lambdas y funciones de alto orden en arrays y colecciones
10:05 - 23

Scope functions de Kotlin: let, apply y run para manipular objetos
15:30 - 24

Funciones with y also en Kotlin para operaciones múltiples
11:09 - 25

Modificadores de visibilidad y encapsulamiento en Kotlin
17:06 - 26

Interfaces y patrón repository en Kotlin para gestión de datos
20:00 quiz de Características Avanzadas de Kotlin
- 31

Creación de modelos y repositorios para simulador de emails en Kotlin
22:57 - 32

Creación de clase service para coordinar repositorios en Kotlin
18:19 - 33

Implementación de funciones avanzadas del servicio Inbox en Kotlin
21:19 - 34

Interfaz por consola para gestión de correos en Kotlin
16:50 - 35

Pruebas de funcionalidades de correo en Kotlin
07:32
Comprender cómo modelar acciones en una interfaz de usuario es vital para desarrollar aplicaciones eficientes. Una herramienta efectiva para lograr este objetivo en Kotlin son las sealed interfaces, especialmente útiles para encapsular acciones específicas que el usuario pueda ejecutar.
¿Qué son exactamente las sealed interfaces?
Las sealed interfaces permiten restringir el conjunto de implementaciones posibles de una interfaz, garantizando que solo ciertas clases definidas cumplan ese contrato. Su función primordial es describir un conjunto limitado y específico de acciones.
¿Cuál es la diferencia con las sealed classes?
En clases anteriores se explicó que las sealed classes son ideales para definir estados específicos dentro de una interfaz gráfica. En cambio, las sealed interfaces se recomiendan para describir acciones concretas, aplicables directamente sobre elementos de la interfaz.
¿Cómo implemento una sealed interface?
Para crear una sealed interface, basta utilizar la palabra reservada en Kotlin:
sealed interface EmailAction {
val actionType: String
}
Luego, debemos definir clases concretas o data objects que implementen esta interfaz, asegurándonos siempre de agregar un identificador compartido (en este caso, actionType):
data class Send(val recipient: String, val subject: String): EmailAction {
override val actionType = "send"
}
data class Delete(val emailId: String): EmailAction {
override val actionType = "delete"
}
data object SaveDraft: EmailAction {
override val actionType = "draft"
}
data object Refresh: EmailAction {
override val actionType = "refresh"
}
¿Cuándo deberían usarse las sealed interfaces?
Resulta ideal implementarlas al modelar acciones del usuario:
- Enviar un email.
- Eliminar un correo electrónico.
- Guardar un borrador.
- Refrescar la interfaz.
Cada acción encapsula parámetros específicos que facilitan su manejo posterior y aseguran consistencia en el diseño.
¿Cómo mapear estas acciones a estados?
Los estados resultantes de cada acción también pueden definirse mediante sealed classes, facilitando transformar acciones en resultados específicos. Por ejemplo:
sealed class UiState {
data object Success: UiState()
data object Loading: UiState()
data object Error: UiState()
}
fun processActionToState(action: EmailAction): UiState {
println("Ejecutando comando: ${action.actionType}")
return when (action) {
is Delete -> UiState.Error
is Refresh -> UiState.Loading
else -> UiState.Success
}
}
Esta estrategia es especialmente recomendada para aplicaciones Android, permitiendo mapeos efectivos entre comandos y estados visuales claros para el usuario.
¿Qué ventajas prácticas ofrecen las sealed interfaces en Kotlin?
- Simplifican la gestión de estados y acciones, haciendo visibles todas las posibles implementaciones.
- Optimización del código, evitando redundancia al compartir parámetros comunes.
- Mejor mantenimiento, al representar un conjunto cerrado y limitado de acciones o comandos, facilitando su manejo futuro.
Este enfoque de Kotlin permite un código más limpio, eficiente y claro, especialmente en contextos de diseño para aplicaciones móviles Android o backend. ¿Tienes experiencia usando sealed interfaces? ¡Comparte tu experiencia o dudas en los comentarios para aprender juntos!