When a library system grows from ordinary members to VIP and Super members, extending the class hierarchy can turn a small feature into a structural crisis. New inheritance paths create multiple diamonds—ambiguities caused when a class inherits from two classes sharing a common ancestor. Composition offers the simpler direction: assemble objects from components rather than keep adding subclasses. section 1.2.4
A feature that arrives too late
Super members need to list books lent to other members. Adding that capability to the existing hierarchy produces three deadly diamonds, and replacing User with an interface does not rescue the deadline. The practical lesson is provocative but concise: prefer composition over class inheritance before the hierarchy becomes difficult to change. section 1.2.4
Compare the class diagram for Super and VIP members to see how additional roles multiply inheritance complexity. section 1.2.4

