Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Klasoj kaj objektoj / Heredo / Exercises / Dungitoj kaj roloj

Solvo: Dungitoj kaj roloj

Jen ebla solvo de la tasko.

Kodo

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;

🦋 Vi povas trovi la fontkodon en la dosiero dog-and-cat.raku.

Eligo

Anna - manager
Bob - intern

Komentoj

  1. Manager kaj Intern heredas la atributon name kaj la metodon badge el Employee, do neniu el ili bezonas ripeti tiun kodon.

  2. Ĉiu ido superregas role. Ĉar badge vokas self.role, ĝi prenas la superregantan version apartenantan al la efektiva objekto, donante malsaman insignon por la manaĝero kaj la staĝanto.

  3. La nomo de la metodo, role, estas nur nomo. Sed ĝi koincidas kun la ŝlosilvorto role, kiu estos enkondukita poste.

Kursa navigado

Dungitoj kaj roloj   |   Figuro kaj kvadrato