Organize the code for efficiency.
Provide documentation with embedded comments for reader understanding.
The specific course learning outcomes associated with this assignment are:
Discuss the concepts of inheritance and polymorphism.
Compare and contrast abstract and concrete data types.
Apply the Java concepts of file input / output.
Use technology and information resources to research issues in Java programing.