
Design Alternatives and Perspectives ◾ 263
focus the intent of a class design and imply specic and thus clear utility.
Wide interfaces undermine cohesion and maintainability. e Program
to Interface Not Implementation (PINI) principle underscores the OOD
tenets of abstraction and encapsulation by serving to isolate the applica-
tion programmer from volatile or arbitrary implementation details. ese
two principles drive class design, especially when classes are designed
together, whether for inheritance or composition.
e Dependency Inversion principle (DIP) reinforces the importance of
an extensible, possibly abstract, interface at the base ...