Menu
Coddy logo textTech

Définir des classes

Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 2 sur 57.

Une class décrit un type d’objet : les données qu’il contient et ce qu’il peut faire. class Dog { ... } déclare le type, et Dog() crée un objet de ce type, une instance. Kotlin n’a pas de mot-clé new :

class Dog {
    var name = "Rex"
    var age = 3
}

À l’intérieur de main :

val dog = Dog()
println(dog.name)
println(dog.age)

Sortie :

Rex
3

Les variables à l’intérieur d’une classe sont ses propriétés. Chaque instance possède sa propre copie, qui se lit et se modifie avec un point :

class Dog {
    var name = "Rex"
}

À l’intérieur de main :

val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)

Résultat :

Rex
Bella

Une fonction à l’intérieur d’une classe est une méthode (Kotlin les appelle des fonctions membres). Une méthode peut lire et modifier les propriétés de l’instance sur laquelle elle est appelée :

class Counter {
    var count = 0

    fun increment() {
        count++
    }

    fun report() = "count is $count"
}

À l’intérieur de main :

val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())

Sortie :

count is 2

Les noms de classes utilisent l’UpperCamelCase (BankAccount) ; les propriétés et les méthodes utilisent le lowerCamelCase (balance, deposit()). Regrouper les données avec les fonctions qui les manipulent est l’idée centrale de la programmation orientée objet : le code qui utilise un Counter appelle increment() et n’a jamais besoin de savoir comment le compteur est stocké.

class BankAccount {
    var balance = 0

    fun deposit(amount: Int) {
        balance += amount
    }
}
challenge icon

Défi

Facile

Complète la méthode describe() de la classe Pet. Elle renvoie une phrase construite à partir des propriétés : un animal nommé Rex, d’espèce dog, âgé de 3 ans donne Rex is a 3 year old dog.

Le code fourni crée un Pet, définit ses propriétés à partir de l’entrée (nom, espèce, âge) et affiche le résultat de describe().

Ton code doit se trouver dans Pet.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 : le garder tel quel
    val input = generateSequence(::readLine).toList()
    val pet = Pet()
    pet.name = input[0]
    pet.species = input[1]
    pet.age = input[2].toInt()
    println(pet.describe())
}
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Kotlin