The amount of code devoted to UI was intentionally minimized in this TechNote. Because this example deals only with objects, instead of objects and relational tables, we can use more object-oriented techniques to build it. In particular, our Person objects are very flexible, and can be extended in many ways as our needs change. The functional goal is to find all Persons that match the attributes of a partially-specified Person. Reread the previous two sentences very carefully.
Shallow copying is cheap, fast, and easy.
Nevertheless, it is sometimes necessary, as it is in our database example here. The dangerous part has to do with attributes copying attributes copying attributes copying attributes, etc. We won't have that problem here. There are at least two ways to build these methods. The Left Way and The Right Way.