Sobes.tech
Junior

Spiega come sono strutturati i pacchetti e i moduli in Kotlin.

sobes.tech AI

Risposta dell'AI

I pacchetti vengono utilizzati per organizzare il codice, prevenire conflitti di nomi e migliorare la leggibilità. Si dichiarano con la parola chiave package all'inizio del file.

I moduli sono insiemi di sorgenti Kotlin, script di build, risorse e configurazioni del progetto. Sono usati per compilare, eseguire, testare e distribuire. Nei progetti IntelliJ IDEA, un modulo corrisponde a un modulo IDE; in Gradle, a un progetto principale o subprogetto.

Differenze:

  • Livello di organizzazione: Pacchetti a livello di codice sorgente, moduli a livello di compilazione del progetto.
  • Scopo: Pacchetti per raggruppamenti logici di codice, moduli per gestire dipendenze, compilazione e distribuzione.
  • Gerarchia: I pacchetti formano una gerarchia con punti (ad esempio, com.example.util), i moduli possono avere una gerarchia (sottoprogetti in Gradle) o essere indipendenti.
  • Dipendenze: Le dipendenze sono indicate tra moduli, non tra pacchetti.

Esempio di pacchetto:

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

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

Utilizzo del pacchetto:

package com.example.app

import com.example.util.formatName

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

Esempio di struttura di progetto con moduli (Gradle):

myproject/
├── app/          // Modulo applicativo
│   ├── build.gradle.kts
│   └── src/
│       └── main/kotlin/com/example/app/Main.kt
└── util/         // Modulo utilità
    ├── build.gradle.kts
    └── src/
        └── main/kotlin/com/example/util/Util.kt

Nel file app/build.gradle.kts, si indica la dipendenza dal modulo util:

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

dependencies {
    implementation(project(":util")) // Dipendenza dal modulo util
}