Raku kurss / Objekti, ievade/izvade un izņēmumi / Klases un objekti / Mantošana / Exercises / Darbinieki un lomas

Risinājums: Darbinieki un lomas

Šeit ir iespējams risinājums uzdevumam.

Kods

class Employee {
    has $.name;
    method role {
        'staff';
    }
    method badge {
        "$.name - " ~ self.role;
    }
}

class Manager is Employee {
    method role { 'manager' }
}

class Intern is Employee {
    method role { 'intern' }
}

say Manager.new(name => 'Anna').badge;
say Intern.new(name => 'Bob').badge;

🦋 Atrodiet programmu failā dog-and-cat.raku.

Izvade

Anna - manager
Bob - intern

Komentāri

  1. Manager un Intern manto no Employee atribūtu name un metodi badge, tāpēc nevienam no tiem šis kods nav jāatkārto.

  2. Katra bērnklase pārraksta role. Tā kā badge izsauc self.role, tā paņem pārrakstīto versiju, kas pieder īstajam objektam, dodot atšķirīgu caurlaidi vadītājam un praktikantam.

  3. Metodes nosaukums role ir tikai nosaukums. Taču tas sakrīt ar atslēgvārdu role, ar ko iepazīsimies vēlāk.

Kursa navigācija

Darbinieki un lomas   |   Figūra un kvadrāts