Menu
Coddy logo textTech

Travailler avec des fichiers

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

Les vrais programmes sont répartis dans plusieurs fichiers. Tous les fichiers .kt d’un programme Kotlin sont compilés ensemble, de sorte qu’une fonction ou une classe déclarée dans un fichier peut être utilisée dans n’importe quel autre fichier du même package sans import :

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"

// Main.kt
fun main() {
    println(greeting("Ada"))
}

L’exécution de ce programme affiche Hello, Ada! : main dans Main.kt appelle la fonction qui se trouve dans Greeting.kt.

Un fichier Kotlin ne contient que des déclarations : des classes, des fonctions et des propriétés. Les instructions telles que println(...) doivent se trouver à l’intérieur d’une fonction. Le programme démarre avec fun main(), qui se trouve généralement dans Main.kt :

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi")            // erreur : les instructions doivent être à l'intérieur d'une fonction

// Main.kt
fun main() {
    val name = readLine() ?: "friend"
    println(greeting(name))
}

La structure habituelle consiste à avoir une classe par fichier, nommée d’après la classe : Dog.kt contient Dog, Account.kt contient Account. Dans les exercices de cette section, votre code va dans ces fichiers et Main.kt contient le code d’entrée/sortie fourni, que vous ne pouvez généralement pas modifier. L’éditeur affiche chaque fichier sous forme d’onglet.

Dog.kt        // class Dog(...) { ... }
Account.kt    // class Account { ... }
Main.kt       // fun main(): lit l'entrée et affiche les résultats

La visibilité s’applique également aux fichiers. Une déclaration de niveau supérieur marquée private n’est visible qu’à l’intérieur de son propre fichier, tandis que la valeur par défaut, public, la rend visible dans tous les fichiers :

// Secret.kt
private const val SALT = "x7"        // seul ce fichier peut le voir
fun hashed(s: String) = s + SALT

// Main.kt
fun main() {
    println(hashed("pw"))            // ok : hashed est public
    // println(SALT)                 // erreur : SALT est privé dans Secret.kt
}
challenge icon

Défi

Facile

Le programme comporte deux fichiers. main dans Main.kt lit les noms et affiche le résultat de greeting(name). Complétez greeting dans Greeting.kt afin qu’il renvoie Hello, Ada! pour le nom Ada, ou Hello, friend! lorsque le nom est vide.

Votre code doit se trouver dans Greeting.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 : gardez-le tel quel
    val input = generateSequence(::readLine).toList()
    for (name in input) println(greeting(name))
}
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