Code sharing can occur on several levels with object-oriented techniques. On one level , many users or projects can use the same classes. (Brad Cox [1986] calls these software –Ics, in analogy to the integrated circuits used in hardware design.) Another form of sharing occurs when two or more classes developed by a single programmer as part of a project inherit from a single parent class. For example , a set and an Array may both be considered a form of Collection . When this happens , two or more types of objects will share the code that they inherit . This code needs to be written only once and will contribute only once to the size of the resulting program.