Travailler avec des fichiers
Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 1 sur 57.
Les programmes réels sont répartis dans plusieurs fichiers. Tous les fichiers .kt d’un programme Kotlin sont compilés ensemble ; une fonction ou une classe déclarée dans un fichier peut donc être utilisée dans n’importe quel autre fichier du même package sans importation :
// 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, des propriétés. Les instructions telles que println(...) doivent se trouver dans une fonction. Le programme démarre à fun main(), qui se trouve par convention dans Main.kt :
// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi") // erreur : les instructions doivent se trouver dans une fonction
// Main.kt
fun main() {
val name = readLine() ?: "friend"
println(greeting(name))
}La disposition habituelle est d’avoir une classe par fichier, nommé d’après la classe : Dog.kt contient Dog, Account.kt contient Account. Dans les défis de cette section, ton code va dans ces fichiers et Main.kt contient le code d’entrée/sortie fourni, que tu ne peux 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ésultatsLa visibilité s'applique aussi aux fichiers. Une déclaration de niveau supérieur marquée private est visible uniquement dans 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 y accéder
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
}Défi
FacileLe programme comporte deux fichiers. main dans Main.kt lit les noms et affiche le résultat de greeting(name). Complète greeting dans Greeting.kt afin qu’elle renvoie Hello, Ada! pour le nom Ada, ou Hello, friend! lorsque le nom est vide.
Ton 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 : conservez-le tel quel
val input = generateSequence(::readLine).toList()
for (name in input) println(greeting(name))
}
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 livresEntraînez-vous par vous-même : Playground Kotlin