Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

العمل مع الملفات

جزء من قسم البرمجة كائنية التوجه في رحلة Kotlin على Coddy. الدرس 1 من 57.

تُقسَّم البرامج الحقيقية إلى عدة ملفات. تُجمَّع جميع ملفات .kt في برنامج Kotlin معًا، لذلك يمكن استخدام دالة أو فئة مُعلنة في ملف واحد في أي ملف آخر من الحزمة نفسها دون استيراد:

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

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

تطبع beالبرنامج عند تشغيله 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 is public
    // println(SALT)                 // خطأ: SALT is private in 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اختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: Playground لـ Kotlin