| Class Summary | 
| ADecoratorPaintStrategy | Abstract class that provides default behavior for subclasses
 that will decorate another IPaintStrategy to add functionality
 to that strategy. | 
| AnimatePaintStrategy | Concrete paint strategy that cycles through a sequence of paint 
 strategies, painting one per paint update. | 
| APaintStrategy | An abstract paint strategy that provides default behavior for its subclasses. | 
| BallPaintStrategy | Paint strategy that paints a filled circle with the Ball's radius. | 
| BirdSheepImagePaintStrategy | An example of an ImagePaintStrategy that randomly picks one
 of two animated image files to display when it is instantiated. | 
| EllipsePaintStrategy | Paint strategy to paint an ellipse shape | 
| Fish1PaintStrategy | Paint strategy that paints a fish-shaped Polygon generated
 by a Fish1PolyfonFactory. | 
| Fish2PaintStrategy | Paint strategy that paints a fish-shaped Polygon generated
 by a Fish2PolyfonFactory. | 
| FixedColorDecoratorPaintStrategy | Decorator paint strategy that decorates another IPaintStrategy and
 causes the painted color to always be a specified, fixed color. | 
| ImagePaintStrategy | Paint strategy that paints an image from a file, scaled to the host 
 Ball's radius. | 
| MultiPaintStrategy | A composite design pattern exension of APaintStrategy that 
 paints a set of paint strategies. | 
| NiceFishPaintStrategy | Subclass of MultiPaintStrategy that uses a SwimFishPaintStrategy and an 
 EllipsePaintStrategy to paint a swimming fish shape that 
 has an eye. | 
| RectanglePaintStrategy | Concrete paint strategy that paints a rectangular shape
 scaled to the size of the ball. | 
| ShapePaintStrategy | Concrete class that defines invariant painting behaviors for all
 Shape subclasses. | 
| SquarePaintStrategy | Paint strategy that paints a filled square with the Ball's radius. | 
| SwimFishPaintStrategy | Subclass of AnimatePaintStrategy that alternates between
 a Fish1PaintStrategy and a Fish2PaintStrategy. |