Menu
CoddyTech

Arbeiten mit Dateien

Teil des Abschnitts Objektorientierte Programmierung der Kotlin-Journey von Coddy. Lektion 1 von 57.

Echte Programme sind auf mehrere Dateien verteilt. Alle .kt-Dateien eines Kotlin-Programms werden gemeinsam kompiliert, sodass eine in einer Datei deklarierte Funktion oder Klasse in jeder anderen Datei desselben Pakets ohne Import verwendet werden kann:

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"

// Main.kt
fun main() {
    println(greeting("Ada"))
}

Beim Ausführen dieses Programms wird Hello, Ada! ausgegeben: main in Main.kt ruft die Funktion auf, die sich in Greeting.kt befindet.

Eine Kotlin-Datei enthält nur Deklarationen: Klassen, Funktionen, Eigenschaften. Anweisungen wie println(...) müssen sich innerhalb einer Funktion befinden. Das Programm beginnt bei fun main(), das sich üblicherweise in Main.kt befindet:

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi")            // Fehler: Anweisungen müssen sich innerhalb einer Funktion befinden

// Main.kt
fun main() {
    val name = readLine() ?: "friend"
    println(greeting(name))
}

Das übliche Layout sieht eine Klasse pro Datei vor, benannt nach der Klasse: Dog.kt enthält Dog, Account.kt enthält Account. In den Herausforderungen dieses Abschnitts kommt dein Code in diese Dateien und Main.kt enthält den vorgegebenen Ein-/Ausgabecode, den du normalerweise nicht bearbeiten kannst. Der Editor zeigt jede Datei als Tab an.

Dog.kt        // class Dog(...) { ... }
Account.kt    // class Account { ... }
Main.kt       // fun main(): liest die Eingabe und gibt die Ergebnisse aus

Die Sichtbarkeit gilt auch für Dateien. Eine als private markierte Deklaration auf oberster Ebene ist nur innerhalb ihrer eigenen Datei sichtbar, während der Standardwert public sie in jeder Datei sichtbar macht:

// Secret.kt
private const val SALT = "x7"        // Nur diese Datei kann darauf zugreifen
fun hashed(s: String) = s + SALT

// Main.kt
fun main() {
    println(hashed("pw"))            // in Ordnung: hashed ist öffentlich
    // println(SALT)                 // Fehler: SALT ist in Secret.kt privat
}
challenge icon

Aufgabe

Einfach

Das Programm besteht aus zwei Dateien. main in Main.kt liest Namen ein und gibt das Ergebnis von greeting(name) aus. Vervollständige greeting in Greeting.kt, sodass für den Namen Ada Hello, Ada! zurückgegeben wird oder Hello, friend!, wenn der Name leer ist.

Dein Code gehört in Greeting.kt. Main.kt enthält den bereitgestellten Ein-/Ausgabecode und darf nicht bearbeitet werden.

Probier es selbst

fun main() {
    // Vorgegebener Ein-/Ausgabecode: unverändert lassen
    val input = generateSequence(::readLine).toList()
    for (name in input) println(greeting(name))
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Kotlin-Playground