A software development technique in which the system is seen as a collection of objects that communicate with other objects by passing messages. Design is targeted toward defining the kinds of objects, the methods (i.e. procedures of objects), and the messages passed. OOD is based on the principle of information hiding. See also message passing.