Menu
CoddyTech

עבודה עם קבצים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Kotlin של Coddy. שיעור 1 מתוך 57.

תוכניות אמיתיות מחולקות למספר קבצים. כל קובצי .kt של תוכנית Kotlin מתקמפלים יחד, ולכן אפשר להשתמש בפונקציה או במחלקה שהוצהרו בקובץ אחד בכל קובץ אחר באותה חבילה בלי ייבוא:

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

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

הרצת התוכנית מדפיסה Hello, Ada!: הפונקציה main שבקובץ Main.kt קוראת לפונקציה שנמצאת בקובץ Greeting.kt.

קובץ Kotlin מכיל הצהרות בלבד: מחלקות, פונקציות, מאפיינים. פקודות כמו println(...) חייבות להופיע בתוך פונקציה. התוכנית מתחילה ב־fun main(), שלפי המוסכמה נמצא בקובץ Main.kt:

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi")            // שגיאה: פקודות חייבות להיות בתוך פונקציה

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

הפריסה המקובלת היא מחלקה אחת לכל קובץ, שנקרא על שם המחלקה: Dog.kt מכיל את Dog, ו-Account.kt מכיל את Account. באתגרים של יחידה זו, הקוד שלך נכנס לקבצים האלה, ו-Main.kt מכיל את קוד הקלט/פלט שסופק, שבדרך כלל אי אפשר לערוך. העורך מציג כל קובץ כלשונית.

Dog.kt        // class Dog(...) { ... }
Account.kt    // class Account { ... }
Main.kt       // fun main(): קוראת את הקלט ומדפיסה את התוצאות

הנראות חלה גם על קבצים. הצהרה ברמה העליונה שמסומנת כ-private גלויה רק בתוך הקובץ שלה, ואילו ברירת המחדל, public, הופכת אותה לגלויה בכל קובץ:

// Secret.kt
private const val SALT = "x7"        // רק הקובץ הזה יכול לגשת אליו
fun hashed(s: String) = s + SALT

// Main.kt
fun main() {
    println(hashed("pw"))            // תקין: hashed הוא public
    // println(SALT)                 // שגיאה: SALT הוא private ב-Secret.kt
}
challenge icon

אתגר

קל

לתוכנית יש שני קבצים. main שבקובץ Main.kt קורא שמות ומדפיס את התוצאה של greeting(name). השלימו את greeting בקובץ Greeting.kt כך שהיא תחזיר Hello, Ada! עבור השם Ada, או Hello, friend! כשהשם ריק.

הקוד שלכם צריך להיכתב בקובץ Greeting.kt. הקובץ Main.kt מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.

נסו בעצמכם

fun main() {
    // קוד הקלט והפלט שסופק: יש להשאיר אותו כפי שהוא
    val input = generateSequence(::readLine).toList()
    for (name in input) println(greeting(name))
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: Kotlin אונליין