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 - internKomentoj
ManagerkajInternheredas la atributonnamekaj la metodonbadgeelEmployee, do neniu el ili bezonas ripeti tiun kodon.Ĉiu ido superregas
role. Ĉarbadgevokasself.role, ĝi prenas la superregantan version apartenantan al la efektiva objekto, donante malsaman insignon por la manaĝero kaj la staĝanto.La nomo de la metodo,
role, estas nur nomo. Sed ĝi koincidas kun la ŝlosilvortorole, kiu estos enkondukita poste.