Sobes.tech
Junior

Explica cómo están estructurados los paquetes y módulos en Kotlin.

sobes.tech AI

Respuesta de la IA

Los paquetes se utilizan para organizar el código, prevenir conflictos de nombres y mejorar la legibilidad. Se declaran con la palabra clave package al inicio del archivo.

Los módulos son conjuntos de fuentes Kotlin, scripts de compilación, recursos y configuraciones del proyecto. Se utilizan para compilar, ejecutar, probar y desplegar. En los proyectos de IntelliJ IDEA, un módulo corresponde a un módulo de IDE; en Gradle, a un proyecto raíz o subproyecto.

Diferencias:

  • Nivel de organización: Los paquetes están a nivel de código fuente, los módulos a nivel de compilación del proyecto.
  • Propósito: Los paquetes para agrupación lógica de código, los módulos para gestionar dependencias, compilación y despliegue.
  • Jerarquía: Los paquetes forman una jerarquía mediante puntos (por ejemplo, com.example.util), los módulos pueden tener jerarquía (subproyectos en Gradle) o ser independientes.
  • Dependencias: Las dependencias se indican entre módulos, no entre paquetes.

Ejemplo de paquete:

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

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

Uso del paquete:

package com.example.app

import com.example.util.formatName

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

Ejemplo de estructura de proyecto con módulos (Gradle):

myproject/
├── app/          // Módulo de aplicación
│   ├── build.gradle.kts
│   └── src/
│       └── main/kotlin/com/example/app/Main.kt
└── util/         // Módulo de utilidades
    ├── build.gradle.kts
    └── src/
        └── main/kotlin/com/example/util/Util.kt

En app/build.gradle.kts se indicará la dependencia del módulo util:

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

dependencies {
    implementation(project(":util")) // Dependencia del módulo util
}