Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos / Herencia / Exercises / Empleados y roles

Solución: Empleados y roles

Aquí tienes una posible solución para la tarea.

Código

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;

🦋 Puedes encontrar el código fuente en el archivo dog-and-cat.raku.

Salida

Anna - manager
Bob - intern

Comentarios

  1. Manager e Intern heredan de Employee el atributo name y el método badge, así que ninguna de las dos necesita repetir ese código.

  2. Cada hija sobrescribe role. Como badge llama a self.role, recoge la versión sobrescrita que pertenece al objeto real, dando una credencial distinta para la gerente y para el becario.

  3. El nombre del método, role, es solo un nombre. Pero coincide con la palabra clave role que se presentará más adelante.

Empleados y roles   |   Una figura y un cuadrado