- 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
Creación de modelos y repositorios para simulador de emails en Kotlin
Clase 31 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
En la práctica de Kotlin, diseñar un simulador de correos electrónicos es una excelente manera de reforzar conocimientos sobre modelos, repositorios e interfaces. Este proyecto inicia con la creación de nuestros modelos esenciales para gestionar emails y usuarios, utilizando estructuras como enum class y data class.
¿Cómo definir claramente los modelos para emails en Kotlin?
El primer paso consiste en definir una estructura clara utilizando enum class para representar diferentes carpetas típicas de un servicio de correo electrónico:
- Inbox
- Enviados
- Archivo
- Spam
Además, se trabaja con data class para modelar correctamente la estructura de un usuario y sus atributos como usuario y contraseña, así como asegurar la generación automática de un ID único usando UUID.
¿Qué atributos debe incluir una clase de email?
La creación de la clase email involucra:
- ID único generado automáticamente.
- Dueño del email, representado por un owner UUID que conecta al usuario.
- Campos para el remitente (from), destinatario (to), asunto (subject) y contenido (body).
- Folder, ubicación predeterminada del email.
- Indicador booleano si el email ha sido leído o no.
Esta estructura permite gestionar emails de manera eficiente y organizada.
¿Para qué sirven los repositorios y cómo implementarlos?
Los repositorios son útiles para realizar operaciones básicas de almacenamiento y recuperación (crear, leer, actualizar, eliminar) de usuarios y correos electrónicos:
- User repository: permite guardar usuarios nuevos, encontrarlos mediante username.
-
Implementación en memoria con listas mutables de Kotlin.
-
Email repository: maneja operaciones sobre emails, permitiendo encontrar emails por owner, ID y eliminar emails.
- Implementación con el uso sencillo de funciones como add, filter y remove if sobre listas mutables.
¿Qué ventajas tiene implementar interfaces para los repositorios?
Las interfaces garantizan un contrato claro y simplificado para nuestras clases, facilitando posteriores mejoras o cambios en almacenamiento de datos sin afectar el resto del programa. Además, contribuyen a organizar el código siguiendo principios del domain driven design, en donde resaltamos la importancia de modelar lógicamente nuestras estructuras.
¿De qué manera se beneficia este desarrollo usando principios básicos de diseño como Domain Driven Design (DDD)?
Siguiendo principios del Domain Driven Design, este proyecto KDE Kotlin se basa en modelar claramente las entidades involucradas en nuestro problema de negocio (en este caso, servicio de correos electrónicos), definiendo relaciones y lógica para trazar coherencia funcional entre los distintos objetos del sistema.