Déclarations d’objets
Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 12 sur 57.
object Name { ... } déclare une classe et son unique instance en une seule étape. Vous utilisez l’objet en l’appelant par son nom ; il n’y a pas de constructeur à appeler :
object AppConfig {
var theme = "light"
val version = "1.4"
fun describe() = "v$version, $theme theme"
}Dans main :
println(AppConfig.describe())
AppConfig.theme = "dark"
println(AppConfig.describe())Résultat :
v1.4, light theme
v1.4, dark themeIl existe exactement une instance, donc chaque partie du programme qui utilise l’objet lit et modifie le même état. L’objet est créé lors de sa première utilisation, comme le montre le bloc init ci-dessous :
object Visits {
var count = 0
private set
init { println("Visits created") }
fun record() { count++ }
}
fun home() = Visits.record()
fun about() { Visits.record(); Visits.record() }À l’intérieur de main :
println("start")
home()
about()
println(Visits.count)Sortie :
start
Visits created
3Un objet n’a pas de constructeur, parce que personne ne le crée. Ses propriétés reçoivent leurs valeurs dans leurs déclarations ou dans init. À part cela, son corps est celui d’une classe normale : état privé, méthodes auxiliaires privées et méthodes publiques :
object IdGenerator {
private var next = 1
fun newId(prefix: String) = "$prefix-${pad(next++)}"
private fun pad(n: Int) = n.toString().padStart(3, '0')
}À l’intérieur de main :
println(IdGenerator.newId("user"))
println(IdGenerator.newId("order"))Sortie :
user-001
order-002Utilise un objet pour quelque chose dont il n’existe qu’un seul exemplaire dans un programme : un registre, la configuration, un groupe de fonctions utilitaires. Un objet est un état global que n’importe quel fichier peut modifier ; garde donc ses accesseurs privés et laisse ses méthodes vérifier chaque modification.
object Units {
fun kmToMiles(km: Double) = km * 0.621371
}
Units.kmToMiles(10.0) // appelé par son nom
// val u = Units() // erreur : un objet n’a pas de constructeurDéfi
FacileComplète l’objet Leaderboard. Il conserve les points de chaque joueur dans une map privée. add(player, points) ajoute des points, top() renvoie le leader sous la forme ada 6 (en cas d’égalité, le nom qui vient en premier dans l’ordre alphabétique) ou empty si personne n’a de points, reset() supprime tout le monde, et la propriété players correspond au nombre de joueurs.
Les fonctions auxiliaires recordWin et recordDraw dans Functions.kt sont fournies : elles utilisent Leaderboard depuis un autre fichier. Le code fourni lit les commandes win ada, draw ada bo, top ou reset, affiche top() pour chaque top et enfin players: suivi du nombre.
Ton code va dans Leaderboard.kt et Functions.kt. Main.kt contient le code d’entrée/sortie fourni et ne peut pas être modifié.
Essayez vous-même
fun main() {
// Code d'entrée/sortie fourni : conservez-le tel quel
val input = generateSequence(::readLine).toList()
for (cmd in input) {
val p = cmd.split(" ")
when (p[0]) {
"win" -> recordWin(p[1])
"draw" -> recordDraw(p[1], p[2])
"reset" -> Leaderboard.reset()
else -> println(Leaderboard.top())
}
}
println("players: ${Leaderboard.players}")
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Programmation orientée objet
1Classes et objets
Travailler avec des fichiersDéfinir des classesConstructeurs primairesBlocs init et validationConstructeurs secondairesRécapitulatif - Carte de bibliothèque4Héritage
Classes ouvertes et sous-classesRedéfinition des membressuper et constructeursClasses abstraitesRécapitulatif – Annuaire du personnel2Propriétés et encapsulation
Accesseurs personnalisésModificateurs de visibilitéSetters privéslazy et lateinitRécapitulatif - Compte bancaire5Interfaces
Déclarer des interfacesMéthodes par défautInterfaces multiplesInterfaces en tant que typesRécapitulatif - Méthodes de paiement8Génériques
Fonctions génériquesClasses génériquesContraintes de typeVariance avec in et outRécapitulatif - File de priorité11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livres3Objets et compagnons
Déclarations d’objetsObjets compagnonsConstantes avec constExpressions d’objetsRécapitulatif – BilletterieEntraînez-vous par vous-même : Playground Kotlin