#### Scaling shapes

No. 169

 Q: We want shapes to become scalable: In the above example the rectangle is being shrunk to 50% of its original size whereas the circle's radius is being doubled. Add a corresponding scale(...) method to the inheritance hierarchy which allows for operation chaining as well. Provide appropriate unit tests. A: Maven module source code available at P/Sd1/Figure/Scale. This task is pretty much straightforward. Since scaling requires specific details (like radius or width and height) a scale() method cannot be implemented on top level of our inheritance hierarchy. We thus start by defining an abstract method in our class Shape: /** * * @param factor Scale the current shape by this value. * @return The current object. */ public abstract Shape scale(double factor);This method has to be implemented in our two concrete classes Circle and Rectangle. Sensible unit tests may be based on the observation that: A shape's perimeter grows linear with the scaling factor. A shape's area grows linear with the scaling factor's square.