Yeah, that wording is somewhat poor. It really should say something like "Roles can provide attributes." Except, of course, the Role actually has the attribute if you consider the class as a composition of separate roles with the class itself being an anonymous role that is instantiable (which, if you think about it, is one of the two major differences between a class and a role (the other being that a class has to be complete and a role can be incomplete)). And, in any case, the instance of the class is the thing that actually has the attribute, the class merely being the template by which instances are created.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?