To design classes effectively, the designer must understand the class specification and how it interacts with other classes, with an emphasis on reusability to improve productivity and reduce development time. The Unified Modeling Language's Object Constraint Language is used to formally express the rules and semantics of UML models, allowing designers to specify class attributes, select related values based on qualifiers, and filter sets based on boolean expressions.