Another short and very contrived example of object oriented programming principles. The three stages of a report card (Unsigned, Signed and Submitted) provide different ToString() implementations.