= Solution
A suitable relationship is a circle implementing a read-only shape <object interface> whose operations include area. Every circle satisfies that <object interface>'s behavioral contract, so clients using a shape can use a circle through <subtype polymorphism>; <dynamic dispatch> selects its area implementation.
A car is not appropriately modeled as a subclass of an engine merely because it needs engine behavior. \b[Use <object composition>]: the car contains an engine and delegates engine-related work to it. An engine is a component of a car, not a category containing cars. The design can replace the component independently without making all engine operations part of the car's public <object interface>. <Class inheritance> should reflect substitutability, rather than serve solely as a convenient way to obtain another <software class>'s code.
Back to article page