Sobes.tech
Junior

Selgitage, kuidas on Kotlinis pakid ja moodulid üles ehitatud.

sobes.tech AI

Vastus AI-lt

Komplektid kasutatakse koodi organiseerimiseks, nimede konfliktide vältimiseks ja loetavuse parandamiseks. Need deklareeritakse võtmesõnaga package faili alguses.

Moodulid — see on Kotlin allikakoodide, ehitusskriptide, ressursside ja projekti seadistuste kogum. Need kasutatakse kompileerimiseks, täitmiseks, testimiseks ja juurutamiseks. IntelliJ IDEA projektides vastab moodul IDE moodulile; Gradle'is — põhiprojektile või alamprojektile.

Erinevused:

  • Organisatsiooni tase: Paketid — lähtekoodi tasandil, moodulid — ehituse tasandil.
  • Eesmärk: Paketid on mõeldud loogiliseks koodi rühmitamiseks, moodulid sõltuvuste, kompileerimise ja juurutamise haldamiseks.
  • Hierarhia: Paketid moodustavad hierarhia punktiga (näiteks com.example.util), moodulid võivad omada hierarhiat (alamprojektid Gradle'is) või olla sõltumatud.
  • Sõltuvused: Sõltuvused näidatakse moodulite vahel, mitte pakettide vahel.

Paki näide:

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

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

Paki kasutamine:

package com.example.app

import com.example.util.formatName

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

Projekti struktuuri näide moodulitega (Gradle):

myproject/
├── app/          // Rakenduse moodul
│   ├── build.gradle.kts
│   └── src/
│       └── main/kotlin/com/example/app/Main.kt
└── util/         // Kasutajamoodul
    ├── build.gradle.kts
    └── src/
        └── main/kotlin/com/example/util/Util.kt

app/build.gradle.kts näitab sõltuvust util moodulist:

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

dependencies {
    implementation(project(":util")) // Sõltuvus util moodulist
}