Junior
Explique como são estruturados os pacotes e módulos em Kotlin.
sobes.tech IA
Resposta da IA
Os pacotes são utilizados para organizar o código, evitar conflitos de nomes e melhorar a legibilidade. São declarados com a palavra-chave package no início do ficheiro.
Os módulos são conjuntos de fontes Kotlin, scripts de compilação, recursos e configurações do projeto. São utilizados para compilar, executar, testar e implementar. Nos projetos IntelliJ IDEA, um módulo corresponde a um módulo IDE; no Gradle, a um projeto raiz ou subprojeto.
Diferenças:
- Nível de organização: Pacotes a nível de código fonte, módulos a nível de compilação do projeto.
- Propósito: Pacotes para agrupamento lógico de código, módulos para gestão de dependências, compilação e implementação.
- Hierarquia: Pacotes formam uma hierarquia com pontos (por exemplo,
com.example.util), módulos podem ter hierarquia (subprojetos no Gradle) ou serem independentes. - Dependências: São indicadas entre módulos, não entre pacotes.
Exemplo de pacote:
// Ficheiro: Util.kt
package com.example.util
fun formatName(firstName: String, lastName: String): String {
return "$firstName $lastName"
}
Utilização do pacote:
package com.example.app
import com.example.util.formatName
fun main() {
val fullName = formatName("John", "Doe")
println(fullName)
}
Exemplo de estrutura de projeto com módulos (Gradle):
myproject/
├── app/ // Módulo de aplicação
│ ├── build.gradle.kts
│ └── src/
│ └── main/kotlin/com/example/app/Main.kt
└── util/ // Módulo de utilitários
├── build.gradle.kts
└── src/
└── main/kotlin/com/example/util/Util.kt
No app/build.gradle.kts, será indicada a dependência do módulo util:
// app/build.gradle.kts
plugins {
kotlin("jvm")
}
dependencies {
implementation(project(":util")) // Dependência do módulo util
}