Cas d’utilisation
Modélisation du domaine
Cas d’utilisation est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.
Modéliser le domaine
Les classes de valeur sont particulièrement adaptées à la modélisation du domaine. Elles transforment des primitives anonymes en types explicites et à l'abri des erreurs, sans coût d'exécution.
Examinons des scénarios réalistes.
Identifiants typés
Des types d'identifiants distincts empêchent de transmettre un identifiant utilisateur là où un identifiant de commande est attendu — un bogue courant et coûteux.
@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)))
}Unités de mesure
Envelopper les nombres dans des types d'unités vous empêche d'additionner accidentellement des mètres et des secondes, tout en documentant leur signification.
@JvmInline
value class Kilograms(val value: Double)
fun describe(weight: Kilograms) = weight.value.toString() + " kg"
fun main() {
println(describe(Kilograms(72.5)))
}Chaînes validées
Associez une classe de valeur à un bloc init pour garantir des invariants comme une adresse e-mail non vide.
@JvmInline
value class Email(val value: String) {
init {
require(value.contains("@")) { "invalid email" }
}
}
fun main() {
println(Email("a@b.com").value)
}Monnaie avec comportement
Représentez la monnaie dans sa plus petite unité et ajoutez des opérations afin d'éviter les erreurs de calcul en virgule flottante liées aux devises.
@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 explicites
La signature d'une fonction utilisant des classes de valeur est bien plus claire que celle qui utilise trois entiers indépendants.
@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)))
}Envelopper des données sensibles
Une classe de valeur peut redéfinir toString pour masquer les secrets dans les journaux tout en laissant la valeur brute accessible.
@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
}Imposer des intervalles
Utilisez les classes de valeur pour centraliser les règles d'intervalle, afin qu'aucun état invalide ne puisse être construit.
@JvmInline
value class Rating(val stars: Int) {
init {
require(stars in 1..5) { "stars must be 1..5" }
}
}
fun main() {
println(Rating(4).stars)
}Constructeurs intelligents
Associez une classe de valeur à une fabrique compagnon qui renvoie null en cas d'entrée invalide, afin d'éviter les exceptions pour les échecs prévus.
@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))
}Résumé des modèles
Modèles courants pour les classes de valeur :
- Identifiants typés pour éviter les confusions
- Unités de mesure
- Primitives validées avec
init - Opérations du domaine au moyen d'opérateurs
- Valeurs sensibles masquées
Sécurité à faible coût
Comme les classes de valeur sont généralement intégrées, vous bénéficiez de toute cette clarté et de toute cette sécurité du domaine pour un coût d'exécution pratiquement nul. Elles permettent facilement de rendre les états illégaux impossibles à représenter.
Vérification rapide
Vérifiez votre compréhension des cas d'utilisation des classes de valeur.
Récapitulatif
Vous avez découvert des cas d'utilisation pratiques des classes de valeur :
- Identifiants typés, unités et chaînes validées
- Monnaie et opérations du domaine
- Masquage des secrets et constructeurs intelligents
Ensuite : les limites des classes de valeur.
Apprends Kotlin avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 51
- Leçons
- 203
Questions Fréquemment Posées
La leçon « Cas d’utilisation » est-elle gratuite ?
Oui — le texte complet de « Cas d’utilisation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Cas d’utilisation » ?
Modélisation du domaine Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Kotlin Academy ?
Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Cas d’utilisation » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?
Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Alias de types
- Classes de valeurs inline
- Cas d’utilisation
- Limitations