Sobes.tech
Junior

Explicați cum sunt structurate pachetele și modulele în Kotlin.

sobes.tech AI

Răspuns de la AI

Pachetele sunt utilizate pentru organizarea codului, prevenirea conflictelor de nume și îmbunătățirea lizibilității. Sunt declarate cu cuvântul cheie package la începutul fișierului.

Modulele sunt colecții de surse Kotlin, scripturi de construire, resurse și setări ale proiectului. Sunt utilizate pentru compilare, execuție, testare și implementare. În proiectele IntelliJ IDEA, un modul corespunde unui modul IDE; în Gradle — unui proiect rădăcină sau subproiect.

Diferențe:

  • Nivel de organizare: Pachetele la nivel de cod sursă, modulele la nivel de compilare a proiectului.
  • Scop: Pachetele pentru gruparea logică a codului, modulele pentru gestionarea dependențelor, compilare și implementare.
  • Hierarhie: Pachetele formează o ierarhie cu puncte (de exemplu, com.example.util), modulele pot avea o ierarhie (subproiecte în Gradle) sau pot fi independente.
  • Dependențe: Sunt indicate între module, nu între pachete.

Exemplu de pachet:

// Fișier: Util.kt
package com.example.util

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

Utilizarea pachetului:

package com.example.app

import com.example.util.formatName

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

Exemplu de structură de proiect cu module (Gradle):

myproject/
├── app/          // Modul de aplicație
│   ├── build.gradle.kts
│   └── src/
│       └── main/kotlin/com/example/app/Main.kt
└── util/         // Modul utilitar
    ├── build.gradle.kts
    └── src/
        └── main/kotlin/com/example/util/Util.kt

În app/build.gradle.kts, va fi indicată dependența de modulul util:

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

dependencies {
    implementation(project(":util")) // Dependență de modulul util
}