Sobes.tech
Junior

Explique comment sont organisés les paquets et modules dans Kotlin.

sobes.tech IA

Réponse de l'IA

Les paquets sont utilisés pour organiser le code, éviter les conflits de noms et améliorer la lisibilité. Ils sont déclarés avec le mot-clé package au début du fichier.

Les modules sont des ensembles de sources Kotlin, scripts de build, ressources et configurations du projet. Ils sont utilisés pour compiler, exécuter, tester et déployer. Dans les projets IntelliJ IDEA, un module correspond à un module IDE ; dans Gradle, à un projet racine ou sous-projet.

Différences :

  • Niveau d'organisation : Les paquets sont au niveau du code source, les modules au niveau de la compilation du projet.
  • Objectif : Les paquets pour le regroupement logique du code, les modules pour gérer dépendances, compilation et déploiement.
  • Hiérarchie : Les paquets forment une hiérarchie avec des points (par exemple, com.example.util), les modules peuvent avoir une hiérarchie (sous-projets dans Gradle) ou être indépendants.
  • Dépendances : Les dépendances sont indiquées entre modules, pas entre paquets.

Exemple de paquet :

// Fichier : Util.kt
package com.example.util

fun formatName(firstName: String, lastName: String): String {
    return "$firstName $lastName"
}

Utilisation du paquet :

package com.example.app

import com.example.util.formatName

fun main() {
    val fullName = formatName("John", "Doe")
    println(fullName)
}

Exemple de structure de projet avec modules (Gradle) :

myproject/
├── app/          // Module d'application
│   ├── build.gradle.kts
│   └── src/
│       └── main/kotlin/com/example/app/Main.kt
└── util/         // Module utilitaire
    ├── build.gradle.kts
    └── src/
        └── main/kotlin/com/example/util/Util.kt

Dans app/build.gradle.kts, la dépendance du module util sera indiquée :

// app/build.gradle.kts
plugins {
    kotlin("jvm")
}

dependencies {
    implementation(project(":util")) // Dépendance du module util
}