To build a drawing tool (system).
The tool will have a collection of graphic elements, which will be able to perform draw operations such as draw, move, grow, shrink and animate.
Graphic Elements
This problem has many drawable types as shown.
They include: Arc, Line, Fractal, Ellipse, Rectangle, ... (unlimited)
Puzzle
This is complex. We need to design a system but the number of element types is unlimited (infinite)?
Arc
Line Fractal
Ellipse
Rectangle
etc
How Can We Simplify?
We come up with the general or abstract idea of what we need. Design is about ideas so it fits perfectly.
We might call it a Drawable (or GraphicElement, etc).
What Can a Drawable Do?
A Drawable can perform the
"draw operations" (mentioned in the problem statement).
We now have simple algorithms like:
Iterate over drawables
eachDrawable.draw()