Sobes.tech
Junior

Објасните како су пакети и модули уређени у Kotlin-у.

sobes.tech АИ

Одговор од АИ

Paketi se koriste za organizaciju koda, sprečavanje konflikata imena i poboljšanje čitljivosti. Deklarišu se ključnom rečju package na početku fajla.

Moduli su skupovi Kotlin izvora, skripti za izgradnju, resursa i podešavanja projekta. Koriste se za kompilaciju, izvršavanje, testiranje i implementaciju. U IntelliJ IDEA projektima, modul odgovara IDE modulu; u Gradle-u — koren ili podprojekat.

Razlike:

  • Nivo organizacije: Paketi na nivou izvornog koda, moduli na nivou izgradnje projekta.
  • Svrha: Paketi za logičku grupisanje koda, moduli za upravljanje zavisnostima, kompilaciju i implementaciju.
  • Hijerarhija: Paketi formiraju hijerarhiju pomoću tačaka (npr. com.example.util), moduli mogu imati hijerarhiju (podprojekti u Gradle-u) ili biti nezavisni.
  • Zavisnosti: Zavisnosti se navode između modula, a ne između paketa.

Primer paketa:

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

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

Korišćenje paketa:

package com.example.app

import com.example.util.formatName

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

Primer strukture projekta sa modulima (Gradle):

myproject/
├── app/          // Modul aplikacije
│   ├── build.gradle.kts
│   └── src/
│       └── main/kotlin/com/example/app/Main.kt
└── util/         // Utility modul
    ├── build.gradle.kts
    └── src/
        └── main/kotlin/com/example/util/Util.kt

U app/build.gradle.kts će biti naznačena zavisnost od modula util:

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

dependencies {
    implementation(project(":util")) // Zavisnost od util modula
}