We want to keep track of families. Each family can have any number of pets. The pets can be dogs, cats, or gerbils. Each pet has a name, age and gender. Dogs have a breed, cats have a temperament, and gerbils have a color. In addition to pets, a family can have human family members. Each family member has a name, age, and gender. A family member can be a parent or a child. A parent has an occupation and a child has a favorite toy.

We want to be able to write the code so that each object is "printable" meaning that there is a print method that outputs the relevant information for that object. We also want to be able to take advantage of polymorphism and write as much "unchanging" code as possible. The user interface code should allow the users to enter as many pets and family members as they desire.