Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti / Ereditarietà / Exercises / Dipendenti e ruoli

Soluzione: Dipendenti e ruoli

Ecco una possibile soluzione del compito.

Codice

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;

🦋 Trova il programma nel file dog-and-cat.raku.

Output

Anna - manager
Bob - intern

Commenti

  1. Manager e Intern ereditano da Employee l’attributo name e il metodo badge, quindi nessuno dei due deve ripetere quel codice.

  2. Ciascuna figlia sovrascrive role. Poiché badge chiama self.role, raccoglie la versione sovrascritta che appartiene all’oggetto vero e proprio, dando un badge diverso per la manager e per lo stagista.

  3. Il nome del metodo, role, è solo un nome. Ma coincide con la parola chiave role che verrà introdotta più avanti.

Dipendenti e ruoli   |   Una figura e un quadrato