Cursus Raku / Objecten, in- en uitvoer en excepties / Klassen en objecten / Overerving / Exercises / Medewerkers en rollen

Oplossing: Medewerkers en rollen

Hier is een mogelijke oplossing voor de taak.

Code

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;

🦋 Je kunt de broncode vinden in het bestand dog-and-cat.raku.

Uitvoer

Anna - manager
Bob - intern

Opmerkingen

  1. Manager en Intern erven het attribuut name en de methode badge van Employee, dus hoeft geen van beide die code te herhalen.

  2. Elk kind overschrijft role. Omdat badge self.role aanroept, pakt het de overschrijvende versie op die bij het werkelijke object hoort, wat een andere badge voor de manager en de stagiair oplevert.

  3. De naam van de methode, role, is slechts een naam. Maar hij valt samen met het sleutelwoord role dat later geïntroduceerd wordt.

Cursusnavigatie

Medewerkers en rollen   |   Een vorm en een vierkant