مراجعة - شباك التذاكر
جزء من قسم البرمجة كائنية التوجه في رحلة Kotlin على Coddy. الدرس 16 من 57.
التحدي
متوسطأنشئ مكتب تذاكر صغيرًا باستخدام ثلاثة أنواع من التعريفات.
- يحتوي
Ticketعلى مُنشئ خاص يأخذnumberوshowوseat. ويحتوي الكائن المرافق له علىconst val SEATS = 3، وعداد خاص، والمصنعissue(show, seat)، الذي يمنح التذاكر الأرقام 1 و2 و3 ...؛ أماissuedفهو عدد التذاكر التي أُصدرت حتى الآن. تُرجعlabel()القيمة#1 Hamlet seat 2. - إن
BoxOfficeكائن. يردsell(show, seat)بالقيمةno seat 4عندما يكون المقعد خارج النطاق من 1 إلىTicket.SEATS، وبالقيمةseat 2 takenعندما يكون قد بيع لهذا العرض، وإلا فإنه يُصدر تذكرة ويرد بوسمها. تحررrefund(number)مقعد التذكرة المباعة وترد بالقيمةrefunded #1، أوno ticket #9. يردreport()بالقيمةHamlet 2/3, Cats 1/3مع ترتيب العروض أبجديًا، أو بالقيمةnothing sold.
يقرأ الكود المقدم الأوامر sell Hamlet 2 أو refund 1 أو report، ويطبع كل رد، ثم يطبع أخيرًا tickets issued: متبوعًا بالعدد. لا يُعاد استخدام الأرقام بعد استرداد التذكرة.
ضع كودك في Ticket.kt وBoxOffice.kt. يحتوي Main.kt على كود الإدخال/الإخراج المقدم، ولا يمكن تعديله.
جرّب بنفسك
fun main() {
// كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
val input = generateSequence(::readLine).toList()
for (cmd in input) {
val p = cmd.split(" ")
when (p[0]) {
"sell" -> println(BoxOffice.sell(p[1], p[2].toInt()))
"refund" -> println(BoxOffice.refund(p[1].toInt()))
else -> println(BoxOffice.report())
}
}
println("tickets issued: ${Ticket.issued}")
}
جميع دروس البرمجة كائنية التوجه
1الفئات والكائنات
العمل مع الملفاتتعريف الفئاتالمنشئات الأساسيةكتل init والتحقق من الصحةالمنشئات الثانويةمراجعة - بطاقة المكتبة4الوراثة
الأصناف المفتوحة والأصناف الفرعيةتجاوز الأعضاءsuper والمنشئاتالأصناف المجرّدةمراجعة - دليل الموظفين3الكائنات والكائنات المرافقة
تعريفات الكائناتالكائنات المرافقةالثوابت باستخدام constتعبيرات الكائناتمراجعة - شباك التذاكرتدرّب بنفسك: Playground لـ Kotlin