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.
Advantages
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.
Problems
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.
All systems can be modeled using a set of procedures. These procedures collaborate with data or other procedures. For large systems, the organization becomes difficult to manage manually, but a suitable machine analysis of the collaborations can be done to organize the methods and data effectively in a hierarchical relocatable oo design.