Menu
CoddyTech

Ulasan: Direktori Staf

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Kotlin di Coddy. Pelajaran 21 dari 57.

challenge icon

Tantangan

Sedang

Buat direktori staf sebagai hierarki class.

  • Person(name) bersifat abstrak. Class ini mendeklarasikan role() abstrak dan mengimplementasikan card(), yang mengembalikan Ada (staff in sales) dan tidak dapat ditimpa.
  • Staff(name, department) bersifat terbuka; perannya adalah staff in sales.
  • Manager(name, department) mewarisi Staff dan menyimpan tim privat. hire(member) mengembalikan true dan menambahkan anggota jika anggota tersebut bekerja di departemen yang sama, bukan manajernya, dan belum ada di tim, serta mengembalikan false jika tidak. Perannya adalah peran Staff diikuti , 2 reports (gunakan super).
  • Contractor(name, days) mewarisi Person; perannya adalah contractor for 30 days.

Kode yang disediakan membaca perintah staff Ada sales, manager Bo sales, contractor Cy 30 atau hire Bo Ada (kode ini mencetak hired atau refused, juga ketika nama tidak dikenal), lalu mencetak kartu setiap orang sesuai urutan mereka ditambahkan.

Tulis kodemu di Person.kt, Staff.kt, Manager.kt dan Contractor.kt. Main.kt berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

fun main() {
    // Kode input/output yang disediakan: biarkan tetap seperti semula
    val input = generateSequence(::readLine).toList()
    val people = mutableListOf<Person>()
    val staff = mutableMapOf<String, Staff>()
    val managers = mutableMapOf<String, Manager>()
    for (cmd in input) {
        val p = cmd.split(" ")
        when (p[0]) {
            "staff" -> Staff(p[1], p[2]).also { people.add(it); staff[it.name] = it }
            "manager" -> Manager(p[1], p[2]).also { people.add(it); staff[it.name] = it; managers[it.name] = it }
            "contractor" -> people.add(Contractor(p[1], p[2].toInt()))
            "hire" -> {
                val boss = managers[p[1]]
                val worker = staff[p[2]]
                println(if (boss != null && worker != null && boss.hire(worker)) "hired" else "refused")
            }
        }
    }
    for (person in people) println(person.card())
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Playground Kotlin