class person extends actor { person
public person() {
role = new actor[ Final+1 ];
for( int i = Person; i <= Final; i++ ) role[i]=this;
become(Person);
}
public boolean exists() { return role [role] != this; }
public actor self() {
if ( role[ Person ] != this ) return role[ Person ].self();
else return role [role];
}
public void become(actor p) { role[ Person ] = p; }
public void become(int R) {
if (role[ Person ] != this) 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;
default: break; // nothing happens
}
}
} }
int _role;
actor role[];
};
slide: person.java