Sobes.tech
Junior

Leg uit hoe pakketten en modules in Kotlin zijn opgebouwd.

sobes.tech AI

Antwoord van AI

Pakketten worden gebruikt om code te organiseren, naamconflicten te voorkomen en de leesbaarheid te verbeteren. Ze worden gedeclareerd met het sleutelwoord package aan het begin van het bestand.

Modules zijn verzamelingen van Kotlin-bronnen, build-scripts, bronnen en projectinstellingen. Ze worden gebruikt voor compilatie, uitvoering, testen en implementatie. In IntelliJ IDEA-projecten komt een module overeen met een IDE-module; in Gradle met een hoofdbroject of subproject.

Verschillen:

  • Organisatieniveau: Pakketten op broncode-niveau, modules op project-compileerniveau.
  • Doel: Pakketten voor logische groepering van code, modules voor afhankelijkheidsbeheer, compilatie en implementatie.
  • Hiërarchie: Pakketten vormen een hiërarchie met punten (bijvoorbeeld com.example.util), modules kunnen hiërarchisch zijn (subprojecten in Gradle) of onafhankelijk.
  • Afhankelijkheden: Worden tussen modules aangegeven, niet tussen pakketten.

Voorbeeld van een pakket:

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

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

Gebruik van het pakket:

package com.example.app

import com.example.util.formatName

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

Voorbeeld van projectstructuur met modules (Gradle):

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

In app/build.gradle.kts wordt de afhankelijkheid van de util-module aangegeven:

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

dependencies {
    implementation(project(":util")) // Afhankelijkheid van de util-module
}