Casos de uso
Modelado del dominio
Casos de uso es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.
Modelar el dominio
Las clases de valor destacan en el modelado del dominio. Transforman tipos primitivos anónimos en tipos significativos y resistentes a errores, sin coste en tiempo de ejecución.
Veamos algunos escenarios realistas.
Identificadores con tipo
Los tipos de ID distintos evitan pasar un ID de usuario donde corresponde un ID de pedido, un error frecuente y costoso.
@JvmInline
value class UserId(val value: Long)
@JvmInline
value class OrderId(val value: Long)
fun fetchUser(id: UserId) = "user " + id.value
fun main() {
println(fetchUser(UserId(7)))
}Unidades de medida
Envolver números en tipos de unidad evita que sume metros y segundos por accidente, además de documentar su significado.
@JvmInline
value class Kilograms(val value: Double)
fun describe(weight: Kilograms) = weight.value.toString() + " kg"
fun main() {
println(describe(Kilograms(72.5)))
}Cadenas validadas
Combine una clase de valor con un bloque init para garantizar invariantes como que un correo electrónico no esté en blanco.
@JvmInline
value class Email(val value: String) {
init {
require(value.contains("@")) { "invalid email" }
}
}
fun main() {
println(Email("a@b.com").value)
}Dinero con comportamiento
Represente el dinero en la unidad mínima y añada operaciones para evitar errores de moneda causados por la aritmética de coma flotante.
@JvmInline
value class Cents(val value: Long) {
operator fun plus(other: Cents) = Cents(value + other.value)
fun format() = "$" + value / 100.0
}
fun main() {
val total = Cents(1500) + Cents(250)
println(total.format())
}API autoexplicativas
La firma de una función con clases de valor es mucho más clara que una con tres enteros sueltos.
@JvmInline
value class Width(val px: Int)
@JvmInline
value class Height(val px: Int)
fun area(w: Width, h: Height) = w.px * h.px
fun main() {
println(area(Width(4), Height(5)))
}Envolver datos sensibles
Una clase de valor puede sobrescribir toString para ocultar secretos en los registros y mantener accesible el valor original.
@JvmInline
value class Token(val value: String) {
override fun toString() = "Token(***)"
}
fun main() {
val t = Token("abc123")
println(t) // masked
println(t.value) // real value when needed
}Imponer rangos
Use clases de valor para encapsular las reglas de rango en un solo lugar, de modo que no se puedan construir estados inválidos en ninguna parte.
@JvmInline
value class Rating(val stars: Int) {
init {
require(stars in 1..5) { "stars must be 1..5" }
}
}
fun main() {
println(Rating(4).stars)
}Constructores inteligentes
Combine una clase de valor con una fábrica del companion que devuelva null cuando la entrada no sea válida, evitando excepciones para fallos esperables.
@JvmInline
value class Age(val value: Int) {
companion object {
fun of(n: Int): Age? = if (n in 0..150) Age(n) else null
}
}
fun main() {
println(Age.of(30)?.value)
println(Age.of(-5))
}Resumen de patrones
Patrones habituales de las clases de valor:
- IDs con tipo para evitar confusiones
- Unidades de medida
- Tipos primitivos validados con
init - Operaciones del dominio mediante operadores
- Valores sensibles ocultos
Seguridad económica
Como las clases de valor normalmente se insertan mediante inline, obtiene toda esta claridad y seguridad del dominio prácticamente sin coste en tiempo de ejecución. Son una forma sencilla de hacer que los estados inválidos sean imposibles de representar.
Comprobación rápida
Compruebe su comprensión de los casos de uso de las clases de valor.
Recapitulación
Ha visto casos de uso prácticos de las clases de valor:
- IDs con tipo, unidades y cadenas validadas
- Dinero y operaciones del dominio
- Ocultación de secretos y constructores inteligentes
A continuación: las limitaciones de las clases de valor.
Aprende Kotlin con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 51
- Lecciones
- 203
Preguntas frecuentes
¿La lección «Casos de uso» es gratis?
Sí — el texto completo de «Casos de uso» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Casos de uso»?
Modelado del dominio Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kotlin Academy?
No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Casos de uso»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?
Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.