We show how finite-state machines can standardize the protocol used by
a component object to notify other interested objects of its state ch
anges, resulting in a more effective use of static types to constrain
both parties, and a more efficient dissemination of information. The e
nhanced component specification is called a logical observable entity,
or LOE. We address two key issues in effectively applying such a stra
tegy: how to extend subtyping to consider the state machines, and how
to ensure some kind of compliance between the state-machine specificat
ion and its implementation. This leads to an unusual subtyping predica
te for LOEs on the one hand, and a prototype code generation strategy
on the other.