Casos de Uso
Modelagem de domínio
Casos de Uso é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.
Modelando o domínio
As classes de valor são excelentes para a modelagem de domínio. Elas transformam tipos primitivos anônimos em tipos significativos e à prova de erros, sem custo durante a execução.
Vamos analisar cenários realistas.
Identificadores tipados
Tipos distintos de ID evitam passar um identificador de usuário onde deveria estar um identificador de pedido — um erro comum e dispendioso.
@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
Encapsular números em tipos de unidades impede que você some metros a segundos por acidente e documenta o significado.
@JvmInline
value class Kilograms(val value: Double)
fun describe(weight: Kilograms) = weight.value.toString() + " kg"
fun main() {
println(describe(Kilograms(72.5)))
}Strings validadas
Combine uma classe de valor com um bloco init para garantir invariantes, como um endereço de e-mail não vazio.
@JvmInline
value class Email(val value: String) {
init {
require(value.contains("@")) { "invalid email" }
}
}
fun main() {
println(Email("a@b.com").value)
}Dinheiro com comportamento
Represente o dinheiro na menor unidade e adicione operações, evitando erros de ponto flutuante com moedas.
@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())
}APIs autodocumentadas
Uma assinatura de função com classes de valor é muito mais clara do que uma com três números inteiros soltos.
@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)))
}Encapsulando dados sensíveis
Uma classe de valor pode substituir toString para mascarar segredos nos registros, mantendo o valor bruto acessível.
@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
}Impondo intervalos
Use classes de valor para concentrar as regras de intervalo em um único lugar, de modo que estados inválidos não possam ser construídos em nenhum ponto.
@JvmInline
value class Rating(val stars: Int) {
init {
require(stars in 1..5) { "stars must be 1..5" }
}
}
fun main() {
println(Rating(4).stars)
}Construtores inteligentes
Associe uma classe de valor a uma fábrica companheira que retorna null para uma entrada inválida, evitando exceções para falhas esperadas.
@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))
}Resumo dos padrões
Padrões comuns de classes de valor:
- IDs tipados para evitar confusões
- Unidades de medida
- Tipos primitivos validados com
init - Operações de domínio por meio de operadores
- Valores sensíveis mascarados
Segurança de baixo custo
Como as classes de valor geralmente são embutidas, você obtém toda essa clareza e segurança de domínio praticamente sem custo durante a execução. Elas são uma forma simples de tornar estados ilegais impossíveis de representar.
Verificação rápida
Teste sua compreensão sobre casos de uso de classes de valor.
Recapitulação
Você viu casos de uso práticos das classes de valor:
- IDs tipados, unidades e strings validadas
- Dinheiro e operações de domínio
- Mascaramento de segredos e construtores inteligentes
A seguir: as limitações das classes de valor.
Aprenda Kotlin com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “Casos de Uso” é grátis?
Sim — o texto completo de “Casos de Uso” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.
O que vou aprender em “Casos de Uso”?
Modelagem de domínio Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Kotlin Academy?
Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Casos de Uso”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Kotlin Academy?
Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.