0Pricing
Kotlin Academy · درس

حالات الاستخدام

نمذجة المجال

حالات الاستخدام درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

نمذجة المجال

تتألق فئات القيم في نمذجة المجال. فهي تحوّل القيم البدائية المجهولة إلى أنواع ذات معنى ومحصّنة ضد الأخطاء، من دون تكلفة تشغيلية.

لنستعرض معًا سيناريوهات واقعية.

المعرّفات ذات الأنواع

تمنع أنواع المعرّفات المميّزة تمرير معرّف مستخدم حيث يجب استخدام معرّف طلب — وهو خطأ شائع ومكلف.

@JvmInline
value class UserId(val value: Long)
@JvmInline
value class OrderId(val value: Long)

fun fetchUser(id: UserId) = "user " + id.value

fun main() {
    println(fetchUser(UserId(7)))
}

وحدات القياس

يمنع تغليف الأرقام في أنواع الوحدات جمع الأمتار مع الثواني بالخطأ، كما يوضّح معنى القيمة.

@JvmInline
value class Kilograms(val value: Double)

fun describe(weight: Kilograms) = weight.value.toString() + " kg"

fun main() {
    println(describe(Kilograms(72.5)))
}

السلاسل التي تم التحقق منها

اجمع بين فئة قيمة وكتلة init لضمان ثوابت مثل كون البريد الإلكتروني غير فارغ.

@JvmInline
value class Email(val value: String) {
    init {
        require(value.contains("@")) { "invalid email" }
    }
}

fun main() {
    println(Email("a@b.com").value)
}

النقود مع السلوك

مثّل النقود بأصغر وحدة وأضف العمليات إليها، متجنبًا أخطاء العملات الناتجة عن الأعداد ذات الفاصلة العائمة.

@JvmInline
value class Cents(val value: Long) {
    operator fun plus(other: Cents) = Cents(value + other.value)
    fun format() = "$" + value / 100.0
}

fun main() {
    val total = Cents(1500) + Cents(250)
    println(total.format())
}

واجهات برمجة ذاتية التوثيق

يكون توقيع الدالة الذي يستخدم فئات القيم أوضح بكثير من توقيع يحتوي على ثلاثة أعداد صحيحة غير مقيّدة.

@JvmInline
value class Width(val px: Int)
@JvmInline
value class Height(val px: Int)

fun area(w: Width, h: Height) = w.px * h.px

fun main() {
    println(area(Width(4), Height(5)))
}

تغليف البيانات الحساسة

يمكن لفئة القيمة إعادة تعريف toString لإخفاء الأسرار في السجلات مع إبقاء القيمة الخام متاحة.

@JvmInline
value class Token(val value: String) {
    override fun toString() = "Token(***)"
}

fun main() {
    val t = Token("abc123")
    println(t)          // masked
    println(t.value)    // real value when needed
}

فرض النطاقات

استخدم فئات القيم لحصر قواعد النطاق في مكان واحد، بحيث يستحيل إنشاء حالات غير صالحة في أي موضع.

@JvmInline
value class Rating(val stars: Int) {
    init {
        require(stars in 1..5) { "stars must be 1..5" }
    }
}

fun main() {
    println(Rating(4).stars)
}

المنشئات الذكية

اربط فئة قيمة بمصنع مرافق يعيد null عند الإدخال غير الصالح، لتجنب الاستثناءات عند حالات الفشل المتوقعة.

@JvmInline
value class Age(val value: Int) {
    companion object {
        fun of(n: Int): Age? = if (n in 0..150) Age(n) else null
    }
}

fun main() {
    println(Age.of(30)?.value)
    println(Age.of(-5))
}

ملخص الأنماط

تشمل الأنماط الشائعة لفئات القيم ما يلي:

  • المعرّفات ذات الأنواع لمنع الخلط
  • وحدات القياس
  • القيم البدائية التي تم التحقق منها باستخدام init
  • عمليات المجال عبر العوامل
  • إخفاء القيم الحساسة

أمان بتكلفة زهيدة

لأن فئات القيم تُضمَّن عادةً، تحصل على كل هذا الوضوح والأمان في نمذجة المجال بتكلفة تشغيلية تساوي صفرًا تقريبًا. إنها طريقة سهلة لإتاحة حالات غير صالحة للتمثيل.

اختبار سريع

اختبر فهمك لحالات استخدام فئات القيم.

مراجعة

اطّلعت على حالات استخدام عملية لفئات القيم:

  • المعرّفات ذات الأنواع والوحدات والسلاسل التي تم التحقق منها
  • النقود وعمليات المجال
  • إخفاء الأسرار والمنشئات الذكية

التالي: قيود فئات القيم.

الأسئلة الشائعة

هل درس «حالات الاستخدام» مجاني؟

نعم — نص درس «حالات الاستخدام» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «حالات الاستخدام»؟

نمذجة المجال تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «حالات الاستخدام»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أسماء الأنواع المستعارة
  2. فئات القيم المضمنة
  3. حالات الاستخدام
  4. القيود
← العودة إلى Kotlin Academy