What approach do you use to represent problems and model concepts into code? You may think your using a procedural or object-oriented approach. However, consider that you are likely using a structured-objects approach.
Structured-objects is an approach that features the use of objects in code, but which then has them interact in a procedural style. Domain concepts and complexity are addressed through functional decomposition, or by representing concepts using an information (data) modeling approach.
This is in contrast to an object-oriented approach to representing a problem or system in code. In an object-oriented approach, objects interact with each other, by one telling another object to do something itself.
In a structured-objects approach, objects interact with each other by a caller asking another object for information, so that the caller can make decisions and act. These callers are often managers, controllers or supervisors of other objects. In this approach, an object is commonly used just as a container to store data, as a modular namespace for a group of related functions, or a combination of both.
The representation of a problem or system by breaking it down into every smaller pieces through functional decomposition, is how many people discover and approach a problem. Having a piece manage ever smaller pieces in a controlling procedural style, lends itself to such an organizational approach. This is particularly the case for a single programmer working on a small problem.
An object in a structured-objects approach does not typically encapsulate its own behavior. Instead, it spreads its behavior to those objects that ask it for information. Logic and constraints become widely spread across multiple objects, which then become interdependent.
The advantages stated previously are diminished as problem size and number of programmers increase. A “discover what the problem is, while working out how to implement it in code” approach that so often is associated with a small-scale structured-objects approach, does not lend itself to larger scale development.