Changing Roles

    void person::become(actor* p) { role[Person] = p; } 
permanent

void person::become(Role r) { require( Person <= r && r <= Final ); if (exists()) self()->become(r); else { _role = r; if ( role [role] == this ) { switch (_role) { case Person: break;
nothing changes

case Student: role [role] = new student; break; case Employer: role [role] = new employer; break; case Final: role [role] = new actor; break; }; } } }

slide: Changing Roles